1 line
2.8 MiB
1 line
2.8 MiB
{"version":3,"file":"bundle.js","sources":["../../builder/node_modules/svelte/internal/index.mjs","../../builder/src/common/Button.svelte","../../builder/node_modules/lodash/lodash.min.js","../../builder/node_modules/lodash/fp/_mapping.js","../../builder/node_modules/lodash/fp/placeholder.js","../../builder/node_modules/lodash/fp/_baseConvert.js","../../builder/node_modules/lodash/fp.js","../../builder/node_modules/shortid/lib/random/random-from-seed.js","../../builder/node_modules/shortid/lib/alphabet.js","../../builder/node_modules/shortid/lib/random/random-byte-browser.js","../../builder/node_modules/nanoid/format.js","../../builder/node_modules/shortid/lib/generate.js","../../builder/node_modules/shortid/lib/build.js","../../builder/node_modules/shortid/lib/is-valid.js","../../builder/node_modules/shortid/lib/index.js","../../builder/node_modules/shortid/index.js","../../builder/node_modules/lodash/lodash.js","../../core/src/common/events.js","../../core/src/common/errors.js","../../core/src/common/apiWrapper.js","../../core/src/common/lock.js","../../core/src/common/index.js","../../core/src/common/validationCommon.js","../../builder/node_modules/rollup-plugin-node-globals/src/global.js","../../builder/node_modules/@nx-js/compiler-util/dist/es.es5.js","../../core/src/indexing/evaluate.js","../../core/src/templateApi/indexes.js","../../core/src/templateApi/hierarchy.js","../../core/src/types/typeHelpers.js","../../core/src/types/string.js","../../core/src/types/bool.js","../../core/src/types/number.js","../../core/src/types/datetime.js","../../core/src/types/array.js","../../core/src/types/reference.js","../../core/src/types/file.js","../../core/src/types/index.js","../../core/src/authApi/authCommon.js","../../core/src/authApi/isAuthorized.js","../../core/src/authApi/permissions.js","../../builder/node_modules/lunr/lunr.js","../../builder/node_modules/buffer-es6/base64.js","../../builder/node_modules/buffer-es6/ieee754.js","../../builder/node_modules/buffer-es6/isArray.js","../../builder/node_modules/buffer-es6/index.js","../../builder/node_modules/safe-buffer/index.js","../../core/src/transactions/transactionsCommon.js","../../core/src/templateApi/createNodes.js","../../core/src/templateApi/fields.js","../../core/src/templateApi/recordValidationRules.js","../../core/src/templateApi/createActions.js","../../core/src/templateApi/validateAggregate.js","../../core/src/templateApi/validate.js","../../core/src/templateApi/getApplicationDefinition.js","../../core/src/templateApi/saveApplicationHierarchy.js","../../core/src/templateApi/saveActionsAndTriggers.js","../../core/src/templateApi/index.js","../../core/src/templateApi/getBehaviourSources.js","../../core/src/authApi/getUsers.js","../../core/src/authApi/loadAccessLevels.js","../../core/src/authApi/authenticate.js","../../core/src/authApi/createTemporaryAccess.js","../../core/src/authApi/validateUser.js","../../core/src/authApi/getNewUser.js","../../core/src/authApi/setPassword.js","../../core/src/authApi/createUser.js","../../core/src/authApi/enableUser.js","../../core/src/authApi/validateAccessLevels.js","../../core/src/authApi/saveAccessLevels.js","../../core/src/authApi/setUserAccessLevels.js","../../core/src/authApi/index.js","../../core/src/authApi/getNewAccessLevel.js","../../core/src/authApi/generateFullPermissions.js","../../builder/src/common/core.js","../../builder/node_modules/svelte/store/index.mjs","../../builder/src/userInterface/pagesParsing/defaultPagesObject.js","../../client/src/state/setState.js","../../client/src/api/loadRecord.js","../../client/src/api/listRecords.js","../../client/src/api/authenticate.js","../../client/src/state/coreHandlers.js","../../client/src/state/standardState.js","../../client/src/state/eventHandlers.js","../../client/src/api/index.js","../../client/src/state/getState.js","../../builder/src/common/eventHandlers.js","../../builder/src/userInterface/pagesParsing/types.js","../../client/src/state/isState.js","../../builder/src/userInterface/pagesParsing/searchComponents.js","../../builder/src/userInterface/pagesParsing/createProps.js","../../builder/src/userInterface/pagesParsing/buildPropsHierarchy.js","../../builder/src/builderStore/api.js","../../builder/src/builderStore/loadComponentLibraries.js","../../builder/src/builderStore/store.js","../../builder/src/builderStore/index.js","../../builder/src/NoPackage.svelte","../../builder/node_modules/feather-icons/dist/feather.js","../../builder/src/common/icon.js","../../builder/src/common/IconButton.svelte","../../builder/src/userInterface/ComponentsHierarchy.svelte","../../builder/src/userInterface/PagesList.svelte","../../builder/src/common/Checkbox.svelte","../../builder/src/common/Textbox.svelte","../../builder/src/common/Dropdown.svelte","../../builder/node_modules/process-es6/browser.js","../../builder/node_modules/rollup-plugin-node-builtins/src/es6/util.js","../../builder/src/common/binding.js","../../builder/src/userInterface/pagesParsing/validateProps.js","../../builder/src/userInterface/ComponentSearch.svelte","../../builder/src/common/ButtonGroup.svelte","../../builder/node_modules/uikit/dist/js/uikit.js","../../builder/src/userInterface/ComponentPropSelector.svelte","../../builder/src/userInterface/PropArraySelector.svelte","../../builder/src/userInterface/StateBindingControl.svelte","../../builder/src/userInterface/EventSelector.svelte","../../builder/src/userInterface/EventListSelector.svelte","../../builder/src/userInterface/PropControl.svelte","../../builder/src/userInterface/PropsView.svelte","../../builder/node_modules/svelte/easing/index.mjs","../../builder/node_modules/svelte/transition/index.mjs","../../builder/src/userInterface/ComponentInstanceEditor.svelte","../../builder/src/userInterface/EditComponent.svelte","../../builder/src/common/Modal.svelte","../../builder/src/userInterface/NewComponent.svelte","../../builder/src/userInterface/pagesParsing/splitRootComponentName.js","../../builder/src/userInterface/CurrentItemPreview.svelte","../../builder/src/userInterface/pagesParsing/findDependencies.js","../../builder/src/userInterface/SettingsView.svelte","../../builder/src/userInterface/PageView.svelte","../../builder/src/userInterface/UserInterfaceRoot.svelte","../../builder/src/nav/HierarchyRow.svelte","../../builder/src/common/DropdownButton.svelte","../../builder/src/nav/NavItem.svelte","../../builder/src/nav/BackendNav.svelte","../../builder/src/common/NumberBox.svelte","../../builder/src/common/ValuesList.svelte","../../builder/src/common/ErrorsBox.svelte","../../builder/node_modules/flatpickr/dist/flatpickr.js","../../builder/src/common/DatePicker.svelte","../../builder/src/database/FieldView.svelte","../../builder/src/database/RecordView.svelte","../../builder/src/common/CodeArea.svelte","../../builder/src/database/IndexView.svelte","../../builder/src/database/ActionsHeader.svelte","../../builder/src/database/DatabaseRoot.svelte","../../builder/src/actionsAndTriggers/ActionView.svelte","../../builder/src/actionsAndTriggers/Actions.svelte","../../builder/src/actionsAndTriggers/TriggerView.svelte","../../builder/src/actionsAndTriggers/Triggers.svelte","../../builder/src/actionsAndTriggers/ActionsAndTriggersRoot.svelte","../../builder/src/accessLevels/AccessLevelView.svelte","../../builder/src/accessLevels/AccessLevelsRoot.svelte","../../builder/src/BackendRoot.svelte","../../builder/src/PackageRoot.svelte","../../builder/src/Settings.svelte","../../builder/src/App.svelte","../../builder/node_modules/uikit/dist/js/uikit.min.js","../../builder/src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, callback) {\n const unsub = store.subscribe(callback);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n if (value != null || input.value) {\n input.value = value;\n }\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n object.tabIndex = -1;\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nclass HtmlTag {\n constructor(html, anchor = null) {\n this.e = element('div');\n this.a = anchor;\n this.u(html);\n }\n m(target, anchor = null) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(target, this.n[i], anchor);\n }\n this.t = target;\n }\n u(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n p(html) {\n this.d();\n this.u(html);\n this.m(this.t, this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_update);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nconst globals = (typeof window !== 'undefined' ? window : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : ``;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment.m(target, anchor);\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n component.$$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, ret, value = ret) => {\n if ($$.ctx && not_equal($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n return ret;\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_update);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, detail));\n}\nfunction append_dev(target, node) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev(\"SvelteDOMRemove\", { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? [\"capture\"] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev(\"SvelteDOMAddEventListener\", { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev(\"SvelteDOMRemoveEventListener\", { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev(\"SvelteDOMRemoveAttribute\", { node, attribute });\n else\n dispatch_dev(\"SvelteDOMSetAttribute\", { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev(\"SvelteDOMSetProperty\", { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev(\"SvelteDOMSetDataset\", { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.data === data)\n return;\n dispatch_dev(\"SvelteDOMSetData\", { node: text, data });\n text.data = data;\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteElement, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_element, claim_space, claim_text, clear_loops, component_subscribe, createEventDispatcher, create_animation, create_bidirectional_transition, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_function, is_promise, listen, listen_dev, loop, measure, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, validate_component, validate_store, xlink_attr };\n","<script>\n\nexport let color = \"primary\";\nexport let className = \"\";\nexport let style = \"\";\nexport let groupPosition = \"\";\nexport let grouped = false;\n\n$: borderClass = grouped \n ? \"\"\n : \"border-normal\";\n\n</script>\n\n<button class=\"{color} {className} {borderClass} {grouped ? \"grouped\" : \"\"}\" \n style=\"{style}\"\n on:click >\n <slot/>\n</button>\n\n<style>\n\n.border-normal { border-radius: var(--borderradiusall); }\n.border-left { border-radius: var(--borderradius) 0 0 var(--borderradius); }\n.border-right { border-radius: 0 var(--borderradius) var(--borderradius) 0; }\n.border-middle { border-radius: 0; }\n\nbutton { \n border-style: solid; \n padding: 7.5px 15px;\n cursor:pointer;\n margin:5px;\n border-radius: 5px;\n}\n\n/* ---- PRIMARY ----*/\n.primary {\n background-color: var(--primary100);\n border-color: var(--primary100);\n color: var(--white);\n}\n\n.primary:hover {\n background-color: var(--primary75);\n border-color: var(--primary75);\n}\n\n.primary:active {\n background-color: var(--primarydark);\n border-color: var(--primarydark);\n}\n\n.primary-outline {\n background-color: var(--white);\n border-color: var(--primary100);\n color: var(--primary100);\n}\n\n.primary-outline:hover {\n background-color: var(--primary10);\n}\n\n.primary-outline:pressed {\n background-color: var(--primary25);\n}\n\n/* ---- secondary ----*/\n\n.secondary {\n background-color: var(--secondary100);\n border-color: var(--secondary100);\n color: var(--white);\n}\n\n.secondary:hover {\n background-color: var(--secondary75);\n border-color: var(--secondary75);\n}\n\n.secondary:pressed {\n background-color: var(--secondarydark);\n border-color: var(--secondarydark);\n}\n\n.secondary-outline {\n background-color: var(--white);\n border-color: var(--secondary100);\n color: var(--secondary100);\n}\n\n.secondary-outline:hover {\n background-color: var(--secondary10);\n}\n\n.secondary-outline:pressed {\n background-color: var(--secondary25);\n}\n\n\n/* ---- success ----*/\n.success {\n background-color: var(--success100);\n border-color: var(--success100);\n color: var(--white);\n}\n\n.success:hover {\n background-color: var(--success75);\n border-color: var(--success75);\n}\n\n.success:pressed {\n background-color: var(--successdark);\n border-color: var(--successdark);\n}\n\n.success-outline {\n background-color: var(--white);\n border-color: var(--success100);\n color: var(--success100);\n}\n\n.success-outline:hover {\n background-color: var(--success10);\n}\n\n.success-outline:pressed {\n background-color: var(--success25);\n}\n\n/* ---- deletion ----*/\n.deletion {\n background-color: var(--deletion100);\n border-color: var(--deletion100);\n color: var(--white);\n}\n\n.deletion:hover {\n background-color: var(--deletion75);\n border-color: var(--deletion75);\n}\n\n.deletion:pressed {\n background-color: var(--deletiondark);\n border-color: var(--deletiondark);\n}\n\n.deletion-outline {\n background-color: var(--white);\n border-color: var(--deletion100);\n color: var(--deletion100);\n}\n\n.deletion-outline:hover {\n background-color: var(--deletion10);\n}\n\n.deletion-outline:pressed {\n background-color: var(--deletion25);\n}\n\n\n</style>","/**\n * @license\n * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\n */\n;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;\nreturn true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);\nreturn r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){\n--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;\n}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return\"\\\\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];\n}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&\"__lodash_placeholder__\"!==o||(n[r]=\"__lodash_placeholder__\",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split(\"\");\n}var T,$=1/0,F=NaN,N=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]],P=/\\b__p\\+='';/g,Z=/\\b(__p\\+=)''\\+/g,q=/(__e\\(.*?\\)|\\b__t\\))\\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>\"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\\s\\S]+?)%>/g,Y=/<%([\\s\\S]+?)%>/g,Q=/<%=([\\s\\S]+?)%>/g,X=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,nn=/^\\w*$/,tn=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,rn=/[\\\\^$.*+?()[\\]{}|]/g,en=RegExp(rn.source),un=/^\\s+|\\s+$/g,on=/^\\s+/,fn=/\\s+$/,cn=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,an=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,ln=/,? & /,sn=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,hn=/\\\\(\\\\)?/g,pn=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,_n=/\\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\\[object .+?Constructor\\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\\d*)$/,xn=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,jn=/($^)/,wn=/['\\n\\r\\u2028\\u2029\\\\]/g,mn=\"[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?(?:\\\\u200d(?:[^\\\\ud800-\\\\udfff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?)*\",An=\"(?:[\\\\u2700-\\\\u27bf]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])\"+mn,En=\"(?:[^\\\\ud800-\\\\udfff][\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]?|[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[\\\\ud800-\\\\udfff])\",kn=RegExp(\"['\\u2019]\",\"g\"),Sn=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\"),On=RegExp(\"\\\\ud83c[\\\\udffb-\\\\udfff](?=\\\\ud83c[\\\\udffb-\\\\udfff])|\"+En+mn,\"g\"),In=RegExp([\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|$)|(?:[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde](?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])|$)|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?(?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?|\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])|\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])|\\\\d+\",An].join(\"|\"),\"g\"),Rn=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn=\"Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout\".split(\" \"),Bn={};\nBn[\"[object Float32Array]\"]=Bn[\"[object Float64Array]\"]=Bn[\"[object Int8Array]\"]=Bn[\"[object Int16Array]\"]=Bn[\"[object Int32Array]\"]=Bn[\"[object Uint8Array]\"]=Bn[\"[object Uint8ClampedArray]\"]=Bn[\"[object Uint16Array]\"]=Bn[\"[object Uint32Array]\"]=true,Bn[\"[object Arguments]\"]=Bn[\"[object Array]\"]=Bn[\"[object ArrayBuffer]\"]=Bn[\"[object Boolean]\"]=Bn[\"[object DataView]\"]=Bn[\"[object Date]\"]=Bn[\"[object Error]\"]=Bn[\"[object Function]\"]=Bn[\"[object Map]\"]=Bn[\"[object Number]\"]=Bn[\"[object Object]\"]=Bn[\"[object RegExp]\"]=Bn[\"[object Set]\"]=Bn[\"[object String]\"]=Bn[\"[object WeakMap]\"]=false;\nvar Ln={};Ln[\"[object Arguments]\"]=Ln[\"[object Array]\"]=Ln[\"[object ArrayBuffer]\"]=Ln[\"[object DataView]\"]=Ln[\"[object Boolean]\"]=Ln[\"[object Date]\"]=Ln[\"[object Float32Array]\"]=Ln[\"[object Float64Array]\"]=Ln[\"[object Int8Array]\"]=Ln[\"[object Int16Array]\"]=Ln[\"[object Int32Array]\"]=Ln[\"[object Map]\"]=Ln[\"[object Number]\"]=Ln[\"[object Object]\"]=Ln[\"[object RegExp]\"]=Ln[\"[object Set]\"]=Ln[\"[object String]\"]=Ln[\"[object Symbol]\"]=Ln[\"[object Uint8Array]\"]=Ln[\"[object Uint8ClampedArray]\"]=Ln[\"[object Uint16Array]\"]=Ln[\"[object Uint32Array]\"]=true,\nLn[\"[object Error]\"]=Ln[\"[object Function]\"]=Ln[\"[object WeakMap]\"]=false;var Un={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Cn=parseFloat,Dn=parseInt,Mn=typeof global==\"object\"&&global&&global.Object===Object&&global,Tn=typeof self==\"object\"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function(\"return this\")(),Fn=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module==\"object\"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){\ntry{var n=Nn&&Nn.f&&Nn.f(\"util\").types;return n?n:Zn&&Zn.binding&&Zn.binding(\"util\")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b(\"length\"),Xn=x({\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\n\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\"\\u0106\":\"C\",\n\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\"\\u0129\":\"i\",\n\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\"\\u0159\":\"r\",\n\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\"\\u0133\":\"ij\",\n\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"}),nt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"}),tt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(oi.call(n,\"__wrapped__\"))return Fe(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n,\nthis.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);\n}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=ff(n),u=!e&&of(n),i=!e&&!u&&af(n),o=!e&&!u&&!i&&_f(n),u=(e=e||u||i||o)?A(n.length,ni):[],f=u.length;for(r in n)!t&&!oi.call(n,r)||e&&(\"length\"==r||i&&(\"offset\"==r||\"parent\"==r)||o&&(\"buffer\"==r||\"byteLength\"==r||\"byteOffset\"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return De(Ur(n),pt(t,0,n.length))}function ut(n){return De(Ur(n))}function it(n,t,r){(r===T||lu(n[t],r))&&(r!==T||t in n)||st(n,t,r);\n}function ot(n,t,r){var e=n[t];oi.call(n,t)&&lu(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(lu(n[r][0],t))return r;return-1}function ct(n,t,r,e){return uo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,Wu(t),n)}function lt(n,t){return n&&Cr(t,Bu(t),n)}function st(n,t,r){\"__proto__\"==t&&Ai?Ai(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Ku(e),i=null==n;++r<e;)u[r]=i?T:Ru(n,t[r]);return u;\n}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=vo(n),h=\"[object Function]\"==s||\"[object GeneratorFunction]\"==s;if(af(n))return Ir(n,c);if(\"[object Object]\"==s||\"[object Arguments]\"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn),\ni=o.get(n))return i;o.set(n,f),pf(n)?n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}):sf(n)&&n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))});var a=l?a?ve:_e:a?Bu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!=\"function\")throw new ti(\"Expected a function\");\nreturn bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return uo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!wu(o):r(o,f)))var f=o,c=i;\n}return c}function jt(n,t){var r=[];return uo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&oo(n,t,Wu)}function At(n,t){return n&&fo(n,t,Wu)}function Et(n,t){return i(t,function(t){return _u(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Me(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),\nff(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?\"[object Undefined]\":\"[object Null]\";else if(mi&&mi in Qu(n)){var t=oi.call(n,mi),r=n[mi];try{n[mi]=T;var e=true}catch(n){}var u=ai.call(n);e&&(t?n[mi]=r:delete n[mi]),n=u}else n=ai.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ci(p.length,s),\nl[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Ut(n){return yu(n)&&\"[object Arguments]\"==Ot(n)}function Ct(n){\nreturn yu(n)&&\"[object ArrayBuffer]\"==Ot(n)}function Dt(n){return yu(n)&&\"[object Date]\"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!yu(n)&&!yu(t))t=n!==n&&t!==t;else n:{var i=ff(n),o=ff(t),f=i?\"[object Array]\":vo(n),c=o?\"[object Array]\":vo(t),f=\"[object Arguments]\"==f?\"[object Object]\":f,c=\"[object Arguments]\"==c?\"[object Object]\":c,a=\"[object Object]\"==f,o=\"[object Object]\"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{\nif(!(1&r)&&(i=a&&oi.call(n,\"__wrapped__\"),f=o&&oi.call(t,\"__wrapped__\"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s=\"constructor\"==l);\n}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&\"constructor\"in n&&\"constructor\"in t&&!(typeof r==\"function\"&&r instanceof r&&typeof e==\"function\"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return yu(n)&&\"[object Map]\"==vo(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Qu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;\n}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!du(n)||ci&&ci in n)&&(_u(n)?hi:dn).test(Te(n))}function Nt(n){return yu(n)&&\"[object RegExp]\"==Ot(n)}function Pt(n){return yu(n)&&\"[object Set]\"==vo(n)}function Zt(n){return yu(n)&&gu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n==\"function\"?n:null==n?$u:typeof n==\"object\"?ff(n)?Jt(n[0],n[1]):Ht(n):Zu(n)}function Vt(n){if(!ze(n))return Li(n);var t,r=[];for(t in Qu(n))oi.call(n,t)&&\"constructor\"!=t&&r.push(t);\nreturn r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=su(n)?Ku(n.length):[];return uo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!du(t)?We(Me(n),t):function(r){var e=Ru(r,n);return e===T&&e===t?zu(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&oo(t,function(i,o){if(u||(u=new Zn),du(i)){var f=u,c=Le(n,o),a=Le(t,o),l=f.get(a);if(l)it(n,o,l);else{\nvar l=e?e(c,a,o+\"\",n,t,f):T,s=l===T;if(s){var h=ff(a),p=!h&&af(a),_=!h&&!p&&_f(a),l=a;h||p||_?ff(c)?l=c:hu(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:xu(a)||of(a)?(l=c,of(c)?l=Ou(c):du(c)&&!_u(c)||(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e(Le(n,o),i,o+\"\",n,t,u):T,f===T&&(f=i),it(n,o,f)},Bu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],k(ye())),n=Gt(n,function(n){return{\na:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*(\"desc\"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;for(n===t&&(t=Ur(t)),\nr&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&xi.call(f,a,1),xi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?xi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Ii(Ti()*(t-n+1))}function or(n,t){var r=\"\";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Ii(t/2))&&(n+=n);while(t);return r}function fr(n,t){return xo(Be(n,t,$u),n+\"\")}function cr(n){return Qn(Uu(n))}function ar(n,t){var r=Uu(n);\nreturn De(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!du(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=Me(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=du(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return De(Uu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ku(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return uo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}\nfunction _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t==\"number\"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,$u,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=wu(t),a=t===T;u<i;){var l=Ii((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=wu(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ci(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){\nvar o=n[r],f=t?t(o):o;if(!r||!lu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n==\"number\"?n:wu(n)?F:+n}function yr(n){if(typeof n==\"string\")return n;if(ff(n))return c(n,yr)+\"\";if(wu(n))return ro?ro.call(n):\"\";var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:so(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;\nt&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));\nreturn br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return hu(n)?n:[]}function kr(n){return typeof n==\"function\"?n:$u}function Sr(n,t){return ff(n)?n:Ie(n,t)?[n]:jo(Iu(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)),\nt}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Ui(i-o,0),l=Ku(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];\nreturn l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Ui(i-f,0),s=Ku(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Ku(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,po(n),t)}function Mr(n,t){return Cr(n,_o(n),t);\n}function Tr(n,r){return function(e,u){var i=ff(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i==\"function\"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Qu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!su(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Qu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){\nvar u=-1,i=Qu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Iu(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(\"\"):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Mu(Du(t).replace(kn,\"\")),n,\"\")}}function Vr(n){return function(){var t=arguments;switch(t.length){\ncase 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eo(n.prototype),t=n.apply(r,t);return du(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Ku(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a),\no-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Qu(t);if(!su(t)){var i=ye(r,3);t=Wu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!=\"function\")throw new ti(\"Expected a function\");if(u&&!o&&\"wrapper\"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f=\"wrapper\"==u?ho(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);\nreturn function(){var n=arguments,e=n[0];if(o&&1==n.length&&ff(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Ku(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ci(f.length,x),m=Ur(y);w--;){\nvar A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r==\"string\"||typeof e==\"string\"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){\nreturn r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?\" \":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(\"\"):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){\ne&&typeof e!=\"number\"&&Oe(t,r,e)&&(r=e=T),t=Au(t),r===T?(r=t,t=0):r=Au(r),e=e===T?t<r?1:-1:Au(e);var u=-1;r=Ui(Oi((r-t)/(e||1)),0);for(var i=Ku(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t==\"string\"&&typeof r==\"string\"||(t=Su(t),r=Su(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&yo(r,u),r.placeholder=e,Ue(r,n,t)}function ie(n){\nvar t=Yu[n];return function(n,r){if(n=Su(n),(r=null==r?0:Ci(Eu(r),292))&&Wi(n)){var e=(Iu(n)+\"e\").split(\"e\"),e=t(e[0]+\"e\"+(+e[1]+r)),e=(Iu(e)+\"e\").split(\"e\");return+(e[0]+\"e\"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=vo(t);return\"[object Map]\"==r?W(t):\"[object Set]\"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!=\"function\")throw new ti(\"Expected a function\");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Ui(Eu(o),0),f=f===T?f:Eu(f),a-=u?u.length:0,\n64&t){var l=e,s=u;e=u=T}var h=c?T:ho(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],\"__lodash_placeholder__\"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],\"__lodash_placeholder__\"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],\nt=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Ui(i[9]-a,0),!f&&24&t&&(t&=-25),Ue((h?co:yo)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;\nvar c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case\"[object DataView]\":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case\"[object ArrayBuffer]\":\nif(n.byteLength!=t.byteLength||!i(new vi(n),new vi(t)))break;return true;case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return lu(+n,+t);case\"[object Error]\":return n.name==t.name&&n.message==t.message;case\"[object RegExp]\":case\"[object String]\":return n==t+\"\";case\"[object Map]\":var f=W;case\"[object Set]\":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case\"[object Symbol]\":if(to)return to.call(n)==to.call(t)}\nreturn false}function pe(n){return xo(Be(n,T,Ze),n+\"\")}function _e(n){return St(n,Wu,po)}function ve(n){return St(n,Bu,_o)}function ge(n){for(var t=n.name+\"\",r=Gi[t],e=oi.call(Gi,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(oi.call(An,\"placeholder\")?An:n).placeholder}function ye(){var n=An.iteratee||Fu,n=n===Fu?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return(\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t)?r[typeof t==\"string\"?\"string\":\"hash\"]:r.map;\n}function xe(n){for(var t=Wu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!du(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=Me(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&gu(u)&&Se(o,u)&&(ff(n)||of(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&\"string\"==typeof n[0]&&oi.call(n,\"index\")&&(r.index=n.index,r.input=n.input),r}function Ae(n){\nreturn typeof n.constructor!=\"function\"||ze(n)?{}:eo(di(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case\"[object ArrayBuffer]\":return Rr(n);case\"[object Boolean]\":case\"[object Date]\":return new e(+n);case\"[object DataView]\":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":\ncase\"[object Uint16Array]\":case\"[object Uint32Array]\":return zr(n,r);case\"[object Map]\":return new e;case\"[object Number]\":case\"[object String]\":return new e(n);case\"[object RegExp]\":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case\"[object Set]\":return new e;case\"[object Symbol]\":return to?Qu(to.call(n)):{}}}function ke(n){return ff(n)||of(n)||!!(ji&&n&&n[ji])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&(\"number\"==r||\"symbol\"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;\n}function Oe(n,t,r){if(!du(r))return false;var e=typeof t;return!!(\"number\"==e?su(r)&&Se(t,r.length):\"string\"==e&&t in r)&&lu(r[t],n)}function Ie(n,t){if(ff(n))return false;var r=typeof n;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=n&&!wu(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Qu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r==\"function\"&&t in Un.prototype&&(n===r||(t=ho(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t==\"function\"&&t.prototype||ei)}function We(n,t){\nreturn function(r){return null!=r&&(r[n]===t&&(t!==T||n in Qu(r)))}}function Be(t,r,e){return r=Ui(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Ui(u.length-r,0),f=Ku(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Ku(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t){if((\"constructor\"!==t||\"function\"!=typeof n[t])&&\"__proto__\"!=t)return n[t]}function Ue(n,t,r){var e=t+\"\";t=xo;var u,i=$e;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?\"& \":\"\")+r[u],\nr=r.join(2<i?\", \":\" \"),e=e.replace(cn,\"{\\n/* [wrapped with \"+r+\"] */\\n\")),t(n,e)}function Ce(n){var t=0,r=0;return function(){var e=Di(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function De(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function Me(n){if(typeof n==\"string\"||wu(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function Te(n){if(null!=n){try{return ii.call(n)}catch(n){}\nreturn n+\"\"}return\"\"}function $e(n,t){return r(N,function(r){var e=\"_.\"+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function Fe(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ne(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Eu(r),u=0>r?Ui(e+u,0):Ci(u,e-1)),\n_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[]}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Ui(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){\nreturn n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!=\"function\")throw new ti(\"Expected a function\");return n=Eu(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),\nr}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments,\na=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return lo(h),h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g=\"maxWait\"in r)?Ui(Su(r.maxWait)||0,t):l,d=\"trailing\"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;\nreturn i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new ti(\"Expected a function\");return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t;\n}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;var t=Ot(n);return\"[object Error]\"==t||\"[object DOMException]\"==t||typeof n.message==\"string\"&&typeof n.name==\"string\"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),\"[object Function]\"==n||\"[object GeneratorFunction]\"==n||\"[object AsyncFunction]\"==n||\"[object Proxy]\"==n)}function vu(n){return typeof n==\"number\"&&n==Eu(n)}function gu(n){return typeof n==\"number\"&&-1<n&&0==n%1&&9007199254740991>=n;\n}function du(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function yu(n){return null!=n&&typeof n==\"object\"}function bu(n){return typeof n==\"number\"||yu(n)&&\"[object Number]\"==Ot(n)}function xu(n){return!(!yu(n)||\"[object Object]\"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,\"constructor\")&&n.constructor,typeof n==\"function\"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n==\"string\"||!ff(n)&&yu(n)&&\"[object String]\"==Ot(n)}function wu(n){return typeof n==\"symbol\"||yu(n)&&\"[object Symbol]\"==Ot(n);\n}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Ur(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=vo(n),(\"[object Map]\"==t?W:\"[object Set]\"==t?U:Uu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Eu(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function ku(n){return n?pt(Eu(n),0,4294967295):0}function Su(n){if(typeof n==\"number\")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf==\"function\"?n.valueOf():n,\nn=du(n)?n+\"\":n),typeof n!=\"string\")return 0===n?n:+n;n=n.replace(un,\"\");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Ou(n){return Cr(n,Bu(n))}function Iu(n){return null==n?\"\":yr(n)}function Ru(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Bu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)(\"constructor\"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[],\nnull!=n)for(r in Qu(n))t.push(r);n=t}return n}function Lu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Uu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,\"\")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n;\n}function Fu(n){return qt(typeof n==\"function\"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=Et(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,Wu(t)));var o=!(du(e)&&\"chain\"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){}\nfunction Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn[\"__core-js_shared__\"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){var n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu(\"^\"+ii.call(oi).replace(rn,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.g:T,di=B(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){\ntry{var n=je(Qu,\"defineProperty\");return n({},\"\",{}),n}catch(n){}}(),Ei=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,ki=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Bi=ri.join,Li=B(Qu.keys,Qu),Ui=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,\"DataView\"),Ni=je(mn,\"Map\"),Pi=je(mn,\"Promise\"),Zi=je(mn,\"Set\"),qi=je(mn,\"WeakMap\"),Vi=je(Qu,\"create\"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){\nfunction n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:\"\",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=eo(En.prototype),On.prototype.constructor=On,Un.prototype=eo(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],\nthis.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],\"__lodash_hash_undefined__\"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?\"__lodash_hash_undefined__\":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1),\n--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);\n},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){\nreturn this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,\"toString\",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=Ei||function(n){\nreturn $n.clearTimeout(n)},so=Zi&&1/U(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&\"[object DataView]\"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&\"[object Map]\"!=vo(new Ni)||Pi&&\"[object Promise]\"!=vo(Pi.resolve())||Zi&&\"[object Set]\"!=vo(new Zi)||qi&&\"[object WeakMap]\"!=vo(new qi))&&(vo=function(n){\nvar t=Ot(n);if(n=(n=\"[object Object]\"==t?n.constructor:T)?Te(n):\"\")switch(n){case Hi:return\"[object DataView]\";case Ji:return\"[object Map]\";case Yi:return\"[object Promise]\";case Qi:return\"[object Set]\";case Xi:return\"[object WeakMap]\"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(\"\"),n.replace(tn,function(n,r,e,u){\nt.push(e?u.replace(hn,\"$1\"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),Eo=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),ko=fr(function(n){var t=Ve(n),r=c(n,Er);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,Er);return(t=typeof t==\"function\"?t:T)&&r.pop(),\nr.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return br(wt(n,1,hu,true),T,t)}),Bo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Lo=fr(function(n){return mr(i(n,hu))}),Uo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),\nmr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t==\"function\"?(n.pop(),t):T;return Je(n,t)}),To=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T),\nn})):this.thru(t)}),$o=Tr(function(n,t,r){oi.call(n,r)?++n[r]:st(n,r,1)}),Fo=Gr(Ne),No=Gr(Pe),Po=Tr(function(n,t,r){oi.call(n,r)?n[r].push(t):st(n,r,[t])}),Zo=fr(function(t,r,e){var u=-1,i=typeof r==\"function\",o=su(t)?Ku(t.length):[];return uo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),qo=Tr(function(n,t,r){st(n,r,t)}),Vo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ko=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),\nXt(n,wt(t,1),[])}),Go=ki||function(){return $n.Date.now()},Ho=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(n,e,t,r,u)}),Jo=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Jo)),e=32|e;return fe(t,e,n,r,u)}),Yo=fr(function(n,t){return dt(n,1,t)}),Qo=fr(function(n,t,r){return dt(n,Su(t)||0,r)});cu.Cache=Fn;var Xo=fr(function(t,r){r=1==r.length&&ff(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ci(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);\nreturn n(t,this,u)})}),nf=fr(function(n,t){return fe(n,32,T,t,L(t,de(nf)))}),tf=fr(function(n,t){return fe(n,64,T,t,L(t,de(tf)))}),rf=pe(function(n,t){return fe(n,256,T,T,T,t)}),ef=ee(It),uf=ee(function(n,t){return n>=t}),of=Ut(function(){return arguments}())?Ut:function(n){return yu(n)&&oi.call(n,\"callee\")&&!bi.call(n,\"callee\")},ff=Ku.isArray,cf=Vn?k(Vn):Ct,af=zi||Vu,lf=Kn?k(Kn):Dt,sf=Gn?k(Gn):Tt,hf=Hn?k(Hn):Nt,pf=Jn?k(Jn):Pt,_f=Yn?k(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){\nif(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Bu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Bu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Bu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||lu(a,ei[c])&&!oi.call(n,c))&&(n[c]=u[c])}return n}),mf=fr(function(t){return t.push(T,ae),n(Of,T,t)}),Af=Yr(function(n,t,r){\nnull!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),n[t]=r},Tu($u)),Ef=Yr(function(n,t,r){null!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),oi.call(n,t)?n[t].push(r):n[t]=[r]},ye),kf=fr(Lt),Sf=$r(function(n,t,r){Yt(n,t,r)}),Of=$r(function(n,t,r,e){Yt(n,t,r,e)}),If=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),Rf=pe(function(n,t){return null==n?{}:nr(n,t);\n}),zf=oe(Wu),Wf=oe(Bu),Bf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Cu(t):t)}),Lf=qr(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Uf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toLowerCase()}),Cf=Zr(\"toLowerCase\"),Df=qr(function(n,t,r){return n+(r?\"_\":\"\")+t.toLowerCase()}),Mf=qr(function(n,t,r){return n+(r?\" \":\"\")+$f(t)}),Tf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toUpperCase()}),$f=Zr(\"toUpperCase\"),Ff=fr(function(t,r){try{return n(t,T,r)}catch(n){return pu(n)?n:new Hu(n)}}),Nf=pe(function(n,t){\nreturn r(t,function(t){t=Me(t),st(n,t,Ho(n[t],n))}),n}),Pf=Hr(),Zf=Hr(true),qf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),Vf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Kf=Xr(c),Gf=Xr(u),Hf=Xr(h),Jf=re(),Yf=re(true),Qf=Qr(function(n,t){return n+t},0),Xf=ie(\"ceil\"),nc=Qr(function(n,t){return n/t},1),tc=ie(\"floor\"),rc=Qr(function(n,t){return n*t},1),ec=ie(\"round\"),uc=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!=\"function\")throw new ti(\"Expected a function\");\nreturn n=Eu(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Ui(Eu(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){\nvar i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Ku(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(ff(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if(\"function\"!=typeof n[1])throw new ti(\"Expected a function\");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Tu,\nAn.countBy=$o,An.create=function(n,t){var r=eo(n);return null==t?r:at(r,t)},An.curry=iu,An.curryRight=ou,An.debounce=fu,An.defaults=wf,An.defaultsDeep=mf,An.defer=Yo,An.delay=Qo,An.difference=wo,An.differenceBy=mo,An.differenceWith=Ao,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];\n},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!=\"number\"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Eu(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Eu(e),0>e&&(e+=u),e=r>e?0:ku(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(ff(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(ru(n,t),1)},An.flatMapDeep=function(n,t){return wt(ru(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Eu(r),\nwt(ru(n,t),r)},An.flatten=Ze,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Eu(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Pf,An.flowRight=Zf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,Wu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Bu(n))},An.groupBy=Po,An.initial=function(n){\nreturn(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Eo,An.intersectionBy=ko,An.intersectionWith=So,An.invert=Af,An.invertBy=Ef,An.invokeMap=Zo,An.iteratee=Fu,An.keyBy=qo,An.keys=Wu,An.keysIn=Bu,An.map=ru,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=cu,\nAn.merge=Sf,An.mergeWith=Of,An.method=qf,An.methodOf=Vf,An.mixin=Nu,An.negate=au,An.nthArg=function(n){return n=Eu(n),fr(function(t){return Qt(t,n)})},An.omit=If,An.omitBy=function(n,t){return Lu(n,au(ye(t)))},An.once=function(n){return uu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(ff(t)||(t=null==t?[]:[t]),r=e?T:r,ff(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Kf,An.overArgs=Xo,An.overEvery=Gf,An.overSome=Hf,An.partial=nf,An.partialRight=tf,An.partition=Vo,An.pick=Rf,An.pickBy=Lu,An.property=Zu,\nAn.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=Oo,An.pullAll=Ke,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Io,An.range=Jf,An.rangeRight=Yf,An.rearg=rf,An.reject=function(n,t){return(ff(n)?i:jt)(n,au(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),\nu.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=t===T?t:Eu(t),fr(n,t)},An.reverse=Ge,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),(ff(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e==\"function\"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(ff(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!=\"number\"&&Oe(n,t,r)?(t=0,\nr=e):(t=null==t?0:Eu(t),r=r===T?e:Eu(r)),hr(n,t,r)):[]},An.sortBy=Ko,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!=\"number\"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Iu(n))&&(typeof t==\"string\"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!=\"function\")throw new ti(\"Expected a function\");return r=null==r?0:Ui(Eu(r),0),\nfr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Eu(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),\nn},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return du(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Ur(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{};\n}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t==\"function\"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){\nreturn e=typeof e==\"function\"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Uu,An.valuesIn=function(n){return null==n?[]:S(n,Bu(n))},An.without=Bo,An.words=Mu,An.wrap=function(n,t){return nf(kr(t),n)},An.xor=Lo,An.xorBy=Uo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Bf,An.capitalize=Cu,\nAn.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){\nn=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Eu(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,\"\\\\$&\"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At);\n},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Bu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Bu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Uu(n),r=r&&!e?Eu(r):0,e=n.length,0>r&&(r=Ui(e+r,0)),ju(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);\n},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n<Ui(t,r)},An.invoke=kf,An.isArguments=of,An.isArray=ff,An.isArrayBuffer=cf,An.isArrayLike=su,An.isArrayLikeObject=hu,An.isBoolean=function(n){return true===n||false===n||yu(n)&&\"[object Boolean]\"==Ot(n)},An.isBuffer=af,An.isDate=lf,An.isElement=function(n){return yu(n)&&1===n.nodeType&&!xu(n)},An.isEmpty=function(n){\nif(null==n)return true;if(su(n)&&(ff(n)||typeof n==\"string\"||typeof n.splice==\"function\"||af(n)||_f(n)||of(n)))return!n.length;var t=vo(n);if(\"[object Map]\"==t||\"[object Set]\"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(oi.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r==\"function\"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=pu,An.isFinite=function(n){return typeof n==\"number\"&&Wi(n)},An.isFunction=_u,\nAn.isInteger=vu,An.isLength=gu,An.isMap=sf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r==\"function\"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return bu(n)&&n!=+n},An.isNative=function(n){if(go(n))throw new Hu(\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=bu,An.isObject=du,An.isObjectLike=yu,An.isPlainObject=xu,An.isRegExp=hf,\nAn.isSafeInteger=function(n){return vu(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&\"[object WeakMap]\"==vo(n)},An.isWeakSet=function(n){return yu(n)&&\"[object WeakSet]\"==Ot(n)},An.join=function(n,t){return null==n?\"\":Bi.call(n,t)},An.kebabCase=Lf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Eu(r),u=0>u?Ui(e+u,0):Ci(u,e-1)),\nt===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Uf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){return{}},An.stubString=function(){\nreturn\"\"},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,Eu(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){\nreturn r||null==t?t=0:t&&(t=+t),Mi(Iu(n).replace(on,\"\"),t||0)},An.random=function(n,t,r){if(r&&typeof r!=\"boolean\"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t==\"boolean\"?(r=t,t=T):typeof n==\"boolean\"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=Au(n),t===T?(t=n,n=0):t=Au(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn(\"1e-\"+((r+\"\").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){var e=ff(n)?s:j,u=3>arguments.length;\nreturn e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[Me(t[e])];i===T&&(e=u,i=r),n=_u(i)?i.call(n):i}return n},An.round=ec,An.runInContext=x,An.sample=function(n){return(ff(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(su(n))return ju(n)?D(n):n.length;\nvar t=vo(n);return\"[object Map]\"==t||\"[object Set]\"==t?n.size:Vt(n).length},An.snakeCase=Df,An.some=function(n,t,r){var e=ff(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&lu(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true);\n},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(lu(n[r],t))return r}return-1},An.startCase=Mf,An.startsWith=function(n,t,r){return n=Iu(n),r=null==r?0:pt(Eu(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=uc,An.sum=function(n){return n&&n.length?m(n,$u):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Iu(n),t=bf({},t,e,ce),r=bf({},t.imports,e.imports,ce);var u,i,o=Wu(r),f=S(r,o),c=0;\nr=t.interpolate||jn;var a=\"__p+='\";r=Xu((t.escape||jn).source+\"|\"+r.source+\"|\"+(r===Q?pn:jn).source+\"|\"+(t.evaluate||jn).source+\"|$\",\"g\");var l=oi.call(t,\"sourceURL\")?\"//# sourceURL=\"+(t.sourceURL+\"\").replace(/[\\r\\n]/g,\" \")+\"\\n\":\"\";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+=\"'+__e(\"+r+\")+'\"),f&&(i=true,a+=\"';\"+f+\";\\n__p+='\"),e&&(a+=\"'+((__t=(\"+e+\"))==null?'':__t)+'\"),c=l+t.length,t}),a+=\"';\",(t=oi.call(t,\"variable\")&&t.variable)||(a=\"with(obj){\"+a+\"}\"),\na=(i?a.replace(P,\"\"):a).replace(Z,\"$1\").replace(q,\"$1;\"),a=\"function(\"+(t||\"obj\")+\"){\"+(t?\"\":\"obj||(obj={});\")+\"var __t,__p=''\"+(u?\",__e=_.escape\":\"\")+(i?\",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}\":\";\")+a+\"return __p}\",t=Ff(function(){return Ju(o,l+\"return \"+a).apply(T,f)}),t.source=a,pu(t))throw t;return t},An.times=function(n,t){if(n=Eu(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ci(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=Au,\nAn.toInteger=Eu,An.toLength=ku,An.toLower=function(n){return Iu(n).toLowerCase()},An.toNumber=Su,An.toSafeInteger=function(n){return n?pt(Eu(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Iu,An.toUpper=function(n){return Iu(n).toUpperCase()},An.trim=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(un,\"\"):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join(\"\")):n},An.trimEnd=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(fn,\"\"):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,\nOr(n,0,t).join(\"\")):n},An.trimStart=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(on,\"\"):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join(\"\")):n},An.truncate=function(n,t){var r=30,e=\"...\";if(du(t))var u=\"separator\"in t?t.separator:u,r=\"length\"in t?Eu(t.length):r,e=\"omission\"in t?yr(t.omission):e;n=Iu(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(\"\"):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){\nvar f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+\"g\")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Iu(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++fi;return Iu(n)+t},An.upperCase=Tf,An.upperFirst=$f,An.each=nu,An.eachRight=tu,An.first=qe,Nu(An,function(){var n={};return mt(An,function(t,r){oi.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false\n}),An.VERSION=\"4.17.15\",r(\"bind bindKey curry curryRight partial partialRight\".split(\" \"),function(n){An[n].placeholder=An}),r([\"drop\",\"take\"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Ui(Eu(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ci(r,e.__takeCount__):e.__views__.push({size:Ci(r,4294967295),type:n+(0>e.__dir__?\"Right\":\"\")}),e},Un.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()}}),r([\"filter\",\"map\",\"takeWhile\"],function(n,t){\nvar r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r([\"head\",\"last\"],function(n,t){var r=\"take\"+(t?\"Right\":\"\");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r([\"initial\",\"tail\"],function(n,t){var r=\"drop\"+(t?\"\":\"Right\");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter($u)},Un.prototype.find=function(n){\nreturn this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n)},Un.prototype.invokeMap=fr(function(n,t){return typeof n==\"function\"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(au(ye(n)))},Un.prototype.slice=function(n,t){n=Eu(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Eu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){\nreturn this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295)},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?\"take\"+(\"last\"==t?\"Right\":\"\"):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||ff(o);s&&r&&typeof l==\"function\"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p;\nreturn!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r(\"pop push shift sort splice unshift\".split(\" \"),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?\"tap\":\"thru\",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)});\n}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+\"\";oi.call(Gi,e)||(Gi[e]=[]),Gi[e].push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:\"wrapper\",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this);\nn.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case\"drop\":f+=s;break;case\"dropRight\":n-=s;break;case\"take\":n=Ci(n,f+s);break;case\"takeRight\":f=Ui(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ci(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);\ne=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=To,An.prototype.chain=function(){return Ye(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=mu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){\nfor(var t,r=this;r instanceof En;){var e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,\nwi&&(An.prototype[wi]=Xe),An}();typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this);","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","var _ = require('./lodash.min').runInContext();\nmodule.exports = require('./fp/_baseConvert')(_, _);\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","/**\n * Secure random string generator with custom alphabet.\n *\n * Alphabet must contain 256 symbols or less. Otherwise, the generator\n * will not be secure.\n *\n * @param {generator} random The random bytes generator.\n * @param {string} alphabet Symbols to be used in new random string.\n * @param {size} size The number of symbols in new random string.\n *\n * @return {string} Random string.\n *\n * @example\n * const format = require('nanoid/format')\n *\n * function random (size) {\n * const result = []\n * for (let i = 0; i < size; i++) {\n * result.push(randomByte())\n * }\n * return result\n * }\n *\n * format(random, \"abcdef\", 5) //=> \"fbaef\"\n *\n * @name format\n * @function\n */\nmodule.exports = function (random, alphabet, size) {\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n var step = Math.ceil(1.6 * mask * size / alphabet.length)\n size = +size\n\n var id = ''\n while (true) {\n var bytes = random(step)\n for (var i = 0; i < step; i++) {\n var byte = bytes[i] & mask\n if (alphabet[byte]) {\n id += alphabet[byte]\n if (id.length === size) return id\n }\n }\n }\n}\n\n/**\n * @callback generator\n * @param {number} bytes The number of bytes to generate.\n * @return {number[]} Random bytes.\n */\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","import { union, reduce } from 'lodash/fp';\n\nconst commonPlus = extra => union(['onBegin', 'onComplete', 'onError'])(extra);\n\nconst common = () => commonPlus([]);\n\nconst _events = {\n recordApi: {\n save: commonPlus([\n 'onInvalid',\n 'onRecordUpdated',\n 'onRecordCreated']),\n delete: common(),\n getContext: common(),\n getNew: common(),\n load: common(),\n validate: common(),\n uploadFile: common(),\n downloadFile: common(),\n },\n indexApi: {\n buildIndex: common(),\n listItems: common(),\n delete: common(),\n aggregates: common(),\n },\n collectionApi: {\n getAllowedRecordTypes: common(),\n initialise: common(),\n delete: common(),\n },\n authApi: {\n authenticate: common(),\n authenticateTemporaryAccess: common(),\n createTemporaryAccess: common(),\n createUser: common(),\n enableUser: common(),\n disableUser: common(),\n loadAccessLevels: common(),\n getNewAccessLevel: common(),\n getNewUser: common(),\n getNewUserAuth: common(),\n getUsers: common(),\n saveAccessLevels: common(),\n isAuthorized: common(),\n changeMyPassword: common(),\n setPasswordFromTemporaryCode: common(),\n scorePassword: common(),\n isValidPassword: common(),\n validateUser: common(),\n validateAccessLevels: common(),\n setUserAccessLevels: common(),\n },\n templateApi: {\n saveApplicationHierarchy: common(),\n saveActionsAndTriggers: common(),\n },\n actionsApi: {\n execute: common(),\n },\n};\n\nconst _eventsList = [];\n\nconst makeEvent = (area, method, name) => `${area}:${method}:${name}`;\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n _events[areaKey][methodKey] = reduce((obj, s) => {\n obj[s] = makeEvent(areaKey, methodKey, s);\n return obj;\n },\n {})(_events[areaKey][methodKey]);\n }\n}\n\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n for (const name in _events[areaKey][methodKey]) {\n _eventsList.push(\n _events[areaKey][methodKey][name],\n );\n }\n }\n}\n\n\nexport const events = _events;\n\nexport const eventsList = _eventsList;\n\nexport default { events: _events, eventsList: _eventsList };\n","export class BadRequestError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 400;\n }\n}\n\nexport class UnauthorisedError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 401;\n }\n}\n\nexport class ForbiddenError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 403;\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 404;\n }\n}\n\nexport class ConflictError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 409;\n }\n}","import { cloneDeep, isUndefined } from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { UnauthorisedError } from './errors';\n\nexport const apiWrapper = async (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n await app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = await func(...params);\n\n await publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n await publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nexport const apiWrapperSync = (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = func(...params);\n\n publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nconst handleNotAuthorized = (app, eventContext, eventNamespace) => {\n const err = new UnauthorisedError(`Unauthorized: ${eventNamespace}`);\n publishError(app, eventContext, eventNamespace, () => 0, err);\n throw err;\n};\n\nconst pushCallStack = (app, eventNamespace, seedCallId) => {\n const callId = generate();\n\n const createCallStack = () => ({\n seedCallId: !isUndefined(seedCallId)\n ? seedCallId\n : callId,\n threadCallId: callId,\n stack: [],\n });\n\n if (isUndefined(app.calls)) {\n app.calls = createCallStack();\n }\n\n app.calls.stack.push({\n namespace: eventNamespace,\n callId,\n });\n};\n\nconst popCallStack = (app) => {\n app.calls.stack.pop();\n if (app.calls.stack.length === 0) {\n delete app.calls;\n }\n};\n\nconst publishError = async (app, eventContext, eventNamespace, elapsed, err) => {\n const ctx = cloneDeep(eventContext);\n ctx.error = err;\n ctx.elapsed = elapsed();\n await app.publish(\n eventNamespace.onError,\n ctx,\n );\n popCallStack(app);\n};\n\nconst publishComplete = async (app, eventContext, eventNamespace, elapsed, result) => {\n const endcontext = cloneDeep(eventContext);\n endcontext.result = result;\n endcontext.elapsed = elapsed();\n await app.publish(\n eventNamespace.onComplete,\n endcontext,\n );\n popCallStack(app);\n return result;\n};\n\nexport default apiWrapper;\n","import { split } from 'lodash/fp';\nimport { $ } from './index';\n\nconst lockOverlapMilliseconds = 10;\n\nexport const getLock = async (app, lockFile, timeoutMilliseconds, maxLockRetries, retryCount = 0) => {\n try {\n const timeout = (await app.getEpochTime())\n + timeoutMilliseconds;\n\n const lock = {\n timeout,\n key: lockFile,\n totalTimeout: timeoutMilliseconds,\n };\n\n await app.datastore.createFile(\n lockFile,\n getLockFileContent(\n lock.totalTimeout,\n lock.timeout,\n ),\n );\n\n return lock;\n } catch (e) {\n if (retryCount == maxLockRetries) { return NO_LOCK; }\n\n const lock = parseLockFileContent(\n lockFile,\n await app.datastore.loadFile(lockFile),\n );\n\n const currentEpochTime = await app.getEpochTime();\n\n if (currentEpochTime < lock.timeout) {\n return NO_LOCK;\n }\n\n try {\n await app.datastore.deleteFile(lockFile);\n } catch (_) {\n //empty\n }\n\n await sleepForRetry();\n\n return await getLock(\n app, lockFile, timeoutMilliseconds,\n maxLockRetries, retryCount + 1,\n );\n }\n};\n\nexport const getLockFileContent = (totalTimeout, epochTime) => `${totalTimeout}:${epochTime.toString()}`;\n\nconst parseLockFileContent = (key, content) => $(content, [\n split(':'),\n parts => ({\n totalTimeout: new Number(parts[0]),\n timeout: new Number(parts[1]),\n key,\n }),\n]);\n\nexport const releaseLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n await app.datastore.deleteFile(lock.key);\n } catch (_) {\n //empty\n }\n }\n};\n\nexport const extendLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n lock.timeout = currentEpochTime + lock.timeoutMilliseconds;\n await app.datastore.updateFile(\n lock.key,\n getLockFileContent(lock.totalTimeout, lock.timeout),\n );\n return lock;\n } catch (_) {\n //empty\n }\n }\n return NO_LOCK;\n};\n\nexport const NO_LOCK = 'no lock';\nexport const isNolock = id => id === NO_LOCK;\n\nconst sleepForRetry = () => new Promise(resolve => setTimeout(resolve, lockOverlapMilliseconds));\n","import {\n \n head, \n tail, findIndex, startsWith, \n dropRight, flow, takeRight, trim,\n replace\n \n} from 'lodash';\nimport { \n some, reduce, isEmpty, isArray, join,\n isString, isInteger, isDate, toNumber,\n isUndefined, isNaN, isNull, constant,\n split, includes\n} from 'lodash/fp';\nimport { events, eventsList } from './events';\nimport { apiWrapper } from './apiWrapper';\nimport {\n getLock, NO_LOCK,\n isNolock\n} from './lock';\n\n// this is the combinator function\nexport const $$ = (...funcs) => arg => flow(funcs)(arg);\n\n// this is the pipe function\nexport const $ = (arg, funcs) => $$(...funcs)(arg);\n\nexport const keySep = '/';\nconst trimKeySep = str => trim(str, keySep);\nconst splitByKeySep = str => split(keySep)(str);\nexport const safeKey = key => replace(`${keySep}${trimKeySep(key)}`, `${keySep}${keySep}`, keySep);\nexport const joinKey = (...strs) => {\n const paramsOrArray = strs.length === 1 & isArray(strs[0])\n ? strs[0] : strs;\n return safeKey(join(keySep)(paramsOrArray));\n};\nexport const splitKey = $$(trimKeySep, splitByKeySep);\nexport const getDirFomKey = $$(splitKey, dropRight, p => joinKey(...p));\nexport const getFileFromKey = $$(splitKey, takeRight, head);\n\nexport const configFolder = `${keySep}.config`;\nexport const fieldDefinitions = joinKey(configFolder, 'fields.json');\nexport const templateDefinitions = joinKey(configFolder, 'templates.json');\nexport const appDefinitionFile = joinKey(configFolder, 'appDefinition.json');\nexport const dirIndex = folderPath => joinKey(configFolder, 'dir', ...splitKey(folderPath), 'dir.idx');\nexport const getIndexKeyFromFileKey = $$(getDirFomKey, dirIndex);\n\nexport const ifExists = (val, exists, notExists) => (isUndefined(val)\n ? isUndefined(notExists) ? (() => { })() : notExists()\n : exists());\n\nexport const getOrDefault = (val, defaultVal) => ifExists(val, () => val, () => defaultVal);\n\nexport const not = func => val => !func(val);\nexport const isDefined = not(isUndefined);\nexport const isNonNull = not(isNull);\nexport const isNotNaN = not(isNaN);\n\nexport const allTrue = (...funcArgs) => val => reduce(\n (result, conditionFunc) => (isNull(result) || result == true) && conditionFunc(val),\n null)(funcArgs);\n\nexport const anyTrue = (...funcArgs) => val => reduce(\n (result, conditionFunc) => result == true || conditionFunc(val),\n null)(funcArgs);\n\nexport const insensitiveEquals = (str1, str2) => str1.trim().toLowerCase() === str2.trim().toLowerCase();\n\nexport const isSomething = allTrue(isDefined, isNonNull, isNotNaN);\nexport const isNothing = not(isSomething);\nexport const isNothingOrEmpty = v => isNothing(v) || isEmpty(v);\nexport const somethingOrGetDefault = getDefaultFunc => val => (isSomething(val) ? val : getDefaultFunc());\nexport const somethingOrDefault = (val, defaultVal) => somethingOrGetDefault(constant(defaultVal))(val);\n\nexport const mapIfSomethingOrDefault = (mapFunc, defaultVal) => val => (isSomething(val) ? mapFunc(val) : defaultVal);\n\nexport const mapIfSomethingOrBlank = mapFunc => mapIfSomethingOrDefault(mapFunc, '');\n\nexport const none = predicate => collection => !some(predicate)(collection);\n\nexport const all = predicate => collection => none(v => !predicate(v))(collection);\n\nexport const isNotEmpty = ob => !isEmpty(ob);\nexport const isAsync = fn => fn.constructor.name === 'AsyncFunction';\nexport const isNonEmptyArray = allTrue(isArray, isNotEmpty);\nexport const isNonEmptyString = allTrue(isString, isNotEmpty);\nexport const tryOr = failFunc => (func, ...args) => {\n try {\n return func.apply(null, ...args);\n } catch (_) {\n return failFunc();\n }\n};\n\nexport const tryAwaitOr = failFunc => async (func, ...args) => {\n try {\n return await func.apply(null, ...args);\n } catch (_) {\n return await failFunc();\n }\n};\n\nexport const defineError = (func, errorPrefix) => {\n try {\n return func();\n } catch (err) {\n err.message = `${errorPrefix} : ${err.message}`;\n throw err;\n }\n};\n\nexport const tryOrIgnore = tryOr(() => { });\nexport const tryAwaitOrIgnore = tryAwaitOr(async () => { });\nexport const causesException = (func) => {\n try {\n func();\n return false;\n } catch (e) {\n return true;\n }\n};\n\nexport const executesWithoutException = func => !causesException(func);\n\nexport const handleErrorWith = returnValInError => tryOr(constant(returnValInError));\n\nexport const handleErrorWithUndefined = handleErrorWith(undefined);\n\nexport const switchCase = (...cases) => (value) => {\n const nextCase = () => head(cases)[0](value);\n const nextResult = () => head(cases)[1](value);\n\n if (isEmpty(cases)) return; // undefined\n if (nextCase() === true) return nextResult();\n return switchCase(...tail(cases))(value);\n};\n\nexport const isValue = val1 => val2 => (val1 === val2);\nexport const isOneOf = (...vals) => val => includes(val)(vals);\nexport const defaultCase = constant(true);\nexport const memberMatches = (member, match) => obj => match(obj[member]);\n\n\nexport const StartsWith = searchFor => searchIn => startsWith(searchIn, searchFor);\n\nexport const contains = val => array => (findIndex(array, v => v === val) > -1);\n\nexport const getHashCode = (s) => {\n let hash = 0; let i; let char; let\n l;\n if (s.length == 0) return hash;\n for (i = 0, l = s.length; i < l; i++) {\n char = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n\n // converting to string, but dont want a \"-\" prefixed\n if (hash < 0) { return `n${(hash * -1).toString()}`; }\n return hash.toString();\n};\n\n// thanks to https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/\nexport const awEx = async (promise) => {\n try {\n const result = await promise;\n return [undefined, result];\n } catch (error) {\n return [error, undefined];\n }\n};\n\nexport const isSafeInteger = n => isInteger(n)\n && n <= Number.MAX_SAFE_INTEGER\n && n >= 0 - Number.MAX_SAFE_INTEGER;\n\nexport const toDateOrNull = s => (isNull(s) ? null\n : isDate(s) ? s : new Date(s));\nexport const toBoolOrNull = s => (isNull(s) ? null\n : s === 'true' || s === true);\nexport const toNumberOrNull = s => (isNull(s) ? null\n : toNumber(s));\n\nexport const isArrayOfString = opts => isArray(opts) && all(isString)(opts);\n\nexport const pause = async duration => new Promise(res => setTimeout(res, duration));\n\nexport const retry = async (fn, retries, delay, ...args) => {\n try {\n return await fn(...args);\n } catch (err) {\n if (retries > 1) {\n return await pause(delay).then(async () => await retry(fn, (retries - 1), delay, ...args));\n }\n throw err;\n }\n};\n\nexport { events } from './events';\nexport { apiWrapper, apiWrapperSync } from './apiWrapper';\nexport {\n getLock, NO_LOCK, releaseLock,\n extendLock, isNolock,\n} from './lock';\n\nexport default {\n ifExists,\n getOrDefault,\n isDefined,\n isNonNull,\n isNotNaN,\n allTrue,\n isSomething,\n mapIfSomethingOrDefault,\n mapIfSomethingOrBlank,\n configFolder,\n fieldDefinitions,\n isNothing,\n not,\n switchCase,\n defaultCase,\n StartsWith,\n contains,\n templateDefinitions,\n handleErrorWith,\n handleErrorWithUndefined,\n tryOr,\n tryOrIgnore,\n tryAwaitOr,\n tryAwaitOrIgnore,\n dirIndex,\n keySep,\n $,\n $$,\n getDirFomKey,\n getFileFromKey,\n splitKey,\n somethingOrDefault,\n getIndexKeyFromFileKey,\n joinKey,\n somethingOrGetDefault,\n appDefinitionFile,\n isValue,\n all,\n isOneOf,\n memberMatches,\n defineError,\n anyTrue,\n isNonEmptyArray,\n causesException,\n executesWithoutException,\n none,\n getHashCode,\n awEx,\n apiWrapper,\n events,\n eventsList,\n isNothingOrEmpty,\n isSafeInteger,\n toNumber,\n toDate: toDateOrNull,\n toBool: toBoolOrNull,\n isArrayOfString,\n getLock,\n NO_LOCK,\n isNolock,\n insensitiveEquals,\n pause,\n retry,\n};\n","import { filter, map } from 'lodash/fp';\nimport { $, isSomething } from './index';\n\nexport const stringNotEmpty = s => isSomething(s) && s.trim().length > 0;\n\nexport const makerule = (field, error, isValid) => ({ field, error, isValid });\n\nexport const validationError = (rule, item) => ({ ...rule, item });\n\nexport const applyRuleSet = ruleSet => itemToValidate => $(ruleSet, [\n map(applyRule(itemToValidate)),\n filter(isSomething),\n]);\n\nexport const applyRule = itemTovalidate => rule => (rule.isValid(itemTovalidate)\n ? null\n : validationError(rule, itemTovalidate));\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","var filters = new Map();\nvar limiters = new Map();\n\nfunction filter(name, handler) {\n if (typeof name !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n if (typeof handler !== 'function') {\n throw new TypeError('Second argument must be a function.');\n }\n if (filters.has(name)) {\n throw new Error((\"A filter named \" + name + \" is already registered.\"));\n }\n filters.set(name, handler);\n}\n\nfunction limiter(name, handler) {\n if (typeof name !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n if (typeof handler !== 'function') {\n throw new TypeError('Second argument must be a function.');\n }\n if (limiters.has(name)) {\n throw new Error((\"A limiter named \" + name + \" is already registered.\"));\n }\n limiters.set(name, handler);\n}\n\nfunction compileRawExpression(src) {\n return new Function('context', 'tempVars', // eslint-disable-line\n (\"const sandbox = $nxCompileToSandbox(context, tempVars)\\n try { with (sandbox) { return \" + src + \" } } catch (err) {\\n if (!(err instanceof TypeError)) throw err\\n }\\n $nxClearSandbox()\"));\n}\n\nfunction compileRawCode(src) {\n return new Function('context', 'tempVars', // eslint-disable-line\n (\"const sandbox = $nxCompileToSandbox(context, tempVars)\\n with (sandbox) { \" + src + \" }\\n $nxClearSandbox()\"));\n}\n\nvar filterRegex = /(?:[^\\|]|\\|\\|)+/g;\nvar limiterRegex = /(?:[^&]|&&)+/g;\nvar argsRegex = /\\S+/g;\n\nfunction parseExpression(src) {\n var tokens = src.match(filterRegex);\n if (tokens.length === 1) {\n return compileRawExpression(tokens[0]);\n }\n\n var expression = {\n exec: compileRawExpression(tokens[0]),\n filters: []\n };\n for (var i = 1; i < tokens.length; i++) {\n var filterTokens = tokens[i].match(argsRegex);\n var filterName = filterTokens.shift();\n var effect = filters.get(filterName);\n if (!effect) {\n throw new Error((\"There is no filter named: \" + filterName + \".\"));\n }\n expression.filters.push({ effect: effect, argExpressions: filterTokens.map(compileRawExpression) });\n }\n return expression;\n}\n\nfunction parseCode(src) {\n var tokens = src.match(limiterRegex);\n if (tokens.length === 1) {\n return compileRawCode(tokens[0]);\n }\n\n var code = {\n exec: compileRawCode(tokens[0]),\n limiters: []\n };\n for (var i = 1; i < tokens.length; i++) {\n var limiterTokens = tokens[i].match(argsRegex);\n var limiterName = limiterTokens.shift();\n var effect = limiters.get(limiterName);\n if (!effect) {\n throw new Error((\"There is no limiter named: \" + limiterName + \".\"));\n }\n code.limiters.push({ effect: effect, argExpressions: limiterTokens.map(compileRawExpression) });\n }\n return code;\n}\n\nvar expressionCache = new Map();\nvar codeCache = new Map();\n\nfunction compileExpression(src) {\n if (typeof src !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n var expression = expressionCache.get(src);\n if (!expression) {\n expression = parseExpression(src);\n expressionCache.set(src, expression);\n }\n\n if (typeof expression === 'function') {\n return expression;\n }\n\n return function evaluateExpression(context, tempVars) {\n var value = expression.exec(context, tempVars);\n for (var i = 0, list = expression.filters; i < list.length; i += 1) {\n var filter = list[i];\n\n var args = filter.argExpressions.map(evaluateArgExpression, context);\n value = filter.effect.apply(filter, [ value ].concat( args ));\n }\n return value;\n };\n}\n\nfunction compileCode(src) {\n if (typeof src !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n var code = codeCache.get(src);\n if (!code) {\n code = parseCode(src);\n codeCache.set(src, code);\n }\n\n if (typeof code === 'function') {\n return code;\n }\n\n var context = {};\n return function evaluateCode(state, tempVars) {\n var i = 0;\n function next() {\n Object.assign(context, tempVars);\n if (i < code.limiters.length) {\n var limiter = code.limiters[i++];\n var args = limiter.argExpressions.map(evaluateArgExpression, state);\n limiter.effect.apply(limiter, [ next, context ].concat( args ));\n } else {\n code.exec(state, tempVars);\n }\n }\n next();\n };\n}\n\nfunction evaluateArgExpression(argExpression) {\n return argExpression(this);\n}\n\nvar hasHandler = { has: has };\nvar allHandlers = { has: has, get: get };\nvar globals = new Set();\nvar temp;\n\nvar globalObj;\nif (typeof window !== 'undefined') { globalObj = window; } // eslint-disable-line\nelse if (typeof global !== 'undefined') { globalObj = global; } // eslint-disable-line\n else if (typeof self !== 'undefined') { globalObj = self; } // eslint-disable-line\nglobalObj.$nxCompileToSandbox = toSandbox;\nglobalObj.$nxClearSandbox = clearSandbox;\n\nfunction expose() {\n var globalNames = [], len = arguments.length;\n while ( len-- ) globalNames[ len ] = arguments[ len ];\n\n for (var i = 0, list = globalNames; i < list.length; i += 1) {\n var globalName = list[i];\n\n globals.add(globalName);\n }\n}\n\nfunction hide() {\n var globalNames = [], len = arguments.length;\n while ( len-- ) globalNames[ len ] = arguments[ len ];\n\n for (var i = 0, list = globalNames; i < list.length; i += 1) {\n var globalName = list[i];\n\n globals.delete(globalName);\n }\n}\n\nfunction hideAll() {\n globals.clear();\n}\n\nfunction has(target, key) {\n return globals.has(key) ? key in target : true;\n}\n\nfunction get(target, key) {\n return key in temp ? temp[key] : target[key];\n}\n\nfunction toSandbox(obj, tempVars) {\n if (tempVars) {\n temp = tempVars;\n return new Proxy(obj, allHandlers);\n }\n return new Proxy(obj, hasHandler);\n}\n\nfunction clearSandbox() {\n temp = undefined;\n}\n\nexport { compileExpression, compileCode, compileRawExpression, compileRawCode, expose, hide, hideAll, filters, limiters, filter, limiter };\n","import { compileExpression, compileCode } from '@nx-js/compiler-util';\nimport {\n isUndefined, keys, \n cloneDeep, isFunction,\n} from 'lodash/fp';\nimport { defineError } from '../common';\n\nexport const filterEval = 'FILTER_EVALUATE';\nexport const filterCompile = 'FILTER_COMPILE';\nexport const mapEval = 'MAP_EVALUATE';\nexport const mapCompile = 'MAP_COMPILE';\nexport const removeUndeclaredFields = 'REMOVE_UNDECLARED_FIELDS';\nexport const addUnMappedFields = 'ADD_UNMAPPED_FIELDS';\nexport const addTheKey = 'ADD_KEY';\n\n\nconst getEvaluateResult = () => ({\n isError: false,\n passedFilter: true,\n result: null,\n});\n\nexport const compileFilter = index => compileExpression(index.filter);\n\nexport const compileMap = index => compileCode(index.map);\n\nexport const passesFilter = (record, index) => {\n const context = { record };\n if (!index.filter) return true;\n\n const compiledFilter = defineError(\n () => compileFilter(index),\n filterCompile,\n );\n\n return defineError(\n () => compiledFilter(context),\n filterEval,\n );\n};\n\nexport const mapRecord = (record, index) => {\n const recordClone = cloneDeep(record);\n const context = { record: recordClone };\n\n const map = index.map ? index.map : 'return {...record};';\n\n const compiledMap = defineError(\n () => compileCode(map),\n mapCompile,\n );\n\n const mapped = defineError(\n () => compiledMap(context),\n mapEval,\n );\n\n const mappedKeys = keys(mapped);\n for (let i = 0; i < mappedKeys.length; i++) {\n const key = mappedKeys[i];\n mapped[key] = isUndefined(mapped[key]) ? null : mapped[key];\n if (isFunction(mapped[key])) {\n delete mapped[key];\n }\n }\n\n mapped.key = record.key;\n mapped.sortKey = index.getSortKey\n ? compileCode(index.getSortKey)(context)\n : record.id;\n\n return mapped;\n};\n\nexport const evaluate = record => (index) => {\n const result = getEvaluateResult();\n\n try {\n result.passedFilter = passesFilter(record, index);\n } catch (err) {\n result.isError = true;\n result.passedFilter = false;\n result.result = err.message;\n }\n\n if (!result.passedFilter) return result;\n\n try {\n result.result = mapRecord(record, index);\n } catch (err) {\n result.isError = true;\n result.result = err.message;\n }\n\n return result;\n};\n\nexport default evaluate;\n","import {\n map, isEmpty, countBy, \n flatten, includes, join, keys\n} from 'lodash/fp';\nimport { } from 'lodash';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { compileFilter, compileMap } from '../indexing/evaluate';\nimport { isNonEmptyString, executesWithoutException, $ } from '../common';\nimport { isRecord } from './hierarchy';\n\nexport const indexTypes = { reference: 'reference', ancestor: 'ancestor' };\n\nexport const indexRuleSet = [\n makerule('map', 'index has no map function',\n index => isNonEmptyString(index.map)),\n makerule('map', \"index's map function does not compile\",\n index => !isNonEmptyString(index.map)\n || executesWithoutException(() => compileMap(index))),\n makerule('filter', \"index's filter function does not compile\",\n index => !isNonEmptyString(index.filter)\n || executesWithoutException(() => compileFilter(index))),\n makerule('name', 'must declare a name for index',\n index => isNonEmptyString(index.name)),\n makerule('name', 'there is a duplicate named index on this node',\n index => isEmpty(index.name)\n || countBy('name')(index.parent().indexes)[index.name] === 1),\n makerule('indexType', 'reference index may only exist on a record node',\n index => isRecord(index.parent())\n || index.indexType !== indexTypes.reference),\n makerule('indexType', `index type must be one of: ${join(', ')(keys(indexTypes))}`,\n index => includes(index.indexType)(keys(indexTypes))),\n];\n\nexport const validateIndex = (index, allReferenceIndexesOnNode) => applyRuleSet(indexRuleSet(allReferenceIndexesOnNode))(index);\n\nexport const validateAllIndexes = node => $(node.indexes, [\n map(i => validateIndex(i, node.indexes)),\n flatten,\n]);\n","import {\n find, constant, map, last,\n first, split, intersection, take,\n union, includes, filter, some,\n} from 'lodash/fp';\nimport {\n $, switchCase, isNothing, isSomething,\n defaultCase, splitKey, isNonEmptyString,\n joinKey, getHashCode,\n} from '../common';\nimport { indexTypes } from './indexes';\n\nexport const getFlattenedHierarchy = (appHierarchy, useCached = true) => {\n if (isSomething(appHierarchy.getFlattenedHierarchy) && useCached) { return appHierarchy.getFlattenedHierarchy(); }\n\n const flattenHierarchy = (currentNode, flattened) => {\n flattened.push(currentNode);\n if ((!currentNode.children\n || currentNode.children.length === 0)\n && (!currentNode.indexes\n || currentNode.indexes.length === 0)\n && (!currentNode.aggregateGroups\n || currentNode.aggregateGroups.length === 0)) {\n return flattened;\n }\n\n const unionIfAny = l2 => l1 => union(l1)(!l2 ? [] : l2);\n\n const children = $([], [\n unionIfAny(currentNode.children),\n unionIfAny(currentNode.indexes),\n unionIfAny(currentNode.aggregateGroups),\n ]);\n\n for (const child of children) {\n flattenHierarchy(child, flattened);\n }\n return flattened;\n };\n\n appHierarchy.getFlattenedHierarchy = () => flattenHierarchy(appHierarchy, []);\n return appHierarchy.getFlattenedHierarchy();\n};\n\nexport const getLastPartInKey = key => last(splitKey(key));\n\nexport const getNodesInPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n filter(n => new RegExp(`${n.pathRegx()}`).test(key)),\n]);\n\nexport const getExactNodeForPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => new RegExp(`${n.pathRegx()}$`).test(key)),\n]);\n\nexport const getNodeForCollectionPath = appHierarchy => collectionKey => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && new RegExp(`${n.collectionPathRegx()}$`).test(collectionKey))),\n]);\n\nexport const hasMatchingAncestor = ancestorPredicate => decendantNode => switchCase(\n\n [node => isNothing(node.parent()),\n constant(false)],\n\n [node => ancestorPredicate(node.parent()),\n constant(true)],\n\n [defaultCase,\n node => hasMatchingAncestor(ancestorPredicate)(node.parent())],\n\n)(decendantNode);\n\nexport const getNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => n.nodeKey() === nodeKey\n || (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nexport const getCollectionNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nexport const getNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getExactNodeForPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nexport const getCollectionNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getNodeForCollectionPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getCollectionNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nexport const isNode = (appHierarchy, key) => isSomething(getExactNodeForPath(appHierarchy)(key));\n\nexport const getActualKeyOfParent = (parentNodeKey, actualChildKey) => $(actualChildKey, [\n splitKey,\n take(splitKey(parentNodeKey).length),\n ks => joinKey(...ks),\n]);\n\nexport const getParentKey = (key) => {\n return $(key, [\n splitKey,\n take(splitKey(key).length - 1),\n joinKey,\n ]);\n};\n\nexport const isKeyAncestorOf = ancestorKey => decendantNode => hasMatchingAncestor(p => p.nodeKey() === ancestorKey)(decendantNode);\n\nexport const hasNoMatchingAncestors = parentPredicate => node => !hasMatchingAncestor(parentPredicate)(node);\n\nexport const findField = (recordNode, fieldName) => find(f => f.name == fieldName)(recordNode.fields);\n\nexport const isAncestor = decendant => ancestor => isKeyAncestorOf(ancestor.nodeKey())(decendant);\n\nexport const isDecendant = ancestor => decendant => isAncestor(decendant)(ancestor);\n\nexport const getRecordNodeId = recordKey => $(recordKey, [\n splitKey,\n last,\n getRecordNodeIdFromId,\n]);\n\nexport const getRecordNodeIdFromId = recordId => $(recordId, [split('-'), first, parseInt]);\n\nexport const getRecordNodeById = (hierarchy, recordId) => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => isRecord(n)\n && n.nodeId === getRecordNodeIdFromId(recordId)),\n]);\n\nexport const recordNodeIdIsAllowed = indexNode => nodeId => indexNode.allowedRecordNodeIds.length === 0\n || includes(nodeId)(indexNode.allowedRecordNodeIds);\n\nexport const recordNodeIsAllowed = indexNode => recordNode => recordNodeIdIsAllowed(indexNode)(recordNode.nodeId);\n\nexport const getAllowedRecordNodesForIndex = (appHierarchy, indexNode) => {\n const recordNodes = $(appHierarchy, [\n getFlattenedHierarchy,\n filter(isRecord),\n ]);\n\n if (isGlobalIndex(indexNode)) {\n return $(recordNodes, [\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isAncestorIndex(indexNode)) {\n return $(recordNodes, [\n filter(isDecendant(indexNode.parent())),\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isReferenceIndex(indexNode)) {\n return $(recordNodes, [\n filter(n => some(fieldReversesReferenceToIndex(indexNode))(n.fields)),\n ]);\n }\n};\n\nexport const getNodeFromNodeKeyHash = hierarchy => hash => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => getHashCode(n.nodeKey()) === hash),\n]);\n\nexport const isRecord = node => isSomething(node) && node.type === 'record';\nexport const isSingleRecord = node => isRecord(node) && node.isSingle;\nexport const isCollectionRecord = node => isRecord(node) && !node.isSingle;\nexport const isIndex = node => isSomething(node) && node.type === 'index';\nexport const isaggregateGroup = node => isSomething(node) && node.type === 'aggregateGroup';\nexport const isShardedIndex = node => isIndex(node) && isNonEmptyString(node.getShardName);\nexport const isRoot = node => isSomething(node) && node.isRoot();\nexport const isDecendantOfARecord = hasMatchingAncestor(isRecord);\nexport const isGlobalIndex = node => isIndex(node) && isRoot(node.parent());\nexport const isReferenceIndex = node => isIndex(node) && node.indexType === indexTypes.reference;\nexport const isAncestorIndex = node => isIndex(node) && node.indexType === indexTypes.ancestor;\n\nexport const fieldReversesReferenceToNode = node => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)(map(i => i.nodeKey())(node.indexes))\n .length > 0;\n\nexport const fieldReversesReferenceToIndex = indexNode => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)([indexNode.nodeKey()])\n .length > 0;\n\nexport default {\n getLastPartInKey,\n getNodesInPath,\n getExactNodeForPath,\n hasMatchingAncestor,\n getNode,\n getNodeByKeyOrNodeKey,\n isNode,\n getActualKeyOfParent,\n getParentKey,\n isKeyAncestorOf,\n hasNoMatchingAncestors,\n findField,\n isAncestor,\n isDecendant,\n getRecordNodeId,\n getRecordNodeIdFromId,\n getRecordNodeById,\n recordNodeIdIsAllowed,\n recordNodeIsAllowed,\n getAllowedRecordNodesForIndex,\n getNodeFromNodeKeyHash,\n isRecord,\n isCollectionRecord,\n isIndex,\n isaggregateGroup,\n isShardedIndex,\n isRoot,\n isDecendantOfARecord,\n isGlobalIndex,\n isReferenceIndex,\n isAncestorIndex,\n fieldReversesReferenceToNode,\n fieldReversesReferenceToIndex,\n getFlattenedHierarchy,\n};\n","import { merge } from 'lodash';\nimport {\n constant, isUndefined, has,\n mapValues, cloneDeep,\n} from 'lodash/fp';\nimport { isNotEmpty } from '../common';\n\nexport const getSafeFieldParser = (tryParse, defaultValueFunctions) => (field, record) => {\n if (has(field.name)(record)) {\n return getSafeValueParser(tryParse, defaultValueFunctions)(record[field.name]);\n }\n return defaultValueFunctions[field.getUndefinedValue]();\n};\n\nexport const getSafeValueParser = (tryParse, defaultValueFunctions) => (value) => {\n const parsed = tryParse(value);\n if (parsed.success) {\n return parsed.value;\n }\n return defaultValueFunctions.default();\n};\n\nexport const getNewValue = (tryParse, defaultValueFunctions) => (field) => {\n const getInitialValue = isUndefined(field) || isUndefined(field.getInitialValue)\n ? 'default'\n : field.getInitialValue;\n\n return has(getInitialValue)(defaultValueFunctions)\n ? defaultValueFunctions[getInitialValue]()\n : getSafeValueParser(tryParse, defaultValueFunctions)(getInitialValue);\n};\n\nexport const typeFunctions = specificFunctions => merge({\n value: constant,\n null: constant(null),\n}, specificFunctions);\n\nexport const validateTypeConstraints = validationRules => async (field, record, context) => {\n const fieldValue = record[field.name];\n const validateRule = async r => (!await r.isValid(fieldValue, field.typeOptions, context)\n ? r.getMessage(fieldValue, field.typeOptions)\n : '');\n\n const errors = [];\n for (const r of validationRules) {\n const err = await validateRule(r);\n if (isNotEmpty(err)) errors.push(err);\n }\n\n return errors;\n};\n\nconst getDefaultOptions = mapValues(v => v.defaultValue);\n\nexport const makerule = (isValid, getMessage) => ({ isValid, getMessage });\nexport const parsedFailed = val => ({ success: false, value: val });\nexport const parsedSuccess = val => ({ success: true, value: val });\nexport const getDefaultExport = (name, tryParse, functions, options, validationRules, sampleValue, stringify) => ({\n getNew: getNewValue(tryParse, functions),\n safeParseField: getSafeFieldParser(tryParse, functions),\n safeParseValue: getSafeValueParser(tryParse, functions),\n tryParse,\n name,\n getDefaultOptions: () => getDefaultOptions(cloneDeep(options)),\n optionDefinitions: options,\n validateTypeConstraints: validateTypeConstraints(validationRules),\n sampleValue,\n stringify: val => (val === null || val === undefined\n ? '' : stringify(val)),\n getDefaultValue: functions.default,\n});\n","import {\n constant, isString,\n isNull, includes, isBoolean,\n} from 'lodash/fp';\nimport {\n typeFunctions,\n makerule, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toBoolOrNull, toNumberOrNull,\n isSafeInteger, isArrayOfString,\n} from '../common';\n\nconst stringFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst stringTryParse = switchCase(\n [isString, parsedSuccess],\n [isNull, parsedSuccess],\n [defaultCase, v => parsedSuccess(v.toString())],\n);\n\nconst options = {\n maxLength: {\n defaultValue: null,\n isValid: n => n === null || isSafeInteger(n) && n > 0,\n requirementDescription: 'max length must be null (no limit) or a greater than zero integer',\n parse: toNumberOrNull,\n },\n values: {\n defaultValue: null,\n isValid: v => v === null || (isArrayOfString(v) && v.length > 0 && v.length < 10000),\n requirementDescription: \"'values' must be null (no values) or an arry of at least one string\",\n parse: s => s,\n },\n allowDeclaredValuesOnly: {\n defaultValue: false,\n isValid: isBoolean,\n requirementDescription: 'allowDeclaredValuesOnly must be true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.maxLength === null || val.length <= opts.maxLength,\n (val, opts) => `value exceeds maximum length of ${opts.maxLength}`),\n makerule(async (val, opts) => val === null\n || opts.allowDeclaredValuesOnly === false\n || includes(val)(opts.values),\n (val) => `\"${val}\" does not exist in the list of allowed values`),\n];\n\nexport default getDefaultExport(\n 'string',\n stringTryParse,\n stringFunctions,\n options,\n typeConstraints,\n 'abcde',\n str => str,\n);\n","import { constant, isBoolean, isNull } from 'lodash/fp';\nimport {\n typeFunctions,\n makerule, parsedFailed, parsedSuccess,\n getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, isOneOf, toBoolOrNull,\n} from '../common';\n\nconst boolFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst boolTryParse = switchCase(\n [isBoolean, parsedSuccess],\n [isNull, parsedSuccess],\n [isOneOf('true', '1', 'yes', 'on'), () => parsedSuccess(true)],\n [isOneOf('false', '0', 'no', 'off'), () => parsedSuccess(false)],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n allowNulls: {\n defaultValue: true,\n isValid: isBoolean,\n requirementDescription: 'must be a true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => opts.allowNulls === true || val !== null,\n () => 'field cannot be null'),\n];\n\nexport default getDefaultExport(\n 'bool', boolTryParse, boolFunctions,\n options, typeConstraints, true, JSON.stringify,\n);\n","import {\n constant, isNumber, isString, isNull,\n} from 'lodash/fp';\nimport {\n makerule, typeFunctions,\n parsedFailed, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toNumberOrNull,\n isSafeInteger,\n} from '../common';\n\nconst numberFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst parseStringtoNumberOrNull = (s) => {\n const num = Number(s);\n return isNaN(num) ? parsedFailed(s) : parsedSuccess(num);\n};\n\nconst numberTryParse = switchCase(\n [isNumber, parsedSuccess],\n [isString, parseStringtoNumberOrNull],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n maxValue: {\n defaultValue: Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n minValue: {\n defaultValue: 0 - Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n decimalPlaces: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst getDecimalPlaces = (val) => {\n const splitDecimal = val.toString().split('.');\n if (splitDecimal.length === 1) return 0;\n return splitDecimal[1].length;\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n makerule(async (val, opts) => val === null || opts.decimalPlaces >= getDecimalPlaces(val),\n (val, opts) => `value (${val.toString()}) must have ${opts.decimalPlaces} decimal places or less`),\n];\n\nexport default getDefaultExport(\n 'number',\n numberTryParse,\n numberFunctions,\n options,\n typeConstraints,\n 1,\n num => num.toString(),\n);\n","import {\n constant, isDate, isString, isNull\n} from 'lodash/fp';\nimport {\n makerule, typeFunctions,\n parsedFailed, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toDateOrNull,\n} from '../common';\n\nconst dateFunctions = typeFunctions({\n default: constant(null),\n now: () => new Date(),\n});\n\nconst isValidDate = d => d instanceof Date && !isNaN(d);\n\nconst parseStringToDate = s => switchCase(\n [isValidDate, parsedSuccess],\n [defaultCase, parsedFailed],\n)(new Date(s));\n\n\nconst dateTryParse = switchCase(\n [isDate, parsedSuccess],\n [isString, parseStringToDate],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n maxValue: {\n defaultValue: new Date(32503680000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n minValue: {\n defaultValue: new Date(-8520336000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n];\n\nexport default getDefaultExport(\n 'datetime',\n dateTryParse,\n dateFunctions,\n options,\n typeConstraints,\n new Date(1984, 4, 1),\n date => JSON.stringify(date).replace(new RegExp('\"', 'g'), ''),\n);\n","import { \n map, constant, isArray \n} from 'lodash/fp';\nimport {\n typeFunctions, makerule,\n parsedFailed, getDefaultExport, parsedSuccess,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toNumberOrNull,\n $$, isSafeInteger,\n} from '../common';\n\nconst arrayFunctions = () => typeFunctions({\n default: constant([]),\n});\n\nconst mapToParsedArrary = type => $$(\n map(i => type.safeParseValue(i)),\n parsedSuccess,\n);\n\nconst arrayTryParse = type => switchCase(\n [isArray, mapToParsedArrary(type)],\n [defaultCase, parsedFailed],\n);\n\nconst typeName = type => `array<${type}>`;\n\n\nconst options = {\n maxLength: {\n defaultValue: 10000,\n isValid: isSafeInteger,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n minLength: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || val.length >= opts.minLength,\n (val, opts) => `must choose ${opts.minLength} or more options`),\n makerule(async (val, opts) => val === null || val.length <= opts.maxLength,\n (val, opts) => `cannot choose more than ${opts.maxLength} options`),\n];\n\nexport default type => getDefaultExport(\n typeName(type.name),\n arrayTryParse(type),\n arrayFunctions(type),\n options,\n typeConstraints,\n [type.sampleValue],\n JSON.stringify,\n);\n","import {\n isString, isObjectLike,\n isNull, has, isEmpty,\n} from 'lodash/fp';\nimport {\n typeFunctions, makerule,\n parsedSuccess, getDefaultExport,\n parsedFailed,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase,\n isNonEmptyString, isArrayOfString,\n} from '../common';\n\nconst referenceNothing = () => ({ key: '' });\n\nconst referenceFunctions = typeFunctions({\n default: referenceNothing,\n});\n\nconst hasStringValue = (ob, path) => has(path)(ob)\n && isString(ob[path]);\n\nconst isObjectWithKey = v => isObjectLike(v)\n && hasStringValue(v, 'key');\n\nconst tryParseFromString = s => {\n\n try {\n const asObj = JSON.parse(s);\n if(isObjectWithKey) {\n return parsedSuccess(asObj);\n }\n }\n catch(_) {\n // EMPTY\n }\n\n return parsedFailed(s);\n}\n\nconst referenceTryParse = v => switchCase(\n [isObjectWithKey, parsedSuccess],\n [isString, tryParseFromString],\n [isNull, () => parsedSuccess(referenceNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst options = {\n indexNodeKey: {\n defaultValue: null,\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n displayValue: {\n defaultValue: '',\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n reverseIndexNodeKeys: {\n defaultValue: null,\n isValid: v => isArrayOfString(v) && v.length > 0,\n requirementDescription: 'must be a non-empty array of strings',\n parse: s => s,\n },\n};\n\nconst isEmptyString = s => isString(s) && isEmpty(s);\n\nconst ensureReferenceExists = async (val, opts, context) => isEmptyString(val.key)\n || await context.referenceExists(opts, val.key);\n\nconst typeConstraints = [\n makerule(\n ensureReferenceExists,\n (val, opts) => `\"${val[opts.displayValue]}\" does not exist in options list (key: ${val.key})`,\n ),\n];\n\nexport default getDefaultExport(\n 'reference',\n referenceTryParse,\n referenceFunctions,\n options,\n typeConstraints,\n { key: 'key', value: 'value' },\n JSON.stringify,\n);\n","import {\n last, has, isString, intersection,\n isNull, isNumber,\n} from 'lodash/fp';\nimport {\n typeFunctions, parsedFailed,\n parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, none,\n $, splitKey,\n} from '../common';\n\nconst illegalCharacters = '*?\\\\/:<>|\\0\\b\\f\\v';\n\nexport const isLegalFilename = (filePath) => {\n const fn = fileName(filePath);\n return fn.length <= 255\n && intersection(fn.split(''))(illegalCharacters.split('')).length === 0\n && none(f => f === '..')(splitKey(filePath));\n};\n\nconst fileNothing = () => ({ relativePath: '', size: 0 });\n\nconst fileFunctions = typeFunctions({\n default: fileNothing,\n});\n\nconst fileTryParse = v => switchCase(\n [isValidFile, parsedSuccess],\n [isNull, () => parsedSuccess(fileNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst fileName = filePath => $(filePath, [\n splitKey,\n last,\n]);\n\nconst isValidFile = f => !isNull(f)\n && has('relativePath')(f) && has('size')(f)\n && isNumber(f.size)\n && isString(f.relativePath)\n && isLegalFilename(f.relativePath);\n\nconst options = {};\n\nconst typeConstraints = [];\n\nexport default getDefaultExport(\n 'file',\n fileTryParse,\n fileFunctions,\n options,\n typeConstraints,\n { relativePath: 'some_file.jpg', size: 1000 },\n JSON.stringify,\n);\n","import {\n assign, merge, \n} from 'lodash';\nimport {\n map, isString, isNumber,\n isBoolean, isDate, keys,\n isObject, isArray, has\n} from 'lodash/fp';\nimport { $ } from '../common';\nimport { parsedSuccess } from './typeHelpers';\nimport string from './string';\nimport bool from './bool';\nimport number from './number';\nimport datetime from './datetime';\nimport array from './array';\nimport reference from './reference';\nimport file from './file';\nimport { BadRequestError } from '../common/errors';\n\nconst allTypes = () => {\n const basicTypes = {\n string, number, datetime, bool, reference, file,\n };\n\n const arrays = $(basicTypes, [\n keys,\n map((k) => {\n const kvType = {};\n const concreteArray = array(basicTypes[k]);\n kvType[concreteArray.name] = concreteArray;\n return kvType;\n }),\n types => assign({}, ...types),\n ]);\n\n return merge({}, basicTypes, arrays);\n};\n\n\nexport const all = allTypes();\n\nexport const getType = (typeName) => {\n if (!has(typeName)(all)) throw new BadRequestError(`Do not recognise type ${typeName}`);\n return all[typeName];\n};\n\nexport const getSampleFieldValue = field => getType(field.type).sampleValue;\n\nexport const getNewFieldValue = field => getType(field.type).getNew(field);\n\nexport const safeParseField = (field, record) => getType(field.type).safeParseField(field, record);\n\nexport const validateFieldParse = (field, record) => (has(field.name)(record)\n ? getType(field.type).tryParse(record[field.name])\n : parsedSuccess(undefined)); // fields may be undefined by default\n\nexport const getDefaultOptions = type => getType(type).getDefaultOptions();\n\nexport const validateTypeConstraints = async (field, record, context) => await getType(field.type).validateTypeConstraints(field, record, context);\n\nexport const detectType = (value) => {\n if (isString(value)) return string;\n if (isBoolean(value)) return bool;\n if (isNumber(value)) return number;\n if (isDate(value)) return datetime;\n if (isArray(value)) return array(detectType(value[0]));\n if (isObject(value)\n && has('key')(value)\n && has('value')(value)) return reference;\n if (isObject(value)\n && has('relativePath')(value)\n && has('size')(value)) return file;\n\n throw new BadRequestError(`cannot determine type: ${JSON.stringify(value)}`);\n};\n","import { clone, find, split } from 'lodash/fp';\nimport { joinKey, $ } from '../common';\n// 5 minutes\nexport const tempCodeExpiryLength = 5 * 60 * 1000;\n\nexport const AUTH_FOLDER = '/.auth';\nexport const USERS_LIST_FILE = joinKey(AUTH_FOLDER, 'users.json');\nexport const userAuthFile = username => joinKey(AUTH_FOLDER, `auth_${username}.json`);\nexport const USERS_LOCK_FILE = joinKey(AUTH_FOLDER, 'users_lock');\nexport const ACCESS_LEVELS_FILE = joinKey(AUTH_FOLDER, 'access_levels.json');\nexport const ACCESS_LEVELS_LOCK_FILE = joinKey(AUTH_FOLDER, 'access_levels_lock');\n\nexport const permissionTypes = {\n CREATE_RECORD: 'create record',\n UPDATE_RECORD: 'update record',\n READ_RECORD: 'read record',\n DELETE_RECORD: 'delete record',\n READ_INDEX: 'read index',\n MANAGE_INDEX: 'manage index',\n MANAGE_COLLECTION: 'manage collection',\n WRITE_TEMPLATES: 'write templates',\n CREATE_USER: 'create user',\n SET_PASSWORD: 'set password',\n CREATE_TEMPORARY_ACCESS: 'create temporary access',\n ENABLE_DISABLE_USER: 'enable or disable user',\n WRITE_ACCESS_LEVELS: 'write access levels',\n LIST_USERS: 'list users',\n LIST_ACCESS_LEVELS: 'list access levels',\n EXECUTE_ACTION: 'execute action',\n SET_USER_ACCESS_LEVELS: 'set user access levels',\n};\n\nexport const getUserByName = (users, name) => $(users, [\n find(u => u.name.toLowerCase() === name.toLowerCase()),\n]);\n\nexport const stripUserOfSensitiveStuff = (user) => {\n const stripped = clone(user);\n delete stripped.tempCode;\n return stripped;\n};\n\nexport const parseTemporaryCode = fullCode => $(fullCode, [\n split(':'),\n parts => ({\n id: parts[1],\n code: parts[2],\n }),\n]);\n","import { values, includes, some } from 'lodash/fp';\nimport { permissionTypes } from './authCommon';\nimport {\n $, isNothing, apiWrapperSync, events,\n} from '../common';\nimport { getNodeByKeyOrNodeKey, isNode } from '../templateApi/hierarchy';\nimport { alwaysAuthorized } from './permissions';\n\nexport const isAuthorized = app => (permissionType, resourceKey) => apiWrapperSync(\n app,\n events.authApi.isAuthorized,\n alwaysAuthorized,\n { resourceKey, permissionType },\n _isAuthorized, app, permissionType, resourceKey,\n);\n\nexport const _isAuthorized = (app, permissionType, resourceKey) => {\n if (!app.user) {\n return false;\n }\n\n const validType = $(permissionTypes, [\n values,\n includes(permissionType),\n ]);\n\n if (!validType) {\n return false;\n }\n\n const permMatchesResource = (userperm) => {\n const nodeKey = isNothing(resourceKey)\n ? null\n : isNode(app.hierarchy, resourceKey)\n ? getNodeByKeyOrNodeKey(\n app.hierarchy, resourceKey,\n ).nodeKey()\n : resourceKey;\n\n return (userperm.type === permissionType)\n && (\n isNothing(resourceKey)\n || nodeKey === userperm.nodeKey\n );\n };\n\n return $(app.user.permissions, [\n some(permMatchesResource),\n ]);\n};\n","import { permissionTypes } from './authCommon';\nimport { isAuthorized } from './isAuthorized';\n\nexport const temporaryAccessPermissions = () => ([{ type: permissionTypes.SET_PASSWORD }]);\n\nconst nodePermission = type => ({\n add: (nodeKey, accessLevel) => accessLevel.permissions.push({ type, nodeKey }),\n isAuthorized: resourceKey => app => isAuthorized(app)(type, resourceKey),\n isNode: true,\n get: nodeKey => ({ type, nodeKey }),\n});\n\nconst staticPermission = type => ({\n add: accessLevel => accessLevel.permissions.push({ type }),\n isAuthorized: app => isAuthorized(app)(type),\n isNode: false,\n get: () => ({ type }),\n});\n\nconst createRecord = nodePermission(permissionTypes.CREATE_RECORD);\n\nconst updateRecord = nodePermission(permissionTypes.UPDATE_RECORD);\n\nconst deleteRecord = nodePermission(permissionTypes.DELETE_RECORD);\n\nconst readRecord = nodePermission(permissionTypes.READ_RECORD);\n\nconst writeTemplates = staticPermission(permissionTypes.WRITE_TEMPLATES);\n\nconst createUser = staticPermission(permissionTypes.CREATE_USER);\n\nconst setPassword = staticPermission(permissionTypes.SET_PASSWORD);\n\nconst readIndex = nodePermission(permissionTypes.READ_INDEX);\n\nconst manageIndex = staticPermission(permissionTypes.MANAGE_INDEX);\n\nconst manageCollection = staticPermission(permissionTypes.MANAGE_COLLECTION);\n\nconst createTemporaryAccess = staticPermission(permissionTypes.CREATE_TEMPORARY_ACCESS);\n\nconst enableDisableUser = staticPermission(permissionTypes.ENABLE_DISABLE_USER);\n\nconst writeAccessLevels = staticPermission(permissionTypes.WRITE_ACCESS_LEVELS);\n\nconst listUsers = staticPermission(permissionTypes.LIST_USERS);\n\nconst listAccessLevels = staticPermission(permissionTypes.LIST_ACCESS_LEVELS);\n\nconst setUserAccessLevels = staticPermission(permissionTypes.SET_USER_ACCESS_LEVELS);\n\nconst executeAction = nodePermission(permissionTypes.EXECUTE_ACTION);\n\nexport const alwaysAuthorized = () => true;\n\nexport const permission = {\n createRecord,\n updateRecord,\n deleteRecord,\n readRecord,\n writeTemplates,\n createUser,\n setPassword,\n readIndex,\n createTemporaryAccess,\n enableDisableUser,\n writeAccessLevels,\n listUsers,\n listAccessLevels,\n manageIndex,\n manageCollection,\n executeAction,\n setUserAccessLevels,\n};\n","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6\n * Copyright (C) 2019 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.6\"\n/*!\n * lunr.utils\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().trim().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null. This token will not be passed to any downstream pipeline functions and will not be\n * added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2019 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.complete\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n","\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n }\n\n revLookup['-'.charCodeAt(0)] = 62\n revLookup['_'.charCodeAt(0)] = 63\n}\n\nexport function toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nexport function fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","\nexport function read (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexport function write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nexport default Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\nimport * as base64 from './base64'\nimport * as ieee754 from './ieee754'\nimport isArray from './isArray'\n\nexport var INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength()\nexport {_kMaxLength as kMaxLength};\nfunction typedArraySupport () {\n return true;\n // rollup issues\n // try {\n // var arr = new Uint8Array(1)\n // arr.__proto__ = {\n // __proto__: Uint8Array.prototype,\n // foo: function () { return 42 }\n // }\n // return arr.foo() === 42 && // typed array instances can be augmented\n // typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n // arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n // } catch (e) {\n // return false\n // }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nexport function Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n // Object.defineProperty(Buffer, Symbol.species, {\n // value: null,\n // configurable: true\n // })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nexport function SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nexport function isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","import {\n joinKey, keySep, getHashCode,\n} from '../common';\nimport { getLastPartInKey } from '../templateApi/hierarchy';\n\nexport const TRANSACTIONS_FOLDER = `${keySep}.transactions`;\nexport const LOCK_FILENAME = 'lock';\nexport const LOCK_FILE_KEY = joinKey(\n TRANSACTIONS_FOLDER, LOCK_FILENAME,\n);\nexport const idSep = '$';\n\nconst isOfType = typ => trans => trans.transactionType === typ;\n\nexport const CREATE_RECORD_TRANSACTION = 'create';\nexport const UPDATE_RECORD_TRANSACTION = 'update';\nexport const DELETE_RECORD_TRANSACTION = 'delete';\nexport const BUILD_INDEX_TRANSACTION = 'build';\n\nexport const isUpdate = isOfType(UPDATE_RECORD_TRANSACTION);\nexport const isDelete = isOfType(DELETE_RECORD_TRANSACTION);\nexport const isCreate = isOfType(CREATE_RECORD_TRANSACTION);\nexport const isBuildIndex = isOfType(BUILD_INDEX_TRANSACTION);\n\nexport const keyToFolderName = nodeKey => getHashCode(nodeKey);\n\nexport const getTransactionId = (recordId, transactionType, uniqueId) => \n `${recordId}${idSep}${transactionType}${idSep}${uniqueId}`;\n\nexport const buildIndexFolder = '.BUILD-';\nexport const nodeKeyHashFromBuildFolder = folder => folder.replace(buildIndexFolder, '');\n\nexport const isBuildIndexFolder = key => getLastPartInKey(key).startsWith(buildIndexFolder);\n\nexport const IndexNodeKeyFolder = indexNodeKey => joinKey(\n TRANSACTIONS_FOLDER,\n buildIndexFolder + keyToFolderName(indexNodeKey),\n);\n\nexport const IndexNodeKeyBatchFolder = (indexNodeKey, count) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), Math.floor(count / BUILDINDEX_BATCH_COUNT).toString());\n\nexport const IndexShardKeyFolder = (indexNodeKey, indexShardKey) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), indexShardKey);\n\nexport const BUILDINDEX_BATCH_COUNT = 1000;\nexport const timeoutMilliseconds = 30 * 1000; // 30 secs\nexport const maxLockRetries = 1;\n","import { each, find } from 'lodash';\nimport { map, max, constant } from 'lodash/fp';\nimport {\n switchCase, defaultCase, joinKey,\n $, isNothing, isSomething,\n} from '../common';\nimport {\n isIndex, isRoot, isSingleRecord, isCollectionRecord,\n isRecord, isaggregateGroup,\n getFlattenedHierarchy,\n} from './hierarchy';\nimport { all } from '../types';\nimport { BadRequestError } from '../common/errors';\n\nexport const createNodeErrors = {\n indexCannotBeParent: 'Index template cannot be a parent',\n allNonRootNodesMustHaveParent: 'Only the root node may have no parent',\n indexParentMustBeRecordOrRoot: 'An index may only have a record or root as a parent',\n aggregateParentMustBeAnIndex: 'aggregateGroup parent must be an index',\n};\n\nconst pathRegxMaker = node => () => node.nodeKey().replace(/{id}/g, '[a-zA-Z0-9_-]+');\n\nconst nodeKeyMaker = node => () => switchCase(\n\n [n => isRecord(n) && !isSingleRecord(n),\n n => joinKey(\n node.parent().nodeKey(),\n node.collectionName,\n `${n.nodeId}-{id}`,\n )],\n\n [isRoot,\n constant('/')],\n\n [defaultCase,\n n => joinKey(node.parent().nodeKey(), n.name)],\n\n)(node);\n\n\nconst validate = parent => (node) => {\n if (isIndex(node)\n && isSomething(parent)\n && !isRoot(parent)\n && !isRecord(parent)) {\n throw new BadRequestError(createNodeErrors.indexParentMustBeRecordOrRoot);\n }\n\n if (isaggregateGroup(node)\n && isSomething(parent)\n && !isIndex(parent)) {\n throw new BadRequestError(createNodeErrors.aggregateParentMustBeAnIndex);\n }\n\n if (isNothing(parent) && !isRoot(node)) { throw new BadRequestError(createNodeErrors.allNonRootNodesMustHaveParent); }\n\n return node;\n};\n\nconst construct = parent => (node) => {\n node.nodeKey = nodeKeyMaker(node);\n node.pathRegx = pathRegxMaker(node);\n node.parent = constant(parent);\n node.isRoot = () => isNothing(parent)\n && node.name === 'root'\n && node.type === 'root';\n if (isCollectionRecord(node)) {\n node.collectionNodeKey = () => joinKey(\n parent.nodeKey(), node.collectionName,\n );\n node.collectionPathRegx = () => joinKey(\n parent.pathRegx(), node.collectionName,\n );\n }\n return node;\n};\n\nconst addToParent = (obj) => {\n const parent = obj.parent();\n if (isSomething(parent)) {\n if (isIndex(obj))\n // Q: why are indexes not children ?\n // A: because they cannot have children of their own.\n { parent.indexes.push(obj); } else if (isaggregateGroup(obj)) { parent.aggregateGroups.push(obj); } else { parent.children.push(obj); }\n\n if (isRecord(obj)) {\n const defaultIndex = find(\n parent.indexes,\n i => i.name === `${parent.name}_index`,\n );\n if (defaultIndex) {\n defaultIndex.allowedRecordNodeIds.push(obj.nodeId);\n }\n }\n }\n return obj;\n};\n\nexport const constructNode = (parent, obj) => $(obj, [\n construct(parent),\n validate(parent),\n addToParent,\n]);\n\nconst getNodeId = (parentNode) => {\n // this case is handled better elsewhere\n if (!parentNode) return null;\n const findRoot = n => (isRoot(n) ? n : findRoot(n.parent()));\n const root = findRoot(parentNode);\n\n return ($(root, [\n getFlattenedHierarchy,\n map(n => n.nodeId),\n max]) + 1);\n};\n\nexport const constructHierarchy = (node, parent) => {\n construct(parent)(node);\n if (node.indexes) {\n each(node.indexes,\n child => constructHierarchy(child, node));\n }\n if (node.aggregateGroups) {\n each(node.aggregateGroups,\n child => constructHierarchy(child, node));\n }\n if (node.children && node.children.length > 0) {\n each(node.children,\n child => constructHierarchy(child, node));\n }\n if (node.fields) {\n each(node.fields,\n f => each(f.typeOptions, (val, key) => {\n const def = all[f.type].optionDefinitions[key];\n if (!def) {\n // unknown typeOption\n delete f.typeOptions[key];\n } else {\n f.typeOptions[key] = def.parse(val);\n }\n }));\n }\n return node;\n};\n\n\nexport const getNewRootLevel = () => construct()({\n name: 'root',\n type: 'root',\n children: [],\n pathMaps: [],\n indexes: [],\n nodeId: 0,\n});\n\nconst _getNewRecordTemplate = (parent, name, createDefaultIndex, isSingle) => {\n const node = constructNode(parent, {\n name,\n type: 'record',\n fields: [],\n children: [],\n validationRules: [],\n nodeId: getNodeId(parent),\n indexes: [],\n allidsShardFactor: isRecord(parent) ? 1 : 64,\n collectionName: '',\n isSingle,\n });\n\n if (createDefaultIndex) {\n const defaultIndex = getNewIndexTemplate(parent);\n defaultIndex.name = `${name}_index`;\n defaultIndex.allowedRecordNodeIds.push(node.nodeId);\n }\n\n return node;\n};\n\nexport const getNewRecordTemplate = (parent, name = '', createDefaultIndex = true) => _getNewRecordTemplate(parent, name, createDefaultIndex, false);\n\nexport const getNewSingleRecordTemplate = parent => _getNewRecordTemplate(parent, '', false, true);\n\nexport const getNewIndexTemplate = (parent, type = 'ancestor') => constructNode(parent, {\n name: '',\n type: 'index',\n map: 'return {...record};',\n filter: '',\n indexType: type,\n getShardName: '',\n getSortKey: 'record.id',\n aggregateGroups: [],\n allowedRecordNodeIds: [],\n nodeId: getNodeId(parent),\n});\n\nexport const getNewAggregateGroupTemplate = index => constructNode(index, {\n name: '',\n type: 'aggregateGroup',\n groupBy: '',\n aggregates: [],\n condition: '',\n nodeId: getNodeId(index),\n});\n\nexport const getNewAggregateTemplate = (set) => {\n const aggregatedValue = {\n name: '',\n aggregatedValue: '',\n };\n set.aggregates.push(aggregatedValue);\n return aggregatedValue;\n};\n\nexport default {\n getNewRootLevel,\n getNewRecordTemplate,\n getNewIndexTemplate,\n createNodeErrors,\n constructHierarchy,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n};\n","import {\n some, map, filter, keys, includes,\n countBy, flatten,\n} from 'lodash/fp';\nimport {\n isSomething, $,\n isNonEmptyString,\n isNothingOrEmpty,\n isNothing,\n} from '../common';\nimport { all, getDefaultOptions } from '../types';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { BadRequestError } from '../common/errors';\n\nexport const fieldErrors = {\n AddFieldValidationFailed: 'Add field validation: ',\n};\n\nexport const allowedTypes = () => keys(all);\n\nexport const getNewField = type => ({\n name: '', // how field is referenced internally\n type,\n typeOptions: getDefaultOptions(type),\n label: '', // how field is displayed\n getInitialValue: 'default', // function that gets value when initially created\n getUndefinedValue: 'default', // function that gets value when field undefined on record\n});\n\nconst fieldRules = allFields => [\n makerule('name', 'field name is not set',\n f => isNonEmptyString(f.name)),\n makerule('type', 'field type is not set',\n f => isNonEmptyString(f.type)),\n makerule('label', 'field label is not set',\n f => isNonEmptyString(f.label)),\n makerule('getInitialValue', 'getInitialValue function is not set',\n f => isNonEmptyString(f.getInitialValue)),\n makerule('getUndefinedValue', 'getUndefinedValue function is not set',\n f => isNonEmptyString(f.getUndefinedValue)),\n makerule('name', 'field name is duplicated',\n f => isNothingOrEmpty(f.name)\n || countBy('name')(allFields)[f.name] === 1),\n makerule('type', 'type is unknown',\n f => isNothingOrEmpty(f.type)\n || some(t => f.type === t)(allowedTypes())),\n];\n\nconst typeOptionsRules = (field) => {\n const type = all[field.type];\n if (isNothing(type)) return [];\n\n const def = optName => type.optionDefinitions[optName];\n\n return $(field.typeOptions, [\n keys,\n filter(o => isSomething(def(o))\n && isSomething(def(o).isValid)),\n map(o => makerule(\n `typeOptions.${o}`,\n `${def(o).requirementDescription}`,\n field => def(o).isValid(field.typeOptions[o]),\n )),\n ]);\n};\n\nexport const validateField = allFields => (field) => {\n const everySingleField = includes(field)(allFields) ? allFields : [...allFields, field];\n return applyRuleSet([...fieldRules(everySingleField), ...typeOptionsRules(field)])(field);\n};\n\nexport const validateAllFields = recordNode => $(recordNode.fields, [\n map(validateField(recordNode.fields)),\n flatten,\n]);\n\nexport const addField = (recordTemplate, field) => {\n if (isNothingOrEmpty(field.label)) {\n field.label = field.name;\n }\n const validationMessages = validateField([...recordTemplate.fields, field])(field);\n if (validationMessages.length > 0) {\n const errors = map(m => m.error)(validationMessages);\n throw new BadRequestError(`${fieldErrors.AddFieldValidationFailed} ${errors.join(', ')}`);\n }\n recordTemplate.fields.push(field);\n};\n","import { isNumber, isBoolean, defaultCase } from 'lodash/fp';\nimport { switchCase } from '../common';\n\nexport const getNewRecordValidationRule = (invalidFields,\n messageWhenInvalid,\n expressionWhenValid) => ({\n invalidFields, messageWhenInvalid, expressionWhenValid,\n});\n\nconst getStaticValue = switchCase(\n [isNumber, v => v.toString()],\n [isBoolean, v => v.toString()],\n [defaultCase, v => `'${v}'`],\n);\n\nexport const commonRecordValidationRules = ({\n\n fieldNotEmpty: fieldName => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} is empty`,\n `!_.isEmpty(record['${fieldName}'])`,\n ),\n\n fieldBetween: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be between ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} && record['${fieldName}'] <= ${getStaticValue(max)} `,\n ),\n\n fieldGreaterThan: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be greater than ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} `,\n ),\n});\n\nexport const addRecordValidationRule = recordNode => rule => recordNode.validationRules.push(rule);\n","\nexport const createTrigger = () => ({\n actionName: '',\n eventName: '',\n // function, has access to event context,\n // returns object that is used as parameter to action\n // only used if triggered by event\n optionsCreator: '',\n // action runs if true,\n // has access to event context\n condition: '',\n});\n\nexport const createAction = () => ({\n name: '',\n behaviourSource: '',\n // name of function in actionSource\n behaviourName: '',\n // parameter passed into behaviour.\n // any other parms passed at runtime e.g.\n // by trigger, or manually, will be merged into this\n initialOptions: {},\n});\n","import { flatten, map, isEmpty } from 'lodash/fp';\nimport { compileCode } from '@nx-js/compiler-util';\nimport {\n isNonEmptyString, \n executesWithoutException, $, \n} from '../common';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\n\nconst aggregateRules = [\n makerule('name', 'choose a name for the aggregate',\n a => isNonEmptyString(a.name)),\n makerule('aggregatedValue', 'aggregatedValue does not compile',\n a => isEmpty(a.aggregatedValue)\n || executesWithoutException(\n () => compileCode(a.aggregatedValue),\n )),\n];\n\nexport const validateAggregate = aggregate => applyRuleSet(aggregateRules)(aggregate);\n\nexport const validateAllAggregates = all => $(all, [\n map(validateAggregate),\n flatten,\n]);\n","import {\n filter, union, constant,\n map, flatten, every, uniqBy,\n some, includes, isEmpty, has\n} from 'lodash/fp';\nimport { compileExpression, compileCode } from '@nx-js/compiler-util';\nimport {\n $, isSomething, switchCase,\n anyTrue, isNonEmptyArray, executesWithoutException,\n isNonEmptyString, defaultCase,\n} from '../common';\nimport {\n isRecord, isRoot, isaggregateGroup,\n isIndex, getFlattenedHierarchy,\n} from './hierarchy';\nimport { eventsList } from '../common/events';\nimport { validateAllFields } from './fields';\nimport {\n applyRuleSet, makerule, stringNotEmpty,\n validationError,\n} from '../common/validationCommon';\nimport { indexRuleSet } from './indexes';\nimport { validateAllAggregates } from './validateAggregate';\n\nexport const ruleSet = (...sets) => constant(flatten([...sets]));\n\nconst commonRules = [\n makerule('name', 'node name is not set',\n node => stringNotEmpty(node.name)),\n makerule('type', 'node type not recognised',\n anyTrue(isRecord, isRoot, isIndex, isaggregateGroup)),\n];\n\nconst recordRules = [\n makerule('fields', 'no fields have been added to the record',\n node => isNonEmptyArray(node.fields)),\n makerule('validationRules', \"validation rule is missing a 'messageWhenValid' member\",\n node => every(r => has('messageWhenInvalid')(r))(node.validationRules)),\n makerule('validationRules', \"validation rule is missing a 'expressionWhenValid' member\",\n node => every(r => has('expressionWhenValid')(r))(node.validationRules)),\n];\n\n\nconst aggregateGroupRules = [\n makerule('condition', 'condition does not compile',\n a => isEmpty(a.condition)\n || executesWithoutException(\n () => compileExpression(a.condition),\n )),\n];\n\nconst getRuleSet = node => switchCase(\n\n [isRecord, ruleSet(\n commonRules,\n recordRules,\n )],\n\n [isIndex, ruleSet(\n commonRules,\n indexRuleSet,\n )],\n\n [isaggregateGroup, ruleSet(\n commonRules,\n aggregateGroupRules,\n )],\n\n [defaultCase, ruleSet(commonRules, [])],\n)(node);\n\nexport const validateNode = node => applyRuleSet(getRuleSet(node))(node);\n\nexport const validateAll = (appHierarchy) => {\n const flattened = getFlattenedHierarchy(\n appHierarchy,\n );\n\n const duplicateNameRule = makerule(\n 'name', 'node names must be unique under shared parent',\n n => filter(f => f.parent() === n.parent()\n && f.name === n.name)(flattened).length === 1,\n );\n\n const duplicateNodeKeyErrors = $(flattened, [\n map(n => applyRuleSet([duplicateNameRule])(n)),\n filter(isSomething),\n flatten,\n ]);\n\n const fieldErrors = $(flattened, [\n filter(isRecord),\n map(validateAllFields),\n flatten,\n ]);\n\n const aggregateErrors = $(flattened, [\n filter(isaggregateGroup),\n map(s => validateAllAggregates(\n s.aggregates,\n )),\n flatten,\n ]);\n\n return $(flattened, [\n map(validateNode),\n flatten,\n union(duplicateNodeKeyErrors),\n union(fieldErrors),\n union(aggregateErrors),\n ]);\n};\n\nconst actionRules = [\n makerule('name', 'action must have a name',\n a => isNonEmptyString(a.name)),\n makerule('behaviourName', 'must supply a behaviour name to the action',\n a => isNonEmptyString(a.behaviourName)),\n makerule('behaviourSource', 'must supply a behaviour source for the action',\n a => isNonEmptyString(a.behaviourSource)),\n];\n\nconst duplicateActionRule = makerule('', 'action name must be unique', () => {});\n\nconst validateAction = action => applyRuleSet(actionRules)(action);\n\n\nexport const validateActions = (allActions) => {\n const duplicateActions = $(allActions, [\n filter(a => filter(a2 => a2.name === a.name)(allActions).length > 1),\n map(a => validationError(duplicateActionRule, a)),\n ]);\n\n const errors = $(allActions, [\n map(validateAction),\n flatten,\n union(duplicateActions),\n uniqBy('name'),\n ]);\n\n return errors;\n};\n\nconst triggerRules = actions => ([\n makerule('actionName', 'must specify an action',\n t => isNonEmptyString(t.actionName)),\n makerule('eventName', 'must specify and event',\n t => isNonEmptyString(t.eventName)),\n makerule('actionName', 'specified action not supplied',\n t => !t.actionName\n || some(a => a.name === t.actionName)(actions)),\n makerule('eventName', 'invalid Event Name',\n t => !t.eventName\n || includes(t.eventName)(eventsList)),\n makerule('optionsCreator', 'Options Creator does not compile - check your expression',\n (t) => {\n if (!t.optionsCreator) return true;\n try {\n compileCode(t.optionsCreator);\n return true;\n } catch (_) { return false; }\n }),\n makerule('condition', 'Trigger condition does not compile - check your expression',\n (t) => {\n if (!t.condition) return true;\n try {\n compileExpression(t.condition);\n return true;\n } catch (_) { return false; }\n }),\n]);\n\nexport const validateTrigger = (trigger, allActions) => {\n const errors = applyRuleSet(triggerRules(allActions))(trigger);\n\n return errors;\n};\n\nexport const validateTriggers = (triggers, allActions) => $(triggers, [\n map(t => validateTrigger(t, allActions)),\n flatten,\n]);\n","import { appDefinitionFile } from '../common';\nimport { constructHierarchy } from './createNodes';\n\nexport const getApplicationDefinition = datastore => async () => {\n const exists = await datastore.exists(appDefinitionFile);\n\n if (!exists) throw new Error('Application definition does not exist');\n\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = constructHierarchy(\n appDefinition.hierarchy,\n );\n return appDefinition;\n};\n","import { join } from 'lodash';\nimport { permission } from '../authApi/permissions';\nimport { appDefinitionFile } from '../common';\nimport { validateAll } from './validate';\nimport { apiWrapper } from '../common/apiWrapper';\nimport { events } from '../common/events';\n\nexport const saveApplicationHierarchy = app => async hierarchy => apiWrapper(\n app,\n events.templateApi.saveApplicationHierarchy,\n permission.writeTemplates.isAuthorized,\n { hierarchy },\n _saveApplicationHierarchy, app.datastore, hierarchy,\n);\n\n\nexport const _saveApplicationHierarchy = async (datastore, hierarchy) => {\n const validationErrors = await validateAll(hierarchy);\n if (validationErrors.length > 0) {\n throw new Error(`Hierarchy is invalid: ${join(\n validationErrors.map(e => `${e.item.nodeKey ? e.item.nodeKey() : ''} : ${e.error}`),\n ',',\n )}`);\n }\n\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = hierarchy;\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n await datastore.createFolder('/.config');\n const appDefinition = { actions: [], triggers: [], hierarchy };\n await datastore.createJson(appDefinitionFile, appDefinition);\n }\n};\n","import { join } from 'lodash';\nimport { map } from 'lodash/fp';\nimport { appDefinitionFile } from '../common';\nimport { validateTriggers, validateActions } from './validate';\nimport { apiWrapper } from '../common/apiWrapper';\nimport { events } from '../common/events';\nimport { permission } from '../authApi/permissions';\nimport { BadRequestError } from '../common/errors';\n\nexport const saveActionsAndTriggers = app => async (actions, triggers) => apiWrapper(\n app,\n events.templateApi.saveActionsAndTriggers,\n permission.writeTemplates.isAuthorized,\n { actions, triggers },\n _saveActionsAndTriggers, app.datastore, actions, triggers,\n);\n\nexport const _saveActionsAndTriggers = async (datastore, actions, triggers) => {\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.actions = actions;\n appDefinition.triggers = triggers;\n\n const actionValidErrs = map(e => e.error)(validateActions(actions));\n\n if (actionValidErrs.length > 0) {\n throw new BadRequestError(`Actions are invalid: ${join(actionValidErrs, ', ')}`);\n }\n\n const triggerValidErrs = map(e => e.error)(validateTriggers(triggers, actions));\n\n if (triggerValidErrs.length > 0) {\n throw new BadRequestError(`Triggers are invalid: ${join(triggerValidErrs, ', ')}`);\n }\n\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n throw new BadRequestError('Cannot save actions: Application definition does not exist');\n }\n};\n","import {\n getNewRootLevel,\n getNewRecordTemplate, getNewIndexTemplate,\n createNodeErrors, constructHierarchy,\n getNewAggregateGroupTemplate, getNewSingleRecordTemplate,\n getNewAggregateTemplate, constructNode,\n}\n from './createNodes';\nimport {\n getNewField, validateField,\n addField, fieldErrors,\n} from './fields';\nimport {\n getNewRecordValidationRule, commonRecordValidationRules,\n addRecordValidationRule,\n} from './recordValidationRules';\nimport { createAction, createTrigger } from './createActions';\nimport {\n validateTriggers, validateTrigger, validateNode,\n validateActions, validateAll,\n} from './validate';\nimport { getApplicationDefinition } from './getApplicationDefinition';\nimport { saveApplicationHierarchy } from './saveApplicationHierarchy';\nimport { saveActionsAndTriggers } from './saveActionsAndTriggers';\nimport { all } from '../types';\nimport { getBehaviourSources } from \"./getBehaviourSources\";\n\nconst api = app => ({\n\n getApplicationDefinition: getApplicationDefinition(app.datastore),\n saveApplicationHierarchy: saveApplicationHierarchy(app),\n saveActionsAndTriggers: saveActionsAndTriggers(app),\n getBehaviourSources: () => getBehaviourSources(app.datastore),\n getNewRootLevel,\n constructNode,\n getNewIndexTemplate,\n getNewRecordTemplate,\n getNewField,\n validateField,\n addField,\n fieldErrors,\n getNewRecordValidationRule,\n commonRecordValidationRules,\n addRecordValidationRule,\n createAction,\n createTrigger,\n validateActions,\n validateTrigger,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n constructHierarchy,\n getNewSingleRecordTemplate,\n allTypes: all,\n validateNode,\n validateAll,\n validateTriggers,\n});\n\n\nexport const getTemplateApi = app => api(app);\n\nexport const errors = createNodeErrors;\n\nexport default getTemplateApi;\n","\nexport const getBehaviourSources = async (datastore) => {\n await datastore.loadFile('/.config/behaviourSources.js');\n};\n","import { map } from 'lodash/fp';\nimport {\n USERS_LIST_FILE,\n stripUserOfSensitiveStuff,\n} from './authCommon';\nimport { $, apiWrapper, events } from '../common';\nimport { permission } from './permissions';\n\nexport const getUsers = app => async () => apiWrapper(\n app,\n events.authApi.getUsers,\n permission.listUsers.isAuthorized,\n {},\n _getUsers, app,\n);\n\nexport const _getUsers = async app => $(await app.datastore.loadJson(USERS_LIST_FILE), [\n map(stripUserOfSensitiveStuff),\n]);\n","import { ACCESS_LEVELS_FILE } from './authCommon';\nimport { apiWrapper, events } from '../common';\nimport { permission } from './permissions';\n\nexport const loadAccessLevels = app => async () => apiWrapper(\n app,\n events.authApi.loadAccessLevels,\n permission.listAccessLevels.isAuthorized,\n {},\n _loadAccessLevels, app,\n);\n\nexport const _loadAccessLevels = async app => await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n","import {\n find, filter, some,\n map, flatten,\n} from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { _getUsers } from './getUsers';\nimport {\n getUserByName, userAuthFile,\n parseTemporaryCode,\n} from './authCommon';\nimport { _loadAccessLevels } from './loadAccessLevels';\nimport {\n isNothingOrEmpty, $, apiWrapper, events,\n} from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nconst dummyHash = '$argon2i$v=19$m=4096,t=3,p=1$UZRo409UYBGjHJS3CV6Uxw$rU84qUqPeORFzKYmYY0ceBLDaPO+JWSH4PfNiKXfIKk';\n\nexport const authenticate = app => async (username, password) => apiWrapper(\n app,\n events.authApi.authenticate,\n alwaysAuthorized,\n { username, password },\n _authenticate, app, username, password,\n);\n\nexport const _authenticate = async (app, username, password) => {\n if (isNothingOrEmpty(username) || isNothingOrEmpty(password)) { return null; }\n\n const allUsers = await _getUsers(app);\n let user = getUserByName(\n allUsers,\n username,\n );\n\n const notAUser = 'not-a-user';\n // continue with non-user - so time to verify remains consistent\n // with verification of a valid user\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(username),\n );\n } catch (_) {\n userAuth = { accessLevels: [], passwordHash: dummyHash };\n }\n\n const permissions = await buildUserPermissions(app, user.accessLevels);\n\n const verified = await app.crypto.verify(\n userAuth.passwordHash,\n password,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user, permissions, temp: false, isUser: true,\n }\n : null;\n};\n\nexport const authenticateTemporaryAccess = app => async (tempAccessCode) => {\n if (isNothingOrEmpty(tempAccessCode)) { return null; }\n\n const temp = parseTemporaryCode(tempAccessCode);\n let user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n const notAUser = 'not-a-user';\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n } catch (e) {\n userAuth = {\n temporaryAccessHash: dummyHash,\n temporaryAccessExpiryEpoch: (await app.getEpochTime() + 10000),\n };\n }\n\n if (userAuth.temporaryAccessExpiryEpoch < await app.getEpochTime()) { user = notAUser; }\n\n const tempCode = !temp.code ? generate() : temp.code;\n const verified = await app.crypto.verify(\n userAuth.temporaryAccessHash,\n tempCode,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user,\n permissions: [],\n temp: true,\n isUser: true,\n }\n : null;\n};\n\nexport const buildUserPermissions = async (app, userAccessLevels) => {\n const allAccessLevels = await _loadAccessLevels(app);\n\n return $(allAccessLevels.levels, [\n filter(l => some(ua => l.name === ua)(userAccessLevels)),\n map(l => l.permissions),\n flatten,\n ]);\n};\n","import { generate } from 'shortid';\nimport {\n tempCodeExpiryLength, USERS_LOCK_FILE,\n USERS_LIST_FILE, userAuthFile,\n getUserByName,\n} from './authCommon';\nimport {\n getLock, isNolock,\n releaseLock,\n} from '../common/lock';\nimport { apiWrapper, events } from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nexport const createTemporaryAccess = app => async userName => apiWrapper(\n app,\n events.authApi.createTemporaryAccess,\n alwaysAuthorized,\n { userName },\n _createTemporaryAccess, app, userName,\n);\n\nexport const _createTemporaryAccess = async (app, userName) => {\n const tempCode = await getTemporaryCode(app);\n\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create temporary access, could not get lock - try again'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const user = getUserByName(users, userName);\n user.temporaryAccessId = tempCode.temporaryAccessId;\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n } finally {\n await releaseLock(app, lock);\n }\n\n const userAuth = await app.datastore.loadJson(\n userAuthFile(userName),\n );\n userAuth.temporaryAccessHash = tempCode.temporaryAccessHash;\n\n userAuth.temporaryAccessExpiryEpoch = tempCode.temporaryAccessExpiryEpoch;\n\n await app.datastore.updateJson(\n userAuthFile(userName),\n userAuth,\n );\n\n return tempCode.tempCode;\n};\n\nexport const getTemporaryCode = async (app) => {\n const tempCode = generate()\n + generate()\n + generate()\n + generate();\n\n const tempId = generate();\n\n return {\n temporaryAccessHash: await app.crypto.hash(\n tempCode,\n ),\n temporaryAccessExpiryEpoch:\n (await app.getEpochTime()) + tempCodeExpiryLength,\n tempCode: `tmp:${tempId}:${tempCode}`,\n temporaryAccessId: tempId,\n };\n};\n\nexport const looksLikeTemporaryCode = code => code.startsWith('tmp:');\n","import {\n map, uniqWith,\n flatten, filter,\n} from 'lodash/fp';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport {\n $, insensitiveEquals, apiWrapper, events,\n isNonEmptyString, all,\n} from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nconst userRules = allUsers => [\n makerule('name', 'username must be set',\n u => isNonEmptyString(u.name)),\n makerule('accessLevels', 'user must have at least one access level',\n u => u.accessLevels.length > 0),\n makerule('name', 'username must be unique',\n u => filter(u2 => insensitiveEquals(u2.name, u.name))(allUsers).length === 1),\n makerule('accessLevels', 'access levels must only contain stings',\n u => all(isNonEmptyString)(u.accessLevels)),\n];\n\nexport const validateUser = () => (allusers, user) => applyRuleSet(userRules(allusers))(user);\n\nexport const validateUsers = app => allUsers => apiWrapper(\n app,\n events.authApi.validateUsers,\n alwaysAuthorized,\n { allUsers },\n _validateUsers, app, allUsers,\n);\n\nexport const _validateUsers = (app, allUsers) => $(allUsers, [\n map(l => validateUser(app)(allUsers, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n","import { apiWrapperSync, events } from '../common';\nimport { permission } from './permissions';\n\nexport const getNewUser = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUser,\n permission.createUser.isAuthorized,\n {},\n _getNewUser, app,\n);\n\nexport const _getNewUser = () => ({\n name: '',\n accessLevels: [],\n enabled: true,\n temporaryAccessId: '',\n});\n\nexport const getNewUserAuth = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUserAuth,\n permission.createUser.isAuthorized,\n {},\n _getNewUserAuth, app,\n);\n\nexport const _getNewUserAuth = () => ({\n passwordHash: '',\n temporaryAccessHash: '',\n temporaryAccessExpiryEpoch: 0,\n});\n","import { find } from 'lodash/fp';\nimport { userAuthFile, parseTemporaryCode } from './authCommon';\nimport {\n isSomething, $, apiWrapper, apiWrapperSync, events,\n} from '../common';\nimport { _getUsers } from './getUsers';\nimport { alwaysAuthorized } from './permissions';\n\nexport const isValidPassword = app => password => apiWrapperSync(\n app,\n events.authApi.isValidPassword,\n alwaysAuthorized,\n { password },\n _isValidPassword, app, password,\n);\n\nexport const _isValidPassword = (app, password) => scorePassword(password).score > 30;\n\nexport const changeMyPassword = app => async (currentPw, newpassword) => apiWrapper(\n app,\n events.authApi.changeMyPassword,\n alwaysAuthorized,\n { currentPw, newpassword },\n _changeMyPassword, app, currentPw, newpassword,\n);\n\nexport const _changeMyPassword = async (app, currentPw, newpassword) => {\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(app.user.name),\n );\n\n if (isSomething(existingAuth.passwordHash)) {\n const verified = await app.crypto.verify(\n existingAuth.passwordHash,\n currentPw,\n );\n\n if (verified) {\n await await doSet(\n app, existingAuth,\n app.user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nexport const setPasswordFromTemporaryCode = app => async (tempCode, newpassword) => apiWrapper(\n app,\n events.authApi.setPasswordFromTemporaryCode,\n alwaysAuthorized,\n { tempCode, newpassword },\n _setPasswordFromTemporaryCode, app, tempCode, newpassword,\n);\n\n\nexport const _setPasswordFromTemporaryCode = async (app, tempCode, newpassword) => {\n const currentTime = await app.getEpochTime();\n\n const temp = parseTemporaryCode(tempCode);\n\n const user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n if (!user) { return false; }\n\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n\n if (isSomething(existingAuth.temporaryAccessHash)\n && existingAuth.temporaryAccessExpiryEpoch > currentTime) {\n const verified = await app.crypto.verify(\n existingAuth.temporaryAccessHash,\n temp.code,\n );\n\n if (verified) {\n await doSet(\n app, existingAuth,\n user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nconst doSet = async (app, auth, username, newpassword) => {\n auth.temporaryAccessHash = '';\n auth.temporaryAccessExpiryEpoch = 0;\n auth.passwordHash = await app.crypto.hash(\n newpassword,\n );\n await app.datastore.updateJson(\n userAuthFile(username),\n auth,\n );\n};\n\nexport const scorePassword = app => password => apiWrapperSync(\n app,\n events.authApi.scorePassword,\n alwaysAuthorized,\n { password },\n _scorePassword, password,\n);\n\nexport const _scorePassword = (password) => {\n // from https://stackoverflow.com/questions/948172/password-strength-meter\n // thank you https://stackoverflow.com/users/46617/tm-lv\n\n let score = 0;\n if (!password) { return score; }\n\n // award every unique letter until 5 repetitions\n const letters = new Object();\n for (let i = 0; i < password.length; i++) {\n letters[password[i]] = (letters[password[i]] || 0) + 1;\n score += 5.0 / letters[password[i]];\n }\n\n // bonus points for mixing it up\n const variations = {\n digits: /\\d/.test(password),\n lower: /[a-z]/.test(password),\n upper: /[A-Z]/.test(password),\n nonWords: /\\W/.test(password),\n };\n\n let variationCount = 0;\n for (const check in variations) {\n variationCount += (variations[check] == true) ? 1 : 0;\n }\n score += (variationCount - 1) * 10;\n\n const strengthText = score > 80\n ? 'strong'\n : score > 60\n ? 'good'\n : score >= 30\n ? 'weak'\n : 'very weak';\n\n return {\n score: parseInt(score),\n strengthText,\n };\n};\n","import { join, some } from 'lodash/fp';\nimport { validateUser } from './validateUser';\nimport { getNewUserAuth } from './getNewUser';\nimport {\n getLock, isNolock, releaseLock, apiWrapper, events,\n insensitiveEquals, isNonEmptyString,\n} from '../common';\nimport {\n USERS_LOCK_FILE, stripUserOfSensitiveStuff,\n USERS_LIST_FILE, userAuthFile,\n} from './authCommon';\nimport { getTemporaryCode } from './createTemporaryAccess';\nimport { isValidPassword } from './setPassword';\nimport { permission } from './permissions';\nimport { BadRequestError } from '../common/errors';\n\nexport const createUser = app => async (user, password = null) => apiWrapper(\n app,\n events.authApi.createUser,\n permission.createUser.isAuthorized,\n { user, password },\n _createUser, app, user, password,\n);\n\nexport const _createUser = async (app, user, password = null) => {\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create user, could not get lock - try again'); }\n\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const userErrors = validateUser(app)([...users, user], user);\n if (userErrors.length > 0) { throw new BadRequestError(`User is invalid. ${join('; ')(userErrors)}`); }\n\n const { auth, tempCode, temporaryAccessId } = await getAccess(\n app, password,\n );\n user.tempCode = tempCode;\n user.temporaryAccessId = temporaryAccessId;\n\n if (some(u => insensitiveEquals(u.name, user.name))(users)) { \n throw new BadRequestError('User already exists'); \n }\n\n users.push(\n stripUserOfSensitiveStuff(user),\n );\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n\n try {\n await app.datastore.createJson(\n userAuthFile(user.name),\n auth,\n );\n } catch (_) {\n await app.datastore.updateJson(\n userAuthFile(user.name),\n auth,\n );\n }\n\n await releaseLock(app, lock);\n\n return user;\n};\n\nconst getAccess = async (app, password) => {\n const auth = getNewUserAuth(app)();\n\n if (isNonEmptyString(password)) {\n if (isValidPassword(password)) {\n auth.passwordHash = await app.crypto.hash(password);\n auth.temporaryAccessHash = '';\n auth.temporaryAccessId = '';\n auth.temporaryAccessExpiryEpoch = 0;\n return { auth };\n }\n throw new BadRequestError('Password does not meet requirements');\n } else {\n const tempAccess = await getTemporaryCode(app);\n auth.temporaryAccessHash = tempAccess.temporaryAccessHash;\n auth.temporaryAccessExpiryEpoch = tempAccess.temporaryAccessExpiryEpoch;\n auth.passwordHash = '';\n return ({\n auth,\n tempCode: tempAccess.tempCode,\n temporaryAccessId: tempAccess.temporaryAccessId,\n });\n }\n};\n","import {\n getLock,\n isNolock, releaseLock,\n} from '../common/lock';\nimport { USERS_LOCK_FILE, USERS_LIST_FILE, getUserByName } from './authCommon';\nimport { apiWrapper, events } from '../common';\nimport { permission } from './permissions';\nimport { NotFoundError } from '../common/errors';\n\nexport const enableUser = app => async username => apiWrapper(\n app,\n events.authApi.enableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _enableUser, app, username,\n);\n\nexport const disableUser = app => async username => apiWrapper(\n app,\n events.authApi.disableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _disableUser, app, username,\n);\n\nexport const _enableUser = async (app, username) => await toggleUser(app, username, true);\n\nexport const _disableUser = async (app, username) => await toggleUser(app, username, false);\n\nconst toggleUser = async (app, username, enabled) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actionName = enabled ? 'enable' : 'disable';\n\n if (isNolock(lock)) { throw new Error(`Could not ${actionName} user - cannot get lock`); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user to ${actionName}`); }\n\n if (user.enabled === !enabled) {\n user.enabled = enabled;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n }\n } finally {\n releaseLock(app, lock);\n }\n};\n","import {\n values, includes, map, concat, isEmpty, uniqWith, some,\n flatten, filter,\n} from 'lodash/fp';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { permissionTypes } from './authCommon';\nimport {\n $, isSomething, insensitiveEquals,\n isNonEmptyString, apiWrapperSync, events,\n} from '../common';\nimport { getNode } from '../templateApi/hierarchy';\nimport { alwaysAuthorized } from './permissions';\n\nconst isAllowedType = t => $(permissionTypes, [\n values,\n includes(t),\n]);\n\nconst isRecordOrIndexType = t => some(p => p === t)([\n permissionTypes.CREATE_RECORD,\n permissionTypes.UPDATE_RECORD,\n permissionTypes.DELETE_RECORD,\n permissionTypes.READ_RECORD,\n permissionTypes.READ_INDEX,\n permissionTypes.EXECUTE_ACTION,\n]);\n\n\nconst permissionRules = app => ([\n makerule('type', 'type must be one of allowed types',\n p => isAllowedType(p.type)),\n makerule('nodeKey', 'record and index permissions must include a valid nodeKey',\n p => (!isRecordOrIndexType(p.type))\n || isSomething(getNode(app.hierarchy, p.nodeKey))),\n]);\n\nconst applyPermissionRules = app => applyRuleSet(permissionRules(app));\n\nconst accessLevelRules = allLevels => ([\n makerule('name', 'name must be set',\n l => isNonEmptyString(l.name)),\n makerule('name', 'access level names must be unique',\n l => isEmpty(l.name)\n || filter(a => insensitiveEquals(l.name, a.name))(allLevels).length === 1),\n]);\n\nconst applyLevelRules = allLevels => applyRuleSet(accessLevelRules(allLevels));\n\nexport const validateAccessLevel = app => (allLevels, level) => {\n const errs = $(level.permissions, [\n map(applyPermissionRules(app)),\n flatten,\n concat(\n applyLevelRules(allLevels)(level),\n ),\n ]);\n\n return errs;\n};\n\nexport const validateAccessLevels = app => allLevels => apiWrapperSync(\n app,\n events.authApi.validateAccessLevels,\n alwaysAuthorized,\n { allLevels },\n _validateAccessLevels, app, allLevels,\n);\n\nexport const _validateAccessLevels = (app, allLevels) => $(allLevels, [\n map(l => validateAccessLevel(app)(allLevels, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n","import { join, map } from 'lodash/fp';\nimport {\n getLock, releaseLock, $,\n isNolock, apiWrapper, events,\n} from '../common';\nimport {\n ACCESS_LEVELS_LOCK_FILE,\n ACCESS_LEVELS_FILE,\n} from './authCommon';\nimport { validateAccessLevels } from './validateAccessLevels';\nimport { permission } from './permissions';\n\nexport const saveAccessLevels = app => async accessLevels => apiWrapper(\n app,\n events.authApi.saveAccessLevels,\n permission.writeAccessLevels.isAuthorized,\n { accessLevels },\n _saveAccessLevels, app, accessLevels,\n);\n\nexport const _saveAccessLevels = async (app, accessLevels) => {\n const validationErrors = validateAccessLevels(app)(accessLevels.levels);\n if (validationErrors.length > 0) {\n const errs = $(validationErrors, [\n map(e => e.error),\n join(', '),\n ]);\n throw new Error(\n `Access Levels Invalid: ${errs}`,\n );\n }\n\n const lock = await getLock(\n app, ACCESS_LEVELS_LOCK_FILE, 2000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Could not get lock to save access levels'); }\n\n try {\n const existing = await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n if (existing.version !== accessLevels.version) { throw new Error('Access levels have already been updated, since you loaded'); }\n\n accessLevels.version++;\n\n app.datastore.updateJson(ACCESS_LEVELS_FILE, accessLevels);\n } finally {\n await releaseLock(app, lock);\n }\n};\n","import { difference, map, join } from 'lodash/fp';\nimport {\n getLock, isNolock, releaseLock, $,\n apiWrapper, events,\n} from '../common';\nimport {\n USERS_LOCK_FILE, ACCESS_LEVELS_FILE,\n getUserByName, USERS_LIST_FILE,\n} from './authCommon';\nimport { permission } from './permissions';\nimport { NotFoundError } from '../common/errors';\n\nexport const setUserAccessLevels = app => async (userName, accessLevels) => apiWrapper(\n app,\n events.authApi.setUserAccessLevels,\n permission.setUserAccessLevels.isAuthorized,\n { userName, accessLevels },\n _setUserAccessLevels, app, userName, accessLevels,\n);\n\nexport const _setUserAccessLevels = async (app, username, accessLevels) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actualAccessLevels = $(\n await app.datastore.loadJson(ACCESS_LEVELS_FILE),\n [\n l => l.levels,\n map(l => l.name),\n ],\n );\n\n const missing = difference(accessLevels)(actualAccessLevels);\n if (missing.length > 0) {\n throw new Error(`Invalid access levels supplied: ${join(', ', missing)}`);\n }\n\n if (isNolock(lock)) { throw new Error('Could set user access levels cannot get lock'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user with ${username}`); }\n\n user.accessLevels = accessLevels;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n } finally {\n releaseLock(app, lock);\n }\n};\n","import {\n authenticate,\n authenticateTemporaryAccess,\n} from './authenticate';\nimport { createTemporaryAccess } from './createTemporaryAccess';\nimport { createUser } from './createUser';\nimport { enableUser, disableUser } from './enableUser';\nimport { loadAccessLevels } from './loadAccessLevels';\nimport { getNewAccessLevel } from './getNewAccessLevel';\nimport { getNewUser, getNewUserAuth } from './getNewUser';\nimport { getUsers } from './getUsers';\nimport { isAuthorized } from './isAuthorized';\nimport { saveAccessLevels } from './saveAccessLevels';\nimport {\n changeMyPassword,\n scorePassword, setPasswordFromTemporaryCode,\n isValidPassword,\n} from './setPassword';\nimport { validateUser } from './validateUser';\nimport { validateAccessLevels } from './validateAccessLevels';\nimport { generateFullPermissions } from './generateFullPermissions';\nimport { setUserAccessLevels } from './setUserAccessLevels';\n\nexport const getAuthApi = app => ({\n authenticate: authenticate(app),\n authenticateTemporaryAccess: authenticateTemporaryAccess(app),\n createTemporaryAccess: createTemporaryAccess(app),\n createUser: createUser(app),\n loadAccessLevels: loadAccessLevels(app),\n enableUser: enableUser(app),\n disableUser: disableUser(app),\n getNewAccessLevel: getNewAccessLevel(app),\n getNewUser: getNewUser(app),\n getNewUserAuth: getNewUserAuth(app),\n getUsers: getUsers(app),\n saveAccessLevels: saveAccessLevels(app),\n isAuthorized: isAuthorized(app),\n changeMyPassword: changeMyPassword(app),\n setPasswordFromTemporaryCode: setPasswordFromTemporaryCode(app),\n scorePassword,\n isValidPassword: isValidPassword(app),\n validateUser: validateUser(app),\n validateAccessLevels: validateAccessLevels(app),\n generateFullPermissions: () => generateFullPermissions(app),\n setUserAccessLevels: setUserAccessLevels(app),\n});\n\nexport default getAuthApi;\n","export const getNewAccessLevel = () => () => ({\n name: '',\n permissions: [],\n default:false\n});\n","import {\n filter, values, each, keys,\n} from 'lodash/fp';\nimport { permission } from './permissions';\nimport {\n getFlattenedHierarchy,\n isIndex, isRecord,\n} from '../templateApi/hierarchy';\nimport { $ } from '../common';\n\nexport const generateFullPermissions = (app) => {\n const allNodes = getFlattenedHierarchy(app.hierarchy);\n const accessLevel = { permissions: [] };\n\n const recordNodes = $(allNodes, [\n filter(isRecord),\n ]);\n\n for (const n of recordNodes) {\n permission.createRecord.add(n.nodeKey(), accessLevel);\n permission.updateRecord.add(n.nodeKey(), accessLevel);\n permission.deleteRecord.add(n.nodeKey(), accessLevel);\n permission.readRecord.add(n.nodeKey(), accessLevel);\n }\n\n const indexNodes = $(allNodes, [\n filter(isIndex),\n ]);\n\n for (const n of indexNodes) {\n permission.readIndex.add(n.nodeKey(), accessLevel);\n }\n\n for (const a of keys(app.actions)) {\n permission.executeAction.add(a, accessLevel);\n }\n\n $(permission, [\n values,\n filter(p => !p.isNode),\n each(p => p.add(accessLevel)),\n ]);\n\n return accessLevel.permissions;\n};\n","import {hierarchy as hierarchyFunctions, \n common, getTemplateApi, getAuthApi } from \"../../../core/src\"; \nimport {find, filter, includes, keyBy, some,\n flatten, map} from \"lodash/fp\";\n\nexport const pipe = common.$;\n\nexport const events = common.eventsList;\n\nexport const getNode = (hierarchy, nodeId) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n find(n => n.nodeId === nodeId || n.nodeKey() === nodeId)\n ]);\n\nexport const constructHierarchy = node => {\n if(!node) return node;\n return templateApi(node).constructHierarchy(node);\n}\n\nexport const createNewHierarchy = () => {\n return templateApi().getNewRootLevel();\n}\n\nexport const templateApi = hierarchy => getTemplateApi({hierarchy})\nexport const authApi = (hierarchy, actions) => getAuthApi({\n hierarchy, actions: keyBy(\"name\")(actions), publish:()=>{}})\n\nexport const allTypes = templateApi({}).allTypes;\n\nexport const validate = {\n all: templateApi({}).validateAll,\n node: templateApi({}).validateNode,\n field: templateApi({}).validateField\n};\n\nexport const getPotentialReverseReferenceIndexes = (hierarchy, refIndex) => {\n const res = pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(n => hierarchyFunctions.isAncestor(refIndex)(n)\n || hierarchyFunctions.isAncestor(refIndex)(n.parent())),\n map(n => n.indexes),\n flatten,\n filter(hierarchyFunctions.isReferenceIndex)\n ]);\n\n return res;\n}\n\nexport const getPotentialReferenceIndexes = (hierarchy, record) =>\n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isAncestorIndex),\n filter(i => hierarchyFunctions.isAncestor(record)(i.parent())\n || i.parent().nodeId === record.parent().nodeId\n || hierarchyFunctions.isRoot(i.parent()))\n ]);\n\nexport const getDefaultTypeOptions = type => \n !type ? {} : allTypes[type].getDefaultOptions();\n\nexport const getNewAction = () => templateApi({}).createAction();\nexport const getNewTrigger = () => templateApi({}).createTrigger();\n\nexport const validateActions = actions => templateApi({}).validateActions(actions);\nexport const validateTriggers = (triggers, actions) => templateApi({}).validateTriggers(triggers, actions);\n\nexport const generateFullPermissions = (hierarchy, actions) => \n authApi(hierarchy,actions).generateFullPermissions();\n\nexport const getNewAccessLevel = () => \n authApi().getNewAccessLevel();\n\nexport const validateAccessLevels = (hierarchy, actions, accessLevels) => \n authApi(hierarchy, actions).validateAccessLevels(accessLevels);","import { safe_not_equal, noop, run_all, is_function } from '../internal';\nexport { get_store_value as get } from '../internal';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe,\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n * @param {Stores} stores input stores\n * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values\n * @param {*=}initial_value when used asynchronously\n */\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","export const defaultPagesObject = () => ({\n main: {\n index: {\n _component : \"./components/indexHtml\"\n },\n appBody: \"bbapp.main.json\"\n },\n unauthenticated: {\n index: {\n _component : \"./components/indexHtml\"\n },\n appBody: \"bbapp.unauthenticated.json\"\n },\n componentLibraries: [],\n stylesheets: []\n\n});","import {\r\n isObject\r\n} from \"lodash/fp\";\r\n\r\n\r\nexport const setState = (store, path, value) => {\r\n\r\n if(!path || path.length === 0) return;\r\n\r\n const pathParts = path.split(\".\");\r\n const safeSetPath = (obj, currentPartIndex=0) => {\r\n\r\n const currentKey = pathParts[currentPartIndex];\r\n\r\n if(pathParts.length - 1 == currentPartIndex) {\r\n obj[currentKey] = value;\r\n return;\r\n }\r\n\r\n if(obj[currentKey] === null \r\n || obj[currentKey] === undefined\r\n || !isObject(obj.currentKey)) {\r\n\r\n obj[currentKey] = {};\r\n }\r\n\r\n safeSetPath(obj[currentKey], currentPartIndex + 1);\r\n\r\n }\r\n\r\n store.update(s => {\r\n safeSetPath(s);\r\n return s;\r\n });\r\n}","\r\n\r\n export const loadRecord = (api) => async ({recordKey, statePath}) => {\r\n\r\n if(!recordKey) {\r\n api.error(\"Load Record: record key not set\");\r\n return;\r\n } \r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const record = await get({\r\n url:`${rootPath}/api/record/${key}`\r\n });\r\n\r\n if(api.isSuccess(record))\r\n api.setState(statePath, record);\r\n}","export const listRecords = api => async ({indexKey, statePath}) => {\r\n if(!recordKey) {\r\n api.error(\"Load Record: record key not set\");\r\n return;\r\n } \r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const records = get({\r\n url:`${rootPath}/api/listRecords/${indexKey}`\r\n });\r\n\r\n if(api.isSuccess(records))\r\n api.setState(statePath, records);\r\n}","\r\nexport const USER_STATE_PATH = \"_bbuser\";\r\n\r\nexport const authenticate = (api) => async ({username, password}) => {\r\n\r\n if(!username) {\r\n api.error(\"Authenticate: username not set\");\r\n return;\r\n } \r\n \r\n if(!password) {\r\n api.error(\"Authenticate: password not set\");\r\n return;\r\n } \r\n\r\n const user = await post({\r\n url:`${rootPath}/api/authenticate`,\r\n body : {username, password}\r\n });\r\n\r\n // set user even if error - so it is defined at least\r\n api.setState(USER_STATE_PATH, user);\r\n localStorage.setItem(\"budibase:user\", user);\r\n}","import { ERROR } from \"./standardState\";\r\n\r\nexport const getNewChildRecordToState = (store, coreApi) =>\r\n ({recordKey, collectionName,childRecordType,statePath}) => {\r\n const error = errorHandler(setState);\r\n try {\r\n if(!recordKey) {\r\n error(\"getNewChild > recordKey not set\");\r\n return;\r\n }\r\n\r\n if(!collectionName) {\r\n error(\"getNewChild > collectionName not set\");\r\n return;\r\n }\r\n\r\n if(!childRecordType) {\r\n error(\"getNewChild > childRecordType not set\");\r\n return;\r\n }\r\n\r\n if(!statePath) {\r\n error(\"getNewChild > statePath not set\");\r\n return;\r\n }\r\n\r\n const rec = coreApi.recordApi.getNewChild(recordKey, collectionName, childRecordType);\r\n setState(store, statePath, rec);\r\n }\r\n catch(e) {\r\n error(e.message);\r\n }\r\n}\r\n\r\n\r\nexport const getNewRecordToState = (store, coreApi) =>\r\n ({collectionKey,childRecordType,statePath}) => {\r\n const error = errorHandler(setState);\r\n try {\r\n if(!collectionKey) {\r\n error(\"getNewChild > collectionKey not set\");\r\n return;\r\n }\r\n\r\n if(!childRecordType) {\r\n error(\"getNewChild > childRecordType not set\");\r\n return;\r\n }\r\n\r\n if(!statePath) {\r\n error(\"getNewChild > statePath not set\");\r\n return;\r\n }\r\n\r\n const rec = coreApi.recordApi.getNew(collectionKey, childRecordType);\r\n setState(store, statePath, rec);\r\n }\r\n catch(e) {\r\n error(e.message);\r\n }\r\n}\r\n\r\nconst errorHandler = setState => message => setState(ERROR, message);","\r\nexport const ERROR = \"##error_message\";","import { setState } from \"./setState\";\r\nimport { getState } from \"./getState\";\r\nimport {\r\n isArray, isUndefined\r\n} from \"lodash/fp\";\r\n\r\nimport { createApi } from \"../api\";\r\nimport {\r\n getNewChildRecordToState, getNewRecordToState\r\n} from \"./coreHandlers\";\r\n\r\nexport const EVENT_TYPE_MEMBER_NAME = \"##eventHandlerType\";\r\n\r\nexport const eventHandlers = (store,coreApi) => {\r\n \r\n const handler = (parameters, execute) => ({\r\n execute, parameters\r\n });\r\n\r\n const api = createApi({\r\n rootPath:\"\",\r\n setState: (path, value) => setState(store, path, value),\r\n getState: (path, fallback) => getState(store, path, fallback)\r\n });\r\n\r\n const setStateHandler = ({path, value}) => setState(store, path, value);\r\n \r\n return {\r\n \"Set State\": handler([\"path\", \"value\"], setStateHandler),\r\n \"Load Record\": handler([\"recordKey\", \"statePath\"], api.loadRecord),\r\n \"List Records\": handler([\"indexKey\", \"statePath\"], api.listRecords),\r\n \"Save Record\": handler([\"statePath\"], api.saveRecord),\r\n \r\n \"Get New Child Record\": handler(\r\n [\"recordKey\", \"collectionName\", \"childRecordType\", \"statePath\"], \r\n getNewChildRecordToState(store, coreApi)),\r\n\r\n \"Get New Record\": handler(\r\n [\"collectionKey\", \"childRecordType\", \"statePath\"], \r\n getNewRecordToState(store, coreApi)),\r\n\r\n \"Authenticate\": handler([\"username\", \"password\"], api.authenticate)\r\n };\r\n};\r\n\r\nexport const isEventType = prop => \r\n isArray(prop) \r\n && prop.length > 0\r\n && !isUndefined(prop[0][EVENT_TYPE_MEMBER_NAME]);\r\n","import { ERROR } from \"../state/standardState\";\r\nimport {loadRecord} from \"./loadRecord\";\r\nimport {listRecords} from \"./listRecords\";\r\nimport {authenticate} from \"./authenticate\";\r\n\r\nexport const createApi = ({rootPath, setState, getState}) => {\r\n\r\n const apiCall = (method) => ({url, body, notFound, badRequest, forbidden}) => {\r\n fetch(url, {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body && JSON.stringify(body), \r\n credentials: \"same-origin\"\r\n }).then(r => {\r\n switch (r.status) {\r\n case 200:\r\n return r.json();\r\n case 404:\r\n return error(notFound || `${url} Not found`);\r\n case 400:\r\n return error(badRequest || `${url} Bad Request`);\r\n case 403:\r\n return error(forbidden || `${url} Forbidden`);\r\n default:\r\n if(r.status.toString().startsWith(\"2\")\r\n || r.status.toString().startsWith(\"3\"))\r\n return r.json()\r\n else\r\n return error(`${url} - ${r.statusText}`);\r\n }\r\n });\r\n }\r\n\r\n const post = apiCall(\"POST\");\r\n const get = apiCall(\"GET\");\r\n const patch = apiCall(\"PATCH\");\r\n const del = apiCall(\"DELETE\");\r\n\r\n const ERROR_MEMBER = \"##error\";\r\n const error = message => {\r\n const e = {};\r\n e[ERROR_MEMBER] = message;\r\n setState(ERROR, message);\r\n return e;\r\n }\r\n\r\n const isSuccess = obj => !!obj[ERROR_MEMBER];\r\n\r\n const apiOpts = {\r\n rootPath, setState, getState, isSuccess, error,\r\n post, get, patch, delete:del\r\n };\r\n\r\n return {\r\n loadRecord:loadRecord(apiOpts), \r\n listRecords: listRecords(apiOpts),\r\n authenticate: authenticate(apiOpts)\r\n }\r\n}\r\n\r\n\r\n","import {\r\n isUndefined,\r\n isObject\r\n} from \"lodash/fp\";\r\nimport { \r\n isBound,BB_STATE_BINDINGPATH, BB_STATE_FALLBACK, takeStateFromStore\r\n} from \"./isState\";\r\n\r\nexport const getState = (s, path, fallback) => {\r\n\r\n if(!path || path.length === 0) return fallback;\r\n\r\n const pathParts = path.split(\".\");\r\n const safeGetPath = (obj, currentPartIndex=0) => {\r\n\r\n const currentKey = pathParts[currentPartIndex];\r\n\r\n if(pathParts.length - 1 == currentPartIndex) {\r\n const value = obj[currentKey];\r\n if(isUndefined(value))\r\n return fallback;\r\n else \r\n return value;\r\n }\r\n\r\n if(obj[currentKey] === null \r\n || obj[currentKey] === undefined\r\n || !isObject(obj[currentKey])) {\r\n\r\n return fallback;\r\n }\r\n\r\n return safeGetPath(obj[currentKey], currentPartIndex + 1);\r\n\r\n }\r\n\r\n\r\n return safeGetPath(s);\r\n}\r\n\r\nexport const getStateOrValue = (globalState, prop, currentContext) => {\r\n if(!isBound(prop)) return prop;\r\n\r\n const stateToUse = takeStateFromStore(prop) \r\n ? globalState\r\n : currentContext;\r\n\r\n return getState(stateToUse, prop[BB_STATE_BINDINGPATH], prop[BB_STATE_FALLBACK]);\r\n}","import {\r\n eventHandlers\r\n} from \"../../../client/src/state/eventHandlers\";\r\n\r\nexport {\r\n EVENT_TYPE_MEMBER_NAME\r\n } from \"../../../client/src/state/eventHandlers\";\r\n\r\nexport const allHandlers = () => {\r\n const handlersObj = eventHandlers({}, {});\r\n const handlersArray = [];\r\n for(let key in handlersObj) {\r\n handlersArray.push({name:key, ...handlersObj[key]});\r\n }\r\n return handlersArray;\r\n}","import {\n isString, \n isBoolean, \n isNumber,\n isArray,\n isObjectLike,\n isPlainObject,\n every\n} from \"lodash/fp\";\n\nimport {\n EVENT_TYPE_MEMBER_NAME\n} from \"../../common/eventHandlers\";\n\nimport {\n isBound, BB_STATE_BINDINGPATH\n} from \"@budibase/client/src/state/isState\";\n\nconst defaultDef = typeName => () => ({\n type: typeName,\n required:false,\n default:types[typeName].default(),\n options: typeName === \"options\" ? [] : undefined,\n elementDefinition: typeName === \"array\" ? {} : undefined\n});\n\nconst propType = (defaultValue, isOfType, defaultDefinition) => ({\n isOfType, default:defaultValue, defaultDefinition\n});\n\nconst expandSingleProp = propDef => {\n const p = isString(propDef)\n ? types[propDef].defaultDefinition()\n : propDef;\n \n if(!isString(propDef)) {\n const def = types[propDef.type].defaultDefinition();\n for(let p in def) {\n if(propDef[p] === undefined) {\n propDef[p] = def[p];\n }\n }\n }\n\n if(p.type === \"array\") {\n p.elementDefinition = expandPropsDefinition(p.elementDefinition);\n }\n return p;\n}\n\nexport const expandPropsDefinition = propsDefinition => {\n const expandedProps = {};\n for(let p in propsDefinition) {\n expandedProps[p] = expandSingleProp(propsDefinition[p]);\n }\n return expandedProps;\n}\n\nconst isComponent = isObjectLike;\nconst isEvent = e => \n isPlainObject(e) \n && isString(e[EVENT_TYPE_MEMBER_NAME])\n && isPlainObject(e.parameters);\n\nconst isEventList = e => \n isArray(e) && every(isEvent)(e);\n\nconst emptyState = () => {\n const s = {};\n s[BB_STATE_BINDINGPATH] = \"\";\n return s;\n}\n\nexport const types = {\n string: propType(() => \"\", isString, defaultDef(\"string\")),\n bool: propType(() => false, isBoolean, defaultDef(\"bool\")),\n number: propType(() => 0, isNumber, defaultDef(\"number\")),\n array: propType(() => [], isArray, defaultDef(\"array\")),\n options: propType(() => \"\", isString, defaultDef(\"options\")),\n component: propType(() => ({_component:\"\"}), isComponent, defaultDef(\"component\")),\n asset: propType(() => \"\", isString, defaultDef(\"asset\")),\n event: propType(() => [], isEventList, defaultDef(\"event\")),\n state: propType(() => emptyState(), isBound, defaultDef(\"state\"))\n};","export const BB_STATE_BINDINGPATH = \"##bbstate\";\r\nexport const BB_STATE_BINDINGSOURCE = \"##bbsource\";\r\nexport const BB_STATE_FALLBACK = \"##bbstatefallback\";\r\n\r\nexport const isBound = (prop) => prop[BB_STATE_BINDINGPATH] !== undefined;\r\nexport const takeStateFromStore = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === undefined \r\n || prop[BB_STATE_BINDINGSOURCE] === \"store\";","import {pipe} from \"../../common/core\";\n\nimport {\n find,\n isUndefined,\n filter,\n some,\n includes,\n has\n} from \"lodash/fp\";\n\nconst normalString = s => (s||\"\").trim().toLowerCase();\n\nexport const isRootComponent = c => isComponent(c) && isUndefined(c.inherits);\n\nexport const isComponent = c => {\n const hasProp = (n) => !isUndefined(c[n]);\n return hasProp(\"name\") && hasProp(\"props\");\n}\n\nexport const searchAllComponents = (allComponents, phrase) => {\n\n const hasPhrase = (...vals) => \n pipe(vals, [\n some(v => includes(normalString(phrase))(normalString(v)))\n ]);\n\n const componentMatches = c => {\n if(hasPhrase(c.name, ...(c.tags || []))) return true;\n\n if(isRootComponent(c)) return false;\n \n const parent = getExactComponent(\n allComponents,\n c.inherits);\n\n return componentMatches(parent);\n }\n\n return filter(componentMatches)(allComponents);\n} \n\nexport const getExactComponent = (allComponents, name) => {\n \n const stringEquals = (s1, s2) => \n normalString(s1) === normalString(s2);\n \n return pipe(allComponents,[\n find(c => stringEquals(c.name, name))\n ]);\n}\n\nexport const getAncestorProps = (allComponents, name, found=[]) => {\n const thisComponent = getExactComponent(\n allComponents, name);\n\n if(isRootComponent(thisComponent)) \n return [thisComponent.props, ...found];\n\n return getAncestorProps(\n allComponents, \n thisComponent.inherits,\n [{...thisComponent.props}, \n ...found]);\n\n}\n","import {\n isString, \n isUndefined,\n find,\n keys,\n uniq,\n some,\n filter,\n reduce,\n cloneDeep,\n includes,\n last\n} from \"lodash/fp\";\nimport { types, expandPropsDefinition } from \"./types\";\nimport { assign } from \"lodash\";\nimport { pipe } from \"../../common/core\";\nimport { isRootComponent } from \"./searchComponents\";\n\nexport const createPropDefinitionForDerived = (allComponents, componentName) => {\n \n\n const {propDef, derivedProps} = getComponentInfo(allComponents, componentName);\n\n const hasDerivedProp = k => pipe(derivedProps, [\n keys,\n uniq,\n some(key => key === k)\n ]);\n\n return pipe(propDef, [\n keys,\n filter(k => !hasDerivedProp(k)),\n reduce((obj, k) => {\n obj[k] = propDef[k];\n return obj;\n }, {}),\n expandPropsDefinition\n ])\n}\n\nexport const traverseForProps = getComponentInfo;\n\nexport const getInstanceProps = (componentInfo, props) => {\n const finalProps = cloneDeep(componentInfo.fullProps);\n\n for(let p in props) {\n finalProps[p] = props[p];\n }\n\n return finalProps;\n}\n\nexport const getNewComponentInfo = (allComponents, inherits) => {\n const parentcomponent = find(c => c.name === inherits)(allComponents);\n const component = {\n name:\"\", \n description:\"\", \n inherits, \n props:{}, \n tags:parentcomponent.tags\n };\n return getComponentInfo(\n allComponents,\n inherits,\n [component],\n {});\n}\n\n\nexport const getComponentInfo = (allComponents, comp, stack=[], subComponentProps=null) => {\n const component = isString(comp) \n ? find(c => c.name === comp)(allComponents)\n : comp;\n const cname = isString(comp) ? comp : comp.name;\n if(isRootComponent(component)) {\n subComponentProps = subComponentProps||{};\n const p = createProps(cname, component.props, subComponentProps);\n const rootProps = createProps(cname, component.props);\n const inheritedProps = [];\n const targetComponent = stack.length > 0\n ? last(stack)\n : component;\n if(stack.length > 0) {\n \n for(let prop in subComponentProps) {\n const hasProp = pipe(targetComponent.props, [\n keys,\n includes(prop)]);\n\n if(!hasProp)\n inheritedProps.push(prop);\n }\n }\n const unsetProps = pipe(p.props, [\n keys,\n filter(k => !includes(k)(keys(subComponentProps)) && k !== \"_component\")\n ]);\n\n const fullProps = cloneDeep(p.props);\n fullProps._component = targetComponent.name;\n\n return ({\n propsDefinition:expandPropsDefinition(component.props), \n inheritedProps,\n rootDefaultProps: rootProps.props,\n unsetProps,\n fullProps: fullProps,\n errors: p.errors,\n component: targetComponent,\n rootComponent: component\n });\n }\n return getComponentInfo(\n allComponents, \n component.inherits, \n [component, ...stack],\n {...component.props, ...subComponentProps});\n}\n\nexport const createProps = (componentName, propsDefinition, derivedFromProps) => {\n\n const error = (propName, error) =>\n errors.push({propName, error});\n\n const props = {\n _component: componentName\n };\n\n const errors = [];\n\n if(!componentName)\n error(\"_component\", \"Component name not supplied\");\n\n for(let propDef in propsDefinition) {\n const parsedPropDef = parsePropDef(propsDefinition[propDef]);\n if(parsedPropDef.error)\n error(propDef, parsedPropDef.error); \n else \n props[propDef] = parsedPropDef;\n }\n\n if(derivedFromProps) {\n assign(props, derivedFromProps);\n }\n\n return ({\n props, errors\n });\n}\n\nexport const createArrayElementProps = (arrayPropName, elementDefinition) => \n createProps(\n `#${arrayPropName}#array_element`,\n elementDefinition);\n\nconst parsePropDef = propDef => {\n const error = message => ({error:message, propDef});\n\n if(isString(propDef)) {\n if(!types[propDef])\n return error(`Do not recognise type ${propDef}`);\n \n return types[propDef].default();\n }\n\n if(!propDef.type)\n return error(\"Property Definition must declare a type\");\n \n const type = types[propDef.type];\n if(!type)\n return error(`Do not recognise type ${propDef.type}`);\n\n if(isUndefined(propDef.default))\n return type.default(propDef);\n\n if(!type.isOfType(propDef.default))\n return error(`${propDef.default} is not of type ${type}`);\n\n return propDef.default;\n}\n\nexport const arrayElementComponentName = (parentComponentName, arrayPropName) => \n `${parentComponentName}:${arrayPropName}`;\n\n/*\nAllowed propDefOptions\n- type: string, bool, number, array\n- default: default value, when undefined\n- required: field is required \n*/","import { \n getComponentInfo, createProps, getInstanceProps \n} from \"./createProps\";\n\nexport const buildPropsHierarchy = (allComponents, baseComponent) => {\n\n const buildProps = (componentName, propsDefinition, derivedFromProps) => {\n\n const {props} = createProps(componentName, propsDefinition, derivedFromProps);\n props._component = componentName;\n for(let propName in props) {\n if(propName === \"_component\") continue;\n\n const propDef = propsDefinition[propName];\n if(propDef.type === \"component\") {\n\n const subComponentProps = props[propName];\n \n if(!subComponentProps._component) continue;\n\n const propComponentInfo = getComponentInfo(\n allComponents, subComponentProps._component);\n\n const subComponentInstanceProps = getInstanceProps(\n propComponentInfo,\n subComponentProps\n );\n\n props[propName] = buildProps(\n propComponentInfo.rootComponent.name,\n propComponentInfo.propsDefinition,\n subComponentInstanceProps);\n\n } else if(propDef.type === \"array\") {\n const propsArray = props[propName];\n const newPropsArray = [];\n let index = 0;\n for(let element of propsArray) {\n newPropsArray.push(\n buildProps(\n `${propName}#array_element#`,\n propDef.elementDefinition,\n element));\n index++;\n }\n\n props[propName] = newPropsArray;\n }\n }\n\n return props;\n\n }\n\n if(!baseComponent) return {};\n\n const baseComponentInfo = getComponentInfo(allComponents, baseComponent);\n\n return buildProps(\n baseComponentInfo.rootComponent.name,\n baseComponentInfo.propsDefinition,\n baseComponentInfo.fullProps);\n\n}","const apiCall = (method) => (url, body) => \n fetch(url, {\n method: method,\n headers: {\n 'Content-Type': 'application/json',\n },\n body: body && JSON.stringify(body), \n });\n\nconst post = apiCall(\"POST\");\nconst get = apiCall(\"GET\");\nconst patch = apiCall(\"PATCH\");\nconst del = apiCall(\"DELETE\");\n\nexport default {\n post, get, patch, delete:del\n};","import { map } from \"lodash/fp\";\n\nexport const loadLibs = async (appName, appPackage) => {\n\n const allLibraries = {};\n for(let lib of appPackage.pages.componentLibraries) {\n const libModule = await import(makeLibraryUrl(appName, lib));\n allLibraries[lib] = libModule;\n }\n\n return allLibraries;\n}\n\nexport const loadLibUrls = (appName, appPackage) => {\n\n const allLibraries = [];\n for(let lib of appPackage.pages.componentLibraries) {\n const libUrl = makeLibraryUrl(appName, lib);\n allLibraries.push({libName:lib, importPath:libUrl});\n }\n\n return allLibraries;\n}\n\nexport const loadLib = async (appName, lib, allLibs) => {\n allLibs[lib] = await import(makeLibraryUrl(appName, lib));\n return allLibs;\n}\n\nexport const makeLibraryUrl = (appName, lib) => \n `/_builder/${appName}/componentlibrary?lib=${encodeURI(lib)}`","import {\n hierarchy as hierarchyFunctions, \n} from \"../../../core/src\";\nimport {\n filter, cloneDeep, sortBy, \n map, last, keys, concat,\n find, isEmpty, reduce\n} from \"lodash/fp\";\nimport {\n pipe, getNode, validate,\n constructHierarchy, templateApi\n} from \"../common/core\";\nimport {writable} from \"svelte/store\";\nimport { defaultPagesObject } from \"../userInterface/pagesParsing/defaultPagesObject\"\nimport { buildPropsHierarchy } from \"../userInterface/pagesParsing/buildPropsHierarchy\"\nimport api from \"./api\";\nimport { isRootComponent } from \"../userInterface/pagesParsing/searchComponents\";\nimport { \n getComponentInfo, getNewComponentInfo \n} from \"../userInterface/pagesParsing/createProps\";\nimport { loadLibs, loadLibUrls } from \"./loadComponentLibraries\";\n\nlet appname = \"\";\n\nexport const getStore = () => {\n\n const initial = {\n apps:[],\n appname:\"\",\n hierarchy: {},\n actions: [],\n triggers: [],\n pages:defaultPagesObject(),\n mainUi:{},\n unauthenticatedUi:{},\n allComponents:[],\n currentFrontEndItem:null,\n currentComponentInfo:null,\n currentComponentIsNew:false,\n currentPageName: \"\",\n currentNodeIsNew: false,\n errors: [],\n activeNav: \"database\",\n isBackend:true,\n hasAppPackage: false,\n accessLevels: [],\n currentNode: null,\n libraries:null,\n showSettings:false,\n useAnalytics:true,\n };\n\n const store = writable(initial);\n\n store.initialise = initialise(store, initial);\n store.newChildRecord = newRecord(store, false);\n store.newRootRecord = newRecord(store, true);\n store.selectExistingNode = selectExistingNode(store);\n store.newChildIndex = newIndex(store, false);\n store.newRootIndex = newIndex(store, true);\n store.saveCurrentNode = saveCurrentNode(store);\n store.importAppDefinition = importAppDefinition(store);\n store.deleteCurrentNode = deleteCurrentNode(store);\n store.saveField = saveField(store);\n store.deleteField = deleteField(store);\n store.saveAction = saveAction(store);\n store.deleteAction = deleteAction(store);\n store.saveTrigger = saveTrigger(store);\n store.deleteTrigger = deleteTrigger(store);\n store.saveLevel = saveLevel(store);\n store.deleteLevel = deleteLevel(store);\n store.setActiveNav = setActiveNav(store);\n store.saveDerivedComponent = saveDerivedComponent(store);\n store.refreshComponents = refreshComponents(store);\n store.addComponentLibrary = addComponentLibrary(store);\n store.renameDerivedComponent = renameDerivedComponent(store);\n store.deleteDerivedComponent = deleteDerivedComponent(store);\n store.setCurrentComponent = setCurrentComponent(store);\n store.setCurrentPage = setCurrentPage(store);\n store.createDerivedComponent = createDerivedComponent(store);\n store.removeComponentLibrary =removeComponentLibrary(store);\n store.addStylesheet = addStylesheet(store);\n store.removeStylesheet = removeStylesheet(store);\n store.savePage = savePage(store);\n store.showFrontend = showFrontend(store);\n store.showBackend = showBackend(store);\n store.showSettings = showSettings(store);\n store.useAnalytics = useAnalytics(store);\n return store;\n} \n\nexport default getStore;\n\nconst initialise = (store, initial) => async () => {\n\n appname = window.location.hash \n ? last(window.location.hash.substr(1).split(\"/\"))\n : \"\";\n\n if(!appname) {\n initial.apps = await api.get(`/_builder/api/apps`).then(r => r.json());\n initial.hasAppPackage = false;\n store.set(initial);\n return initial;\n }\n\n const pkg = await api.get(`/_builder/api/${appname}/appPackage`)\n .then(r => r.json());\n\n initial.libraries = await loadLibs(appname, pkg);\n initial.loadLibraryUrls = () => loadLibUrls(appname, pkg);\n initial.appname = appname;\n initial.pages = pkg.pages;\n initial.hasAppPackage = true;\n initial.hierarchy = pkg.appDefinition.hierarchy;\n initial.accessLevels = pkg.accessLevels;\n initial.derivedComponents = pkg.derivedComponents;\n initial.allComponents = combineComponents(\n pkg.derivedComponents, pkg.rootComponents);\n initial.actions = reduce((arr, action) => {\n arr.push(action);\n return arr;\n })(pkg.appDefinition.actions, []);\n initial.triggers = pkg.appDefinition.triggers;\n\n if(!!initial.hierarchy && !isEmpty(initial.hierarchy)) {\n initial.hierarchy = constructHierarchy(initial.hierarchy);\n const shadowHierarchy = createShadowHierarchy(initial.hierarchy);\n if(initial.currentNode !== null)\n initial.currentNode = getNode(\n shadowHierarchy, initial.currentNode.nodeId\n );\n }\n store.set(initial);\n return initial;\n}\n\nconst showSettings = store => show => {\n store.update(s => {\n s.showSettings = !s.showSettings;\n return s;\n });\n}\n\nconst useAnalytics = store => useAnalytics => {\n store.update(s => {\n s.useAnalytics = !s.useAnalytics;\n return s;\n });\n}\n\nconst showBackend = store => () => {\n store.update(s => {\n s.isBackend = true;\n return s;\n })\n}\n\nconst showFrontend = store => () => {\n store.update(s => {\n s.isBackend = false;\n return s;\n })\n}\n\nconst combineComponents = (root, derived) => {\n const all = []\n for(let r in root) {\n all.push(root[r]);\n }\n for(let d in derived) {\n all.push(derived[d]);\n }\n return all;\n}\n\nconst newRecord = (store, useRoot) => () => {\n store.update(s => {\n s.currentNodeIsNew = true;\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n parent = useRoot ? shadowHierarchy\n : getNode(\n shadowHierarchy, \n s.currentNode.nodeId);\n s.errors = [];\n s.currentNode = templateApi(shadowHierarchy)\n .getNewRecordTemplate(parent, \"\", true);\n return s;\n });\n}\n\n\nconst selectExistingNode = (store) => (nodeId) => {\n store.update(s => {\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n s.currentNode = getNode(\n shadowHierarchy, nodeId\n );\n s.currentNodeIsNew = false;\n s.errors = [];\n s.activeNav = \"database\";\n return s;\n })\n}\n\nconst newIndex = (store, useRoot) => () => {\n store.update(s => {\n s.currentNodeIsNew = true;\n s.errors = [];\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n parent = useRoot ? shadowHierarchy\n : getNode(\n shadowHierarchy, \n s.currentNode.nodeId);\n\n s.currentNode = templateApi(shadowHierarchy)\n .getNewIndexTemplate(parent);\n return s;\n });\n}\n\nconst saveCurrentNode = (store) => () => {\n store.update(s => {\n\n const errors = validate.node(s.currentNode);\n s.errors = errors;\n if(errors.length > 0) {\n return s;\n }\n\n const parentNode = getNode(\n s.hierarchy, s.currentNode.parent().nodeId);\n\n const existingNode = getNode(\n s.hierarchy, s.currentNode.nodeId);\n\n let index = parentNode.children.length;\n if(!!existingNode) {\n // remove existing\n index = existingNode.parent().children.indexOf(existingNode);\n existingNode.parent().children = pipe(existingNode.parent().children, [\n filter(c => c.nodeId !== existingNode.nodeId)\n ]);\n }\n\n // should add node into existing hierarchy\n const cloned = cloneDeep(s.currentNode);\n templateApi(s.hierarchy).constructNode(\n parentNode, \n cloned\n );\n\n const newIndexOfchild = child => {\n if(child === cloned) return index;\n const currentIndex = parentNode.children.indexOf(child);\n return currentIndex >= index ? currentIndex + 1 : currentIndex;\n }\n\n parentNode.children = pipe(parentNode.children, [\n sortBy(newIndexOfchild)\n ]);\n\n s.currentNodeIsNew = false;\n \n savePackage(store, s);\n\n return s;\n });\n}\n\nconst importAppDefinition = store => appDefinition => {\n store.update(s => {\n s.hierarchy = appDefinition.hierarchy;\n s.currentNode = appDefinition.hierarchy.children.length > 0\n ? appDefinition.hierarchy.children[0] \n : null;\n s.actions = appDefinition.actions;\n s.triggers = appDefinition.triggers;\n s.currentNodeIsNew = false; \n return s;\n });\n} \n\nconst deleteCurrentNode = store => () => {\n store.update(s => {\n const nodeToDelete = getNode(s.hierarchy, s.currentNode.nodeId);\n s.currentNode = hierarchyFunctions.isRoot(nodeToDelete.parent())\n ? find(n => n != s.currentNode)\n (s.hierarchy.children)\n : nodeToDelete.parent();\n if(hierarchyFunctions.isRecord(nodeToDelete)) {\n nodeToDelete.parent().children = filter(c => c.nodeId !== nodeToDelete.nodeId)\n (nodeToDelete.parent().children);\n } else {\n nodeToDelete.parent().indexes = filter(c => c.nodeId !== nodeToDelete.nodeId)\n (nodeToDelete.parent().indexes);\n }\n s.errors = [];\n savePackage(store, s);\n return s;\n });\n}\n\nconst saveField = databaseStore => (field) => {\n databaseStore.update(db => {\n db.currentNode.fields = filter(f => f.name !== field.name)\n (db.currentNode.fields);\n \n templateApi(db.hierarchy).addField(db.currentNode, field);\n return db;\n });\n}\n\n\nconst deleteField = databaseStore => field => {\n databaseStore.update(db => {\n db.currentNode.fields = filter(f => f.name !== field.name)\n (db.currentNode.fields);\n\n return db;\n });\n}\n\n\nconst saveAction = store => (newAction, isNew, oldAction=null) => {\n store.update(s => {\n\n const existingAction = isNew \n ? null\n : find(a => a.name === oldAction.name)(s.actions);\n \n if(existingAction) {\n s.actions = pipe(s.actions, [\n map(a => a === existingAction ? newAction : a)\n ]);\n } else {\n s.actions.push(newAction);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteAction = store => action => {\n store.update(s => {\n s.actions = filter(a => a.name !== action.name)(s.actions);\n savePackage(store, s);\n return s;\n });\n}\n\nconst saveTrigger = store => (newTrigger, isNew, oldTrigger=null) => {\n store.update(s => {\n\n const existingTrigger = isNew \n ? null\n : find(a => a.name === oldTrigger.name)(s.triggers);\n \n if(existingTrigger) {\n s.triggers = pipe(s.triggers, [\n map(a => a === existingTrigger ? newTrigger : a)\n ]);\n } else {\n s.triggers.push(newTrigger);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteTrigger = store => trigger => {\n store.update(s => {\n s.triggers = filter(t => t.name !== trigger.name)(s.triggers);\n return s;\n });\n}\n\nconst saveLevel = store => (newLevel, isNew, oldLevel=null) => {\n store.update(s => {\n\n const existingLevel = isNew \n ? null\n : find(a => a.name === oldLevel.name)(s.accessLevels);\n \n if(existingLevel) {\n s.accessLevels = pipe(s.accessLevels, [\n map(a => a === existingLevel ? newLevel : a)\n ]);\n } else {\n s.accessLevels.push(newLevel);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteLevel = store => level => {\n store.update(s => {\n s.accessLevels = filter(t => t.name !== level.name)(s.accessLevels);\n savePackage(store, s);\n return s;\n });\n}\n\nconst setActiveNav = store => navName => {\n store.update(s => {\n s.activeNav = navName;\n return s;\n });\n}\n\nconst createShadowHierarchy = hierarchy => \n constructHierarchy(JSON.parse(JSON.stringify(hierarchy)));\n\nconst saveDerivedComponent = store => (derivedComponent) => {\n\n store.update(s => {\n\n const components = pipe(s.allComponents, [\n filter(c => c.name !== derivedComponent.name),\n concat([derivedComponent])\n ]);\n\n const derivedComponents = pipe(s.derivedComponents, [\n filter(c => c.name !== derivedComponent.name),\n concat([derivedComponent])\n ]);\n\n s.allComponents = components;\n s.derivedComponents = derivedComponents;\n s.currentFrontEndItem = derivedComponent;\n s.currentComponentInfo = getNewComponentInfo(\n s.allComponents, derivedComponent.name);\n s.currentComponentIsNew = false;\n \n api.post(`/_builder/api/${s.appname}/derivedcomponent`, derivedComponent)\n .then(() => savePackage(store, s));\n\n return s;\n })\n};\n\nconst createDerivedComponent = store => (componentName) => {\n store.update(s => {\n const newComponentInfo = getNewComponentInfo(\n s.allComponents, componentName);\n\n s.currentFrontEndItem = newComponentInfo.component;\n s.currentComponentInfo = newComponentInfo;\n s.currentComponentIsNew = true;\n return s;\n });\n}\n\nconst deleteDerivedComponent = store => name => {\n store.update(s => {\n\n const allComponents = pipe(s.allComponents, [\n filter(c => c.name !== name)\n ]);\n\n const derivedComponents = pipe(s.derivedComponents, [\n filter(c => c.name !== name)\n ]);\n\n s.allComponents = allComponents;\n s.derivedComponents = derivedComponents;\n if(s.currentFrontEndItem.name === name) {\n s.currentFrontEndItem = null;\n }\n\n api.delete(`/_builder/api/${s.appname}/derivedcomponent/${name}`);\n\n return s;\n })\n}\n\nconst renameDerivedComponent = store => (oldname, newname) => {\n store.update(s => {\n\n const component = pipe(s.allComponents, [\n find(c => c.name === name)\n ]);\n\n component.name = newname;\n\n const allComponents = pipe(s.allComponents, [\n filter(c => c.name !== name),\n concat([component])\n ]);\n\n s.allComponents = allComponents;\n\n api.patch(`/_builder/api/${s.appname}/derivedcomponent`, {\n oldname, newname\n });\n\n return s;\n })\n}\n\nconst savePage = store => async page => {\n store.update(s => {\n if(s.currentFrontEndIsComponent || !s.currentFrontEndItem) {\n return;\n }\n\n s.pages[s.currentPageName] = page;\n s.currentFrontEndItem = page;\n savePackage(store, s);\n return s;\n });\n}\n\nconst addComponentLibrary = store => async lib => {\n\n const response = \n await api.get(`/_builder/api/${appname}/componentlibrary?lib=${encodeURI(lib)}`,undefined, false);\n\n const success = response.status === 200;\n\n const error = response.status === 404 \n ? `Could not find library ${lib}`\n : success\n ? \"\"\n : response.statusText;\n \n const components = success\n ? await response.json()\n : [];\n\n store.update(s => {\n if(success) {\n \n const componentsArray = [];\n for(let c in components) {\n componentsArray.push(components[c]);\n }\n\n s.allComponents = pipe(s.allComponents, [\n filter(c => !c.name.startsWith(`${lib}/`)),\n concat(componentsArray)\n ]);\n\n s.pages.componentLibraries.push(lib);\n savePackage(store, s);\n }\n\n return s;\n })\n \n\n}\n\nconst removeComponentLibrary = store => lib => {\n store.update(s => {\n \n \n s.pages.componentLibraries = filter(l => l !== lib)(\n s.pages.componentLibraries);\n savePackage(store, s);\n \n\n return s;\n })\n}\n\nconst addStylesheet = store => stylesheet => {\n store.update(s => {\n s.pages.stylesheets.push(stylesheet);\n savePackage(store, s);\n return s;\n })\n}\n\nconst removeStylesheet = store => stylesheet => {\n store.update(s => {\n s.pages.stylesheets = filter(s => s !== stylesheet)(s.pages.stylesheets);\n savePackage(store, s);\n return s;\n });\n}\n\nconst refreshComponents = store => async () => {\n\n const components = \n await api.get(`/_builder/api/${db.appname}/components`).then(r => r.json());\n\n const rootComponents = pipe(components, [\n keys,\n map(k => ({...components[k], name:k}))\n ]);\n\n store.update(s => {\n s.allComponents = pipe(s.allComponents, [\n filter(c => !isRootComponent(c)),\n concat(rootComponents)\n ]);\n return s;\n });\n};\n\nconst savePackage = (store, s) => {\n\n const appDefinition = {\n hierarchy:s.hierarchy,\n triggers:s.triggers,\n actions: s.actions,\n props: {\n main: buildPropsHierarchy(s.allComponents, s.pages.main.appBody),\n unauthenticated: buildPropsHierarchy(s.allComponents, s.pages.unauthenticated.appBody)\n }\n };\n\n const data = {\n appDefinition,\n accessLevels:s.accessLevels,\n pages:s.pages,\n }\n\n api.post(`/_builder/api/${s.appname}/appPackage`, data);\n}\n\nconst setCurrentComponent = store => component => {\n store.update(s => {\n s.currentFrontEndItem = component;\n s.currentFrontEndIsComponent = true;\n s.currentComponentIsNew = false;\n s.currentComponentInfo = getComponentInfo(s.allComponents, component.name);\n return s;\n })\n}\n\nconst setCurrentPage = store => pageName => {\n store.update(s => {\n s.currentFrontEndItem = s.pages[pageName];\n s.currentFrontEndIsComponent = false;\n s.currentPageName = pageName;\n return s;\n })\n}\n","import {createPackage} from \"./createPackage\";\nimport getStore from \"./store\";\n\nexport const store = getStore();\n\nexport const createNewPackage = () =>\n createPackage(packageInfo, store);\n\nexport const initialise = async () => {\n try {\n setupRouter(store);\n await store.initialise();\n } catch(err) {\n console.log(err);\n }\n\n} \n\nconst setupRouter = (writable) => {\n const pushState = history.pushState;\n history.pushState = () => {\n pushState.apply(history, arguments);\n //fireEvents('pushState', arguments); \n writable.initialise();\n }\n window.addEventListener('hashchange',()=>{\n writable.initialise();\n })\n}\n","<script>\n\nimport Button from \"./common/Button.svelte\"\nimport { store } from \"./builderStore\";\n\nlet errors = [];\n\n</script>\n\n<div class=\"root\">\n <div class=\"inner\">\n <img src=\"/_builder/assets/budibase-logo.png\" class=\"logo\" alt=\"budibase logo\"/>\n <div>\n \n <div>\n <h4 style=\"margin-bottom: 20px\">Choose an Application</h4>\n {#each $store.apps as app}\n <a href={`#/${app}`} class=\"app-link\">{app}</a>\n {/each}\n </div>\n </div>\n </div>\n</div>\n\n<style>\n\n.root {\n position: fixed;\n margin: 0 auto;\n text-align: center;\n top: 20%;\n /*color: #333333;\n background-color: #fdfdfd;*/\n width:100%;\n}\n\n.inner {\n display:inline-block;\n margin: auto;\n}\n\n.logo {\n width: 300px;\n margin-bottom: 40px;\n}\n\n.root :global(.option) {\n width:250px;\n}\n\n.app-link {\n margin-top: 10px;\n display: block;\n}\n\n</style>","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"feather\"] = factory();\n\telse\n\t\troot[\"feather\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./dist/icons.json\":\n/*!*************************!*\\\n !*** ./dist/icons.json ***!\n \\*************************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, download-cloud, download, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":\"<polyline points=\\\"22 12 18 12 15 21 9 3 6 12 2 12\\\"></polyline>\",\"airplay\":\"<path d=\\\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\\\"></path><polygon points=\\\"12 15 17 21 7 21 12 15\\\"></polygon>\",\"alert-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line>\",\"alert-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line>\",\"alert-triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"13\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line>\",\"align-center\":\"<line x1=\\\"18\\\" y1=\\\"10\\\" x2=\\\"6\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"18\\\" y1=\\\"18\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line>\",\"align-justify\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-left\":\"<line x1=\\\"17\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"17\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-right\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"7\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"7\\\" y2=\\\"18\\\"></line>\",\"anchor\":\"<circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><path d=\\\"M5 12H2a10 10 0 0 0 20 0h-3\\\"></path>\",\"aperture\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"14.31\\\" y1=\\\"8\\\" x2=\\\"20.05\\\" y2=\\\"17.94\\\"></line><line x1=\\\"9.69\\\" y1=\\\"8\\\" x2=\\\"21.17\\\" y2=\\\"8\\\"></line><line x1=\\\"7.38\\\" y1=\\\"12\\\" x2=\\\"13.12\\\" y2=\\\"2.06\\\"></line><line x1=\\\"9.69\\\" y1=\\\"16\\\" x2=\\\"3.95\\\" y2=\\\"6.06\\\"></line><line x1=\\\"14.31\\\" y1=\\\"16\\\" x2=\\\"2.83\\\" y2=\\\"16\\\"></line><line x1=\\\"16.62\\\" y1=\\\"12\\\" x2=\\\"10.88\\\" y2=\\\"21.94\\\"></line>\",\"archive\":\"<polyline points=\\\"21 8 21 21 3 21 3 8\\\"></polyline><rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"22\\\" height=\\\"5\\\"></rect><line x1=\\\"10\\\" y1=\\\"12\\\" x2=\\\"14\\\" y2=\\\"12\\\"></line>\",\"arrow-down-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"8 12 12 16 16 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line>\",\"arrow-down-left\":\"<line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 17 7 17 7 7\\\"></polyline>\",\"arrow-down-right\":\"<line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"17\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 7 17 17 7 17\\\"></polyline>\",\"arrow-down\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><polyline points=\\\"19 12 12 19 5 12\\\"></polyline>\",\"arrow-left-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 8 8 12 12 16\\\"></polyline><line x1=\\\"16\\\" y1=\\\"12\\\" x2=\\\"8\\\" y2=\\\"12\\\"></line>\",\"arrow-left\":\"<line x1=\\\"19\\\" y1=\\\"12\\\" x2=\\\"5\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 19 5 12 12 5\\\"></polyline>\",\"arrow-right-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 16 16 12 12 8\\\"></polyline><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"arrow-right\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 5 19 12 12 19\\\"></polyline>\",\"arrow-up-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"16 12 12 8 8 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line>\",\"arrow-up-left\":\"<line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 17 7 7 17 7\\\"></polyline>\",\"arrow-up-right\":\"<line x1=\\\"7\\\" y1=\\\"17\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 7 17 7 17 17\\\"></polyline>\",\"arrow-up\":\"<line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"5\\\"></line><polyline points=\\\"5 12 12 5 19 12\\\"></polyline>\",\"at-sign\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><path d=\\\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\\\"></path>\",\"award\":\"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"7\\\"></circle><polyline points=\\\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\\\"></polyline>\",\"bar-chart-2\":\"<line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"10\\\"></line><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"14\\\"></line>\",\"bar-chart\":\"<line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"10\\\"></line><line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"16\\\"></line>\",\"battery-charging\":\"<path d=\\\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\\\"></path><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line><polyline points=\\\"11 6 7 12 13 12 9 18\\\"></polyline>\",\"battery\":\"<rect x=\\\"1\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line>\",\"bell-off\":\"<path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path><path d=\\\"M18.63 13A17.89 17.89 0 0 1 18 8\\\"></path><path d=\\\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\\\"></path><path d=\\\"M18 8a6 6 0 0 0-9.33-5\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"bell\":\"<path d=\\\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\\\"></path><path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path>\",\"bluetooth\":\"<polyline points=\\\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\\\"></polyline>\",\"bold\":\"<path d=\\\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path><path d=\\\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path>\",\"book-open\":\"<path d=\\\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\\\"></path><path d=\\\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\\\"></path>\",\"book\":\"<path d=\\\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\\\"></path><path d=\\\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\\\"></path>\",\"bookmark\":\"<path d=\\\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\\\"></path>\",\"box\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"briefcase\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\\\"></path>\",\"calendar\":\"<rect x=\\\"3\\\" y=\\\"4\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"16\\\" y1=\\\"2\\\" x2=\\\"16\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"10\\\"></line>\",\"camera-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\\\"></path>\",\"camera\":\"<path d=\\\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\\\"></path><circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"4\\\"></circle>\",\"cast\":\"<path d=\\\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\\\"></path><line x1=\\\"2\\\" y1=\\\"20\\\" x2=\\\"2.01\\\" y2=\\\"20\\\"></line>\",\"check-circle\":\"<path d=\\\"M22 11.08V12a10 10 0 1 1-5.93-9.14\\\"></path><polyline points=\\\"22 4 12 14.01 9 11.01\\\"></polyline>\",\"check-square\":\"<polyline points=\\\"9 11 12 14 22 4\\\"></polyline><path d=\\\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\\\"></path>\",\"check\":\"<polyline points=\\\"20 6 9 17 4 12\\\"></polyline>\",\"chevron-down\":\"<polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\",\"chevron-left\":\"<polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\",\"chevron-right\":\"<polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\",\"chevron-up\":\"<polyline points=\\\"18 15 12 9 6 15\\\"></polyline>\",\"chevrons-down\":\"<polyline points=\\\"7 13 12 18 17 13\\\"></polyline><polyline points=\\\"7 6 12 11 17 6\\\"></polyline>\",\"chevrons-left\":\"<polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\",\"chevrons-right\":\"<polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\",\"chevrons-up\":\"<polyline points=\\\"17 11 12 6 7 11\\\"></polyline><polyline points=\\\"17 18 12 13 7 18\\\"></polyline>\",\"chrome\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"21.17\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><line x1=\\\"3.95\\\" y1=\\\"6.06\\\" x2=\\\"8.54\\\" y2=\\\"14\\\"></line><line x1=\\\"10.88\\\" y1=\\\"21.94\\\" x2=\\\"15.46\\\" y2=\\\"14\\\"></line>\",\"circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle>\",\"clipboard\":\"<path d=\\\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\\\"></path><rect x=\\\"8\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\"></rect>\",\"clock\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 6 12 12 16 14\\\"></polyline>\",\"cloud-drizzle\":\"<line x1=\\\"8\\\" y1=\\\"19\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"15\\\"></line><line x1=\\\"16\\\" y1=\\\"19\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-lightning\":\"<path d=\\\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\\\"></path><polyline points=\\\"13 11 9 17 15 17 11 23\\\"></polyline>\",\"cloud-off\":\"<path d=\\\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"cloud-rain\":\"<line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-snow\":\"<path d=\\\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\\\"></path><line x1=\\\"8\\\" y1=\\\"16\\\" x2=\\\"8.01\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"20\\\" x2=\\\"8.01\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12.01\\\" y2=\\\"22\\\"></line><line x1=\\\"16\\\" y1=\\\"16\\\" x2=\\\"16.01\\\" y2=\\\"16\\\"></line><line x1=\\\"16\\\" y1=\\\"20\\\" x2=\\\"16.01\\\" y2=\\\"20\\\"></line>\",\"cloud\":\"<path d=\\\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\\\"></path>\",\"code\":\"<polyline points=\\\"16 18 22 12 16 6\\\"></polyline><polyline points=\\\"8 6 2 12 8 18\\\"></polyline>\",\"codepen\":\"<polygon points=\\\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"15.5\\\"></line><polyline points=\\\"22 8.5 12 15.5 2 8.5\\\"></polyline><polyline points=\\\"2 15.5 12 8.5 22 15.5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"8.5\\\"></line>\",\"codesandbox\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"7.5 4.21 12 6.81 16.5 4.21\\\"></polyline><polyline points=\\\"7.5 19.79 7.5 14.6 3 12\\\"></polyline><polyline points=\\\"21 12 16.5 14.6 16.5 19.79\\\"></polyline><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"coffee\":\"<path d=\\\"M18 8h1a4 4 0 0 1 0 8h-1\\\"></path><path d=\\\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\\\"></path><line x1=\\\"6\\\" y1=\\\"1\\\" x2=\\\"6\\\" y2=\\\"4\\\"></line><line x1=\\\"10\\\" y1=\\\"1\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"1\\\" x2=\\\"14\\\" y2=\\\"4\\\"></line>\",\"columns\":\"<path d=\\\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\\\"></path>\",\"command\":\"<path d=\\\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\\\"></path>\",\"compass\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\\\"></polygon>\",\"copy\":\"<rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"13\\\" height=\\\"13\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\\\"></path>\",\"corner-down-left\":\"<polyline points=\\\"9 10 4 15 9 20\\\"></polyline><path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\"></path>\",\"corner-down-right\":\"<polyline points=\\\"15 10 20 15 15 20\\\"></polyline><path d=\\\"M4 4v7a4 4 0 0 0 4 4h12\\\"></path>\",\"corner-left-down\":\"<polyline points=\\\"14 15 9 20 4 15\\\"></polyline><path d=\\\"M20 4h-7a4 4 0 0 0-4 4v12\\\"></path>\",\"corner-left-up\":\"<polyline points=\\\"14 9 9 4 4 9\\\"></polyline><path d=\\\"M20 20h-7a4 4 0 0 1-4-4V4\\\"></path>\",\"corner-right-down\":\"<polyline points=\\\"10 15 15 20 20 15\\\"></polyline><path d=\\\"M4 4h7a4 4 0 0 1 4 4v12\\\"></path>\",\"corner-right-up\":\"<polyline points=\\\"10 9 15 4 20 9\\\"></polyline><path d=\\\"M4 20h7a4 4 0 0 0 4-4V4\\\"></path>\",\"corner-up-left\":\"<polyline points=\\\"9 14 4 9 9 4\\\"></polyline><path d=\\\"M20 20v-7a4 4 0 0 0-4-4H4\\\"></path>\",\"corner-up-right\":\"<polyline points=\\\"15 14 20 9 15 4\\\"></polyline><path d=\\\"M4 20v-7a4 4 0 0 1 4-4h12\\\"></path>\",\"cpu\":\"<rect x=\\\"4\\\" y=\\\"4\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect><line x1=\\\"9\\\" y1=\\\"1\\\" x2=\\\"9\\\" y2=\\\"4\\\"></line><line x1=\\\"15\\\" y1=\\\"1\\\" x2=\\\"15\\\" y2=\\\"4\\\"></line><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"9\\\" y2=\\\"23\\\"></line><line x1=\\\"15\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"23\\\"></line><line x1=\\\"20\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"9\\\"></line><line x1=\\\"20\\\" y1=\\\"14\\\" x2=\\\"23\\\" y2=\\\"14\\\"></line><line x1=\\\"1\\\" y1=\\\"9\\\" x2=\\\"4\\\" y2=\\\"9\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line>\",\"credit-card\":\"<rect x=\\\"1\\\" y=\\\"4\\\" width=\\\"22\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"1\\\" y1=\\\"10\\\" x2=\\\"23\\\" y2=\\\"10\\\"></line>\",\"crop\":\"<path d=\\\"M6.13 1L6 16a2 2 0 0 0 2 2h15\\\"></path><path d=\\\"M1 6.13L16 6a2 2 0 0 1 2 2v15\\\"></path>\",\"crosshair\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"18\\\" y2=\\\"12\\\"></line><line x1=\\\"6\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line>\",\"database\":\"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\"></ellipse><path d=\\\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\\\"></path><path d=\\\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\\\"></path>\",\"delete\":\"<path d=\\\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\\\"></path><line x1=\\\"18\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"18\\\" y2=\\\"15\\\"></line>\",\"disc\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"dollar-sign\":\"<line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\\\"></path>\",\"download-cloud\":\"<polyline points=\\\"8 17 12 21 16 17\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\\\"></path>\",\"download\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"7 10 12 15 17 10\\\"></polyline><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line>\",\"droplet\":\"<path d=\\\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\\\"></path>\",\"edit-2\":\"<path d=\\\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\\\"></path>\",\"edit-3\":\"<path d=\\\"M12 20h9\\\"></path><path d=\\\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\\\"></path>\",\"edit\":\"<path d=\\\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\\\"></path><path d=\\\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\\\"></path>\",\"external-link\":\"<path d=\\\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\\\"></path><polyline points=\\\"15 3 21 3 21 9\\\"></polyline><line x1=\\\"10\\\" y1=\\\"14\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line>\",\"eye-off\":\"<path d=\\\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"eye\":\"<path d=\\\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\\\"></path><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"facebook\":\"<path d=\\\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\\\"></path>\",\"fast-forward\":\"<polygon points=\\\"13 19 22 12 13 5 13 19\\\"></polygon><polygon points=\\\"2 19 11 12 2 5 2 19\\\"></polygon>\",\"feather\":\"<path d=\\\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\\\"></path><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"2\\\" y2=\\\"22\\\"></line><line x1=\\\"17.5\\\" y1=\\\"15\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"figma\":\"<path d=\\\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\\\"></path><path d=\\\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\\\"></path><path d=\\\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\\\"></path>\",\"file-minus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-plus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-text\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"13\\\"></line><line x1=\\\"16\\\" y1=\\\"17\\\" x2=\\\"8\\\" y2=\\\"17\\\"></line><polyline points=\\\"10 9 9 9 8 9\\\"></polyline>\",\"file\":\"<path d=\\\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\\\"></path><polyline points=\\\"13 2 13 9 20 9\\\"></polyline>\",\"film\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"2.18\\\" ry=\\\"2.18\\\"></rect><line x1=\\\"7\\\" y1=\\\"2\\\" x2=\\\"7\\\" y2=\\\"22\\\"></line><line x1=\\\"17\\\" y1=\\\"2\\\" x2=\\\"17\\\" y2=\\\"22\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"2\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><line x1=\\\"2\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"22\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"22\\\" y2=\\\"7\\\"></line>\",\"filter\":\"<polygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"></polygon>\",\"flag\":\"<path d=\\\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\\\"></path><line x1=\\\"4\\\" y1=\\\"22\\\" x2=\\\"4\\\" y2=\\\"15\\\"></line>\",\"folder-minus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder-plus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"12\\\" y1=\\\"11\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path>\",\"framer\":\"<path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"></path>\",\"frown\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"gift\":\"<polyline points=\\\"20 12 20 22 4 22 4 12\\\"></polyline><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"5\\\"></rect><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"7\\\"></line><path d=\\\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\\\"></path><path d=\\\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\\\"></path>\",\"git-branch\":\"<line x1=\\\"6\\\" y1=\\\"3\\\" x2=\\\"6\\\" y2=\\\"15\\\"></line><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><path d=\\\"M18 9a9 9 0 0 1-9 9\\\"></path>\",\"git-commit\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"1.05\\\" y1=\\\"12\\\" x2=\\\"7\\\" y2=\\\"12\\\"></line><line x1=\\\"17.01\\\" y1=\\\"12\\\" x2=\\\"22.96\\\" y2=\\\"12\\\"></line>\",\"git-merge\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M6 21V9a9 9 0 0 0 9 9\\\"></path>\",\"git-pull-request\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"></path><line x1=\\\"6\\\" y1=\\\"9\\\" x2=\\\"6\\\" y2=\\\"21\\\"></line>\",\"github\":\"<path d=\\\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\\\"></path>\",\"gitlab\":\"<path d=\\\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\\\"></path>\",\"globe\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><path d=\\\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\\\"></path>\",\"grid\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"3\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect>\",\"hard-drive\":\"<line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path><line x1=\\\"6\\\" y1=\\\"16\\\" x2=\\\"6.01\\\" y2=\\\"16\\\"></line><line x1=\\\"10\\\" y1=\\\"16\\\" x2=\\\"10.01\\\" y2=\\\"16\\\"></line>\",\"hash\":\"<line x1=\\\"4\\\" y1=\\\"9\\\" x2=\\\"20\\\" y2=\\\"9\\\"></line><line x1=\\\"4\\\" y1=\\\"15\\\" x2=\\\"20\\\" y2=\\\"15\\\"></line><line x1=\\\"10\\\" y1=\\\"3\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"21\\\"></line>\",\"headphones\":\"<path d=\\\"M3 18v-6a9 9 0 0 1 18 0v6\\\"></path><path d=\\\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\\\"></path>\",\"heart\":\"<path d=\\\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\\\"></path>\",\"help-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\"></path><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line>\",\"hexagon\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path>\",\"home\":\"<path d=\\\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\"></path><polyline points=\\\"9 22 9 12 15 12 15 22\\\"></polyline>\",\"image\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><polyline points=\\\"21 15 16 10 5 21\\\"></polyline>\",\"inbox\":\"<polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\"></polyline><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path>\",\"info\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12.01\\\" y2=\\\"8\\\"></line>\",\"instagram\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"5\\\" ry=\\\"5\\\"></rect><path d=\\\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\\\"></path><line x1=\\\"17.5\\\" y1=\\\"6.5\\\" x2=\\\"17.51\\\" y2=\\\"6.5\\\"></line>\",\"italic\":\"<line x1=\\\"19\\\" y1=\\\"4\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"20\\\" x2=\\\"5\\\" y2=\\\"20\\\"></line><line x1=\\\"15\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"20\\\"></line>\",\"key\":\"<path d=\\\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\\\"></path>\",\"layers\":\"<polygon points=\\\"12 2 2 7 12 12 22 7 12 2\\\"></polygon><polyline points=\\\"2 17 12 22 22 17\\\"></polyline><polyline points=\\\"2 12 12 17 22 12\\\"></polyline>\",\"layout\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"3\\\" y1=\\\"9\\\" x2=\\\"21\\\" y2=\\\"9\\\"></line><line x1=\\\"9\\\" y1=\\\"21\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"life-buoy\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"9.17\\\" y2=\\\"9.17\\\"></line><line x1=\\\"14.83\\\" y1=\\\"14.83\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"18.36\\\" y2=\\\"5.64\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"9.17\\\" y2=\\\"14.83\\\"></line>\",\"link-2\":\"<path d=\\\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\\\"></path><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"link\":\"<path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\"></path><path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\"></path>\",\"linkedin\":\"<path d=\\\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\\\"></path><rect x=\\\"2\\\" y=\\\"9\\\" width=\\\"4\\\" height=\\\"12\\\"></rect><circle cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"2\\\"></circle>\",\"list\":\"<line x1=\\\"8\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"8\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"3.01\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"3.01\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"3.01\\\" y2=\\\"18\\\"></line>\",\"loader\":\"<line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"6\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"7.76\\\" y2=\\\"7.76\\\"></line><line x1=\\\"16.24\\\" y1=\\\"16.24\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"6\\\" y2=\\\"12\\\"></line><line x1=\\\"18\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"7.76\\\" y2=\\\"16.24\\\"></line><line x1=\\\"16.24\\\" y1=\\\"7.76\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line>\",\"lock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"></path>\",\"log-in\":\"<path d=\\\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\\\"></path><polyline points=\\\"10 17 15 12 10 7\\\"></polyline><line x1=\\\"15\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line>\",\"log-out\":\"<path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\"></path><polyline points=\\\"16 17 21 12 16 7\\\"></polyline><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"9\\\" y2=\\\"12\\\"></line>\",\"mail\":\"<path d=\\\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\\\"></path><polyline points=\\\"22,6 12,13 2,6\\\"></polyline>\",\"map-pin\":\"<path d=\\\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\\\"></path><circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\"></circle>\",\"map\":\"<polygon points=\\\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\\\"></polygon><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"18\\\"></line><line x1=\\\"16\\\" y1=\\\"6\\\" x2=\\\"16\\\" y2=\\\"22\\\"></line>\",\"maximize-2\":\"<polyline points=\\\"15 3 21 3 21 9\\\"></polyline><polyline points=\\\"9 21 3 21 3 15\\\"></polyline><line x1=\\\"21\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"10\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"maximize\":\"<path d=\\\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\\\"></path>\",\"meh\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"15\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"menu\":\"<line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line>\",\"message-circle\":\"<path d=\\\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\\\"></path>\",\"message-square\":\"<path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\"></path>\",\"mic-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\\\"></path><path d=\\\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"mic\":\"<path d=\\\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\\\"></path><path d=\\\"M19 10v2a7 7 0 0 1-14 0v-2\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"minimize-2\":\"<polyline points=\\\"4 14 10 14 10 20\\\"></polyline><polyline points=\\\"20 10 14 10 14 4\\\"></polyline><line x1=\\\"14\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"minimize\":\"<path d=\\\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\\\"></path>\",\"minus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"monitor\":\"<rect x=\\\"2\\\" y=\\\"3\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"21\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line>\",\"moon\":\"<path d=\\\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\\\"></path>\",\"more-horizontal\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle>\",\"more-vertical\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"mouse-pointer\":\"<path d=\\\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\\\"></path><path d=\\\"M13 13l6 6\\\"></path>\",\"move\":\"<polyline points=\\\"5 9 2 12 5 15\\\"></polyline><polyline points=\\\"9 5 12 2 15 5\\\"></polyline><polyline points=\\\"15 19 12 22 9 19\\\"></polyline><polyline points=\\\"19 9 22 12 19 15\\\"></polyline><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line>\",\"music\":\"<path d=\\\"M9 18V5l12-2v13\\\"></path><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"16\\\" r=\\\"3\\\"></circle>\",\"navigation-2\":\"<polygon points=\\\"12 2 19 21 12 17 5 21 12 2\\\"></polygon>\",\"navigation\":\"<polygon points=\\\"3 11 22 2 13 21 11 13 3 11\\\"></polygon>\",\"octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon>\",\"package\":\"<line x1=\\\"16.5\\\" y1=\\\"9.4\\\" x2=\\\"7.5\\\" y2=\\\"4.21\\\"></line><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"paperclip\":\"<path d=\\\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\\\"></path>\",\"pause-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"10\\\" y1=\\\"15\\\" x2=\\\"10\\\" y2=\\\"9\\\"></line><line x1=\\\"14\\\" y1=\\\"15\\\" x2=\\\"14\\\" y2=\\\"9\\\"></line>\",\"pause\":\"<rect x=\\\"6\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect><rect x=\\\"14\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect>\",\"pen-tool\":\"<path d=\\\"M12 19l7-7 3 3-7 7-3-3z\\\"></path><path d=\\\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\\\"></path><path d=\\\"M2 2l7.586 7.586\\\"></path><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\"></circle>\",\"percent\":\"<line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"5\\\" y2=\\\"19\\\"></line><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"2.5\\\"></circle>\",\"phone-call\":\"<path d=\\\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-forwarded\":\"<polyline points=\\\"19 1 23 5 19 9\\\"></polyline><line x1=\\\"15\\\" y1=\\\"5\\\" x2=\\\"23\\\" y2=\\\"5\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-incoming\":\"<polyline points=\\\"16 2 16 8 22 8\\\"></polyline><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"16\\\" y2=\\\"8\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-missed\":\"<line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><line x1=\\\"17\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"7\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-off\":\"<path d=\\\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\\\"></path><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"23\\\"></line>\",\"phone-outgoing\":\"<polyline points=\\\"23 7 23 1 17 1\\\"></polyline><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"1\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone\":\"<path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"pie-chart\":\"<path d=\\\"M21.21 15.89A10 10 0 1 1 8 2.83\\\"></path><path d=\\\"M22 12A10 10 0 0 0 12 2v10z\\\"></path>\",\"play-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"10 8 16 12 10 16 10 8\\\"></polygon>\",\"play\":\"<polygon points=\\\"5 3 19 12 5 21 5 3\\\"></polygon>\",\"plus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"pocket\":\"<path d=\\\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\\\"></path><polyline points=\\\"8 10 12 14 16 10\\\"></polyline>\",\"power\":\"<path d=\\\"M18.36 6.64a9 9 0 1 1-12.73 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"printer\":\"<polyline points=\\\"6 9 6 2 18 2 18 9\\\"></polyline><path d=\\\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\\\"></path><rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\"></rect>\",\"radio\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle><path d=\\\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\\\"></path>\",\"refresh-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><polyline points=\\\"23 20 23 14 17 14\\\"></polyline><path d=\\\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\\\"></path>\",\"refresh-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><polyline points=\\\"1 20 1 14 7 14\\\"></polyline><path d=\\\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\\\"></path>\",\"repeat\":\"<polyline points=\\\"17 1 21 5 17 9\\\"></polyline><path d=\\\"M3 11V9a4 4 0 0 1 4-4h14\\\"></path><polyline points=\\\"7 23 3 19 7 15\\\"></polyline><path d=\\\"M21 13v2a4 4 0 0 1-4 4H3\\\"></path>\",\"rewind\":\"<polygon points=\\\"11 19 2 12 11 5 11 19\\\"></polygon><polygon points=\\\"22 19 13 12 22 5 22 19\\\"></polygon>\",\"rotate-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><path d=\\\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\\\"></path>\",\"rotate-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><path d=\\\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\\\"></path>\",\"rss\":\"<path d=\\\"M4 11a9 9 0 0 1 9 9\\\"></path><path d=\\\"M4 4a16 16 0 0 1 16 16\\\"></path><circle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"save\":\"<path d=\\\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\\\"></path><polyline points=\\\"17 21 17 13 7 13 7 21\\\"></polyline><polyline points=\\\"7 3 7 8 15 8\\\"></polyline>\",\"scissors\":\"<circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><line x1=\\\"20\\\" y1=\\\"4\\\" x2=\\\"8.12\\\" y2=\\\"15.88\\\"></line><line x1=\\\"14.47\\\" y1=\\\"14.48\\\" x2=\\\"20\\\" y2=\\\"20\\\"></line><line x1=\\\"8.12\\\" y1=\\\"8.12\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"search\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line>\",\"send\":\"<line x1=\\\"22\\\" y1=\\\"2\\\" x2=\\\"11\\\" y2=\\\"13\\\"></line><polygon points=\\\"22 2 15 22 11 13 2 9 22 2\\\"></polygon>\",\"server\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"2\\\" y=\\\"14\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"6.01\\\" y2=\\\"6\\\"></line><line x1=\\\"6\\\" y1=\\\"18\\\" x2=\\\"6.01\\\" y2=\\\"18\\\"></line>\",\"settings\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><path d=\\\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\\\"></path>\",\"share-2\":\"<circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"19\\\" r=\\\"3\\\"></circle><line x1=\\\"8.59\\\" y1=\\\"13.51\\\" x2=\\\"15.42\\\" y2=\\\"17.49\\\"></line><line x1=\\\"15.41\\\" y1=\\\"6.51\\\" x2=\\\"8.59\\\" y2=\\\"10.49\\\"></line>\",\"share\":\"<path d=\\\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\\\"></path><polyline points=\\\"16 6 12 2 8 6\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"shield-off\":\"<path d=\\\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\\\"></path><path d=\\\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"shield\":\"<path d=\\\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\\\"></path>\",\"shopping-bag\":\"<path d=\\\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\\\"></path><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><path d=\\\"M16 10a4 4 0 0 1-8 0\\\"></path>\",\"shopping-cart\":\"<circle cx=\\\"9\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><circle cx=\\\"20\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><path d=\\\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\\\"></path>\",\"shuffle\":\"<polyline points=\\\"16 3 21 3 21 8\\\"></polyline><line x1=\\\"4\\\" y1=\\\"20\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><polyline points=\\\"21 16 21 21 16 21\\\"></polyline><line x1=\\\"15\\\" y1=\\\"15\\\" x2=\\\"21\\\" y2=\\\"21\\\"></line><line x1=\\\"4\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"sidebar\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"3\\\" x2=\\\"9\\\" y2=\\\"21\\\"></line>\",\"skip-back\":\"<polygon points=\\\"19 20 9 12 19 4 19 20\\\"></polygon><line x1=\\\"5\\\" y1=\\\"19\\\" x2=\\\"5\\\" y2=\\\"5\\\"></line>\",\"skip-forward\":\"<polygon points=\\\"5 4 15 12 5 20 5 4\\\"></polygon><line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"19\\\" y2=\\\"19\\\"></line>\",\"slack\":\"<path d=\\\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\\\"></path><path d=\\\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\\\"></path><path d=\\\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\\\"></path><path d=\\\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\\\"></path><path d=\\\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\\\"></path><path d=\\\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\\\"></path>\",\"slash\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line>\",\"sliders\":\"<line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line><line x1=\\\"4\\\" y1=\\\"10\\\" x2=\\\"4\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"20\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"16\\\"></line><line x1=\\\"20\\\" y1=\\\"12\\\" x2=\\\"20\\\" y2=\\\"3\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"7\\\" y2=\\\"14\\\"></line><line x1=\\\"9\\\" y1=\\\"8\\\" x2=\\\"15\\\" y2=\\\"8\\\"></line><line x1=\\\"17\\\" y1=\\\"16\\\" x2=\\\"23\\\" y2=\\\"16\\\"></line>\",\"smartphone\":\"<rect x=\\\"5\\\" y=\\\"2\\\" width=\\\"14\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line>\",\"smile\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"speaker\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"4\\\"></circle><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12.01\\\" y2=\\\"6\\\"></line>\",\"square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"star\":\"<polygon points=\\\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\\\"></polygon>\",\"stop-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect>\",\"sun\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle><line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"4.22\\\" y1=\\\"4.22\\\" x2=\\\"5.64\\\" y2=\\\"5.64\\\"></line><line x1=\\\"18.36\\\" y1=\\\"18.36\\\" x2=\\\"19.78\\\" y2=\\\"19.78\\\"></line><line x1=\\\"1\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"23\\\" y2=\\\"12\\\"></line><line x1=\\\"4.22\\\" y1=\\\"19.78\\\" x2=\\\"5.64\\\" y2=\\\"18.36\\\"></line><line x1=\\\"18.36\\\" y1=\\\"5.64\\\" x2=\\\"19.78\\\" y2=\\\"4.22\\\"></line>\",\"sunrise\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"9\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"8 6 12 2 16 6\\\"></polyline>\",\"sunset\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"16 5 12 9 8 5\\\"></polyline>\",\"tablet\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line>\",\"tag\":\"<path d=\\\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\\\"></path><line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"7.01\\\" y2=\\\"7\\\"></line>\",\"target\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"6\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle>\",\"terminal\":\"<polyline points=\\\"4 17 10 11 4 5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"20\\\" y2=\\\"19\\\"></line>\",\"thermometer\":\"<path d=\\\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\\\"></path>\",\"thumbs-down\":\"<path d=\\\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\\\"></path>\",\"thumbs-up\":\"<path d=\\\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\\\"></path>\",\"toggle-left\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"8\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"toggle-right\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"16\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"tool\":\"<path d=\\\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\\\"></path>\",\"trash-2\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path><line x1=\\\"10\\\" y1=\\\"11\\\" x2=\\\"10\\\" y2=\\\"17\\\"></line><line x1=\\\"14\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"17\\\"></line>\",\"trash\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path>\",\"trello\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"7\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><rect x=\\\"14\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"5\\\"></rect>\",\"trending-down\":\"<polyline points=\\\"23 18 13.5 8.5 8.5 13.5 1 6\\\"></polyline><polyline points=\\\"17 18 23 18 23 12\\\"></polyline>\",\"trending-up\":\"<polyline points=\\\"23 6 13.5 15.5 8.5 10.5 1 18\\\"></polyline><polyline points=\\\"17 6 23 6 23 12\\\"></polyline>\",\"triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path>\",\"truck\":\"<rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"15\\\" height=\\\"13\\\"></rect><polygon points=\\\"16 8 20 8 23 11 23 16 16 16 16 8\\\"></polygon><circle cx=\\\"5.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle>\",\"tv\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"15\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><polyline points=\\\"17 2 12 7 7 2\\\"></polyline>\",\"twitch\":\"<path d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\\\"></path>\",\"twitter\":\"<path d=\\\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\\\"></path>\",\"type\":\"<polyline points=\\\"4 7 4 4 20 4 20 7\\\"></polyline><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"4\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line>\",\"umbrella\":\"<path d=\\\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\\\"></path>\",\"underline\":\"<path d=\\\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\\\"></path><line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"21\\\"></line>\",\"unlock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 9.9-1\\\"></path>\",\"upload-cloud\":\"<polyline points=\\\"16 16 12 12 8 16\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\\\"></path><polyline points=\\\"16 16 12 12 8 16\\\"></polyline>\",\"upload\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"17 8 12 3 7 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"3\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"user-check\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><polyline points=\\\"17 11 19 13 23 9\\\"></polyline>\",\"user-minus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-plus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"20\\\" y1=\\\"8\\\" x2=\\\"20\\\" y2=\\\"14\\\"></line><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-x\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"18\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"13\\\"></line><line x1=\\\"23\\\" y1=\\\"8\\\" x2=\\\"18\\\" y2=\\\"13\\\"></line>\",\"user\":\"<path d=\\\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle>\",\"users\":\"<path d=\\\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><path d=\\\"M23 21v-2a4 4 0 0 0-3-3.87\\\"></path><path d=\\\"M16 3.13a4 4 0 0 1 0 7.75\\\"></path>\",\"video-off\":\"<path d=\\\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"video\":\"<polygon points=\\\"23 7 16 12 23 17 23 7\\\"></polygon><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"15\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"voicemail\":\"<circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><line x1=\\\"5.5\\\" y1=\\\"16\\\" x2=\\\"18.5\\\" y2=\\\"16\\\"></line>\",\"volume-1\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-2\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-x\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><line x1=\\\"23\\\" y1=\\\"9\\\" x2=\\\"17\\\" y2=\\\"15\\\"></line><line x1=\\\"17\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"15\\\"></line>\",\"volume\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon>\",\"watch\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"7\\\"></circle><polyline points=\\\"12 9 12 12 13.5 13.5\\\"></polyline><path d=\\\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\\\"></path>\",\"wifi-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\\\"></path><path d=\\\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\\\"></path><path d=\\\"M10.71 5.05A16 16 0 0 1 22.58 9\\\"></path><path d=\\\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line>\",\"wifi\":\"<path d=\\\"M5 12.55a11 11 0 0 1 14.08 0\\\"></path><path d=\\\"M1.42 9a16 16 0 0 1 21.16 0\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line>\",\"wind\":\"<path d=\\\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\\\"></path>\",\"x-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"x\":\"<line x1=\\\"18\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"18\\\" y2=\\\"18\\\"></line>\",\"youtube\":\"<path d=\\\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\\\"></path><polygon points=\\\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\\\"></polygon>\",\"zap-off\":\"<polyline points=\\\"12.41 6.75 13 2 10.57 4.92\\\"></polyline><polyline points=\\\"18.57 12.91 21 10 15.66 10\\\"></polyline><polyline points=\\\"8 8 3 14 12 14 11 22 16 16\\\"></polyline><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"zap\":\"<polygon points=\\\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\\\"></polygon>\",\"zoom-in\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"11\\\" y1=\\\"8\\\" x2=\\\"11\\\" y2=\\\"14\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\",\"zoom-out\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\"};\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/dedupe.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/classnames/dedupe.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar classNames = (function () {\n\t\t// don't inherit from Object so we can skip hasOwnProperty check later\n\t\t// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n\t\tfunction StorageObject() {}\n\t\tStorageObject.prototype = Object.create(null);\n\n\t\tfunction _parseArray (resultSet, array) {\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\t_parse(resultSet, array[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar hasOwn = {}.hasOwnProperty;\n\n\t\tfunction _parseNumber (resultSet, num) {\n\t\t\tresultSet[num] = true;\n\t\t}\n\n\t\tfunction _parseObject (resultSet, object) {\n\t\t\tfor (var k in object) {\n\t\t\t\tif (hasOwn.call(object, k)) {\n\t\t\t\t\t// set value to false instead of deleting it to avoid changing object structure\n\t\t\t\t\t// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n\t\t\t\t\tresultSet[k] = !!object[k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar SPACE = /\\s+/;\n\t\tfunction _parseString (resultSet, str) {\n\t\t\tvar array = str.split(SPACE);\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\tresultSet[array[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction _parse (resultSet, arg) {\n\t\t\tif (!arg) return;\n\t\t\tvar argType = typeof arg;\n\n\t\t\t// 'foo bar'\n\t\t\tif (argType === 'string') {\n\t\t\t\t_parseString(resultSet, arg);\n\n\t\t\t// ['foo', 'bar', ...]\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t_parseArray(resultSet, arg);\n\n\t\t\t// { 'foo': true, ... }\n\t\t\t} else if (argType === 'object') {\n\t\t\t\t_parseObject(resultSet, arg);\n\n\t\t\t// '130'\n\t\t\t} else if (argType === 'number') {\n\t\t\t\t_parseNumber(resultSet, arg);\n\t\t\t}\n\t\t}\n\n\t\tfunction _classNames () {\n\t\t\t// don't leak arguments\n\t\t\t// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t\t\tvar len = arguments.length;\n\t\t\tvar args = Array(len);\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\targs[i] = arguments[i];\n\t\t\t}\n\n\t\t\tvar classSet = new StorageObject();\n\t\t\t_parseArray(classSet, args);\n\n\t\t\tvar list = [];\n\n\t\t\tfor (var k in classSet) {\n\t\t\t\tif (classSet[k]) {\n\t\t\t\t\tlist.push(k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list.join(' ');\n\t\t}\n\n\t\treturn _classNames;\n\t})();\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/es/array/from.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/es/array/from.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.array.from */ \"./node_modules/core-js/modules/es.array.from.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js/internals/path.js\");\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/a-function.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/a-function.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/an-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/an-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-from.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/array-from.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(/*! ../internals/bind-context */ \"./node_modules/core-js/internals/bind-context.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-includes.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/array-includes.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\n// false -> Array#indexOf\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n// true -> Array#includes\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/bind-context.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/bind-context.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js/internals/a-function.js\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof-raw.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/classof-raw.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/classof.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/copy-constructor-properties.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/correct-prototype-getter.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-iterator-constructor.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype;\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property-descriptor.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/define-iterator.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/define-iterator.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js/internals/create-iterator-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/descriptors.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/descriptors.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/document-create-element.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/document-create-element.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar exist = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return exist ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/enum-bug-keys.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/export.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/export.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f;\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/fails.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/core-js/internals/fails.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/function-to-string.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/internals/function-to-string.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/get-iterator-method.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/core-js/internals/get-iterator-method.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/global.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/global.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/has.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/has.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hidden-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/hidden-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hide.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/hide.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/html.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/html.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar document = global.document;\n\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/ie8-dom-define.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/indexed-object.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/indexed-object.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar split = ''.split;\n\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/internal-state.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/internal-state.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ \"./node_modules/core-js/internals/native-weak-map.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar objectHas = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-array-iterator-method.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-forced.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-forced.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-pure.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/is-pure.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators-core.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators-core.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-symbol.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-symbol.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-weak-map.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-weak-map.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-create.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/object-create.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-properties.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-properties.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var key;\n while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-property.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-property.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-names.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys-internal.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys-internal.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar arrayIndexOf = arrayIncludes(false);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-property-is-enumerable.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-set-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\");\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var correctSetter = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n correctSetter = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n validateSetPrototypeOfArguments(O, proto);\n if (correctSetter) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/own-keys.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/own-keys.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar Reflect = global.Reflect;\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/path.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/path.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/redefine.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/redefine.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/require-object-coercible.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/require-object-coercible.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-global.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/set-global.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-to-string-tag.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/set-to-string-tag.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared-key.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/shared-key.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/shared.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/string-at.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/string-at.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// CONVERT_TO_STRING: true -> String#at\n// CONVERT_TO_STRING: false -> String#codePointAt\nmodule.exports = function (that, pos, CONVERT_TO_STRING) {\n var S = String(requireObjectCoercible(that));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-absolute-index.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-absolute-index.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-indexed-object.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-indexed-object.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-integer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/to-integer.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-length.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-length.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-primitive.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/to-primitive.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/uid.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/uid.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nmodule.exports = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) {\n throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/well-known-symbol.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/well-known-symbol.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\");\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.array.from.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/modules/es.array.from.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar from = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.string.iterator.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/modules/es.string.iterator.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar codePointAt = __webpack_require__(/*! ../internals/string-at */ \"./node_modules/core-js/internals/string-at.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js/internals/define-iterator.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = codePointAt(string, index, true);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ \"./src/default-attrs.json\":\n/*!********************************!*\\\n !*** ./src/default-attrs.json ***!\n \\********************************/\n/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */\n/***/ (function(module) {\n\nmodule.exports = {\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":2,\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"};\n\n/***/ }),\n\n/***/ \"./src/icon.js\":\n/*!*********************!*\\\n !*** ./src/icon.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ \"./src/default-attrs.json\");\n\nvar _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Icon = function () {\n function Icon(name, contents) {\n var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Icon);\n\n this.name = name;\n this.contents = contents;\n this.tags = tags;\n this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });\n }\n\n /**\n * Create an SVG string.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\n _createClass(Icon, [{\n key: 'toSvg',\n value: function toSvg() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });\n\n return '<svg ' + attrsToString(combinedAttrs) + '>' + this.contents + '</svg>';\n }\n\n /**\n * Return string representation of an `Icon`.\n *\n * Added for backward compatibility. If old code expects `feather.icons.<name>`\n * to be a string, `toString()` will get implicitly called.\n *\n * @returns {string}\n */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.contents;\n }\n }]);\n\n return Icon;\n}();\n\n/**\n * Convert attributes object to string of HTML attributes.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\nfunction attrsToString(attrs) {\n return Object.keys(attrs).map(function (key) {\n return key + '=\"' + attrs[key] + '\"';\n }).join(' ');\n}\n\nexports.default = Icon;\n\n/***/ }),\n\n/***/ \"./src/icons.js\":\n/*!**********************!*\\\n !*** ./src/icons.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icon = __webpack_require__(/*! ./icon */ \"./src/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _icons = __webpack_require__(/*! ../dist/icons.json */ \"./dist/icons.json\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _tags = __webpack_require__(/*! ./tags.json */ \"./src/tags.json\");\n\nvar _tags2 = _interopRequireDefault(_tags);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = Object.keys(_icons2.default).map(function (key) {\n return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);\n}).reduce(function (object, icon) {\n object[icon.name] = icon;\n return object;\n}, {});\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _toSvg = __webpack_require__(/*! ./to-svg */ \"./src/to-svg.js\");\n\nvar _toSvg2 = _interopRequireDefault(_toSvg);\n\nvar _replace = __webpack_require__(/*! ./replace */ \"./src/replace.js\");\n\nvar _replace2 = _interopRequireDefault(_replace);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };\n\n/***/ }),\n\n/***/ \"./src/replace.js\":\n/*!************************!*\\\n !*** ./src/replace.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */\n\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Replace all HTML elements that have a `data-feather` attribute with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {Object} attrs\n */\nfunction replace() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof document === 'undefined') {\n throw new Error('`feather.replace()` only works in a browser environment.');\n }\n\n var elementsToReplace = document.querySelectorAll('[data-feather]');\n\n Array.from(elementsToReplace).forEach(function (element) {\n return replaceElement(element, attrs);\n });\n}\n\n/**\n * Replace a single HTML element with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {HTMLElement} element\n * @param {Object} attrs\n */\nfunction replaceElement(element) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var elementAttrs = getAttrs(element);\n var name = elementAttrs['data-feather'];\n delete elementAttrs['data-feather'];\n\n var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));\n var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');\n var svgElement = svgDocument.querySelector('svg');\n\n element.parentNode.replaceChild(svgElement, element);\n}\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nfunction getAttrs(element) {\n return Array.from(element.attributes).reduce(function (attrs, attr) {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n}\n\nexports.default = replace;\n\n/***/ }),\n\n/***/ \"./src/tags.json\":\n/*!***********************!*\\\n !*** ./src/tags.json ***!\n \\***********************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, at-sign, award, aperture, bell, bell-off, bluetooth, book-open, book, bookmark, briefcase, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, coffee, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, film, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, global, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, life-bouy, linkedin, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, play, play-circle, plus, plus-circle, plus-square, pocket, power, radio, rewind, rss, save, search, send, settings, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slash, sliders, smile, speaker, star, sun, sunrise, sunset, tag, target, terminal, thumbs-down, thumbs-up, toggle-left, toggle-right, trash, trash-2, triangle, truck, twitter, umbrella, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":[\"pulse\",\"health\",\"action\",\"motion\"],\"airplay\":[\"stream\",\"cast\",\"mirroring\"],\"alert-circle\":[\"warning\"],\"alert-octagon\":[\"warning\"],\"alert-triangle\":[\"warning\"],\"at-sign\":[\"mention\"],\"award\":[\"achievement\",\"badge\"],\"aperture\":[\"camera\",\"photo\"],\"bell\":[\"alarm\",\"notification\"],\"bell-off\":[\"alarm\",\"notification\",\"silent\"],\"bluetooth\":[\"wireless\"],\"book-open\":[\"read\"],\"book\":[\"read\",\"dictionary\",\"booklet\",\"magazine\"],\"bookmark\":[\"read\",\"clip\",\"marker\",\"tag\"],\"briefcase\":[\"work\",\"bag\",\"baggage\",\"folder\"],\"clipboard\":[\"copy\"],\"clock\":[\"time\",\"watch\",\"alarm\"],\"cloud-drizzle\":[\"weather\",\"shower\"],\"cloud-lightning\":[\"weather\",\"bolt\"],\"cloud-rain\":[\"weather\"],\"cloud-snow\":[\"weather\",\"blizzard\"],\"cloud\":[\"weather\"],\"codepen\":[\"logo\"],\"codesandbox\":[\"logo\"],\"coffee\":[\"drink\",\"cup\",\"mug\",\"tea\",\"cafe\",\"hot\",\"beverage\"],\"command\":[\"keyboard\",\"cmd\"],\"compass\":[\"navigation\",\"safari\",\"travel\"],\"copy\":[\"clone\",\"duplicate\"],\"corner-down-left\":[\"arrow\"],\"corner-down-right\":[\"arrow\"],\"corner-left-down\":[\"arrow\"],\"corner-left-up\":[\"arrow\"],\"corner-right-down\":[\"arrow\"],\"corner-right-up\":[\"arrow\"],\"corner-up-left\":[\"arrow\"],\"corner-up-right\":[\"arrow\"],\"credit-card\":[\"purchase\",\"payment\",\"cc\"],\"crop\":[\"photo\",\"image\"],\"crosshair\":[\"aim\",\"target\"],\"database\":[\"storage\"],\"delete\":[\"remove\"],\"disc\":[\"album\",\"cd\",\"dvd\",\"music\"],\"dollar-sign\":[\"currency\",\"money\",\"payment\"],\"droplet\":[\"water\"],\"edit\":[\"pencil\",\"change\"],\"edit-2\":[\"pencil\",\"change\"],\"edit-3\":[\"pencil\",\"change\"],\"eye\":[\"view\",\"watch\"],\"eye-off\":[\"view\",\"watch\"],\"external-link\":[\"outbound\"],\"facebook\":[\"logo\"],\"fast-forward\":[\"music\"],\"figma\":[\"logo\",\"design\",\"tool\"],\"film\":[\"movie\",\"video\"],\"folder-minus\":[\"directory\"],\"folder-plus\":[\"directory\"],\"folder\":[\"directory\"],\"framer\":[\"logo\",\"design\",\"tool\"],\"frown\":[\"emoji\",\"face\",\"bad\",\"sad\",\"emotion\"],\"gift\":[\"present\",\"box\",\"birthday\",\"party\"],\"git-branch\":[\"code\",\"version control\"],\"git-commit\":[\"code\",\"version control\"],\"git-merge\":[\"code\",\"version control\"],\"git-pull-request\":[\"code\",\"version control\"],\"github\":[\"logo\",\"version control\"],\"gitlab\":[\"logo\",\"version control\"],\"global\":[\"world\",\"browser\",\"language\",\"translate\"],\"hard-drive\":[\"computer\",\"server\"],\"hash\":[\"hashtag\",\"number\",\"pound\"],\"headphones\":[\"music\",\"audio\"],\"heart\":[\"like\",\"love\"],\"help-circle\":[\"question mark\"],\"hexagon\":[\"shape\",\"node.js\",\"logo\"],\"home\":[\"house\"],\"image\":[\"picture\"],\"inbox\":[\"email\"],\"instagram\":[\"logo\",\"camera\"],\"key\":[\"password\",\"login\",\"authentication\"],\"life-bouy\":[\"help\",\"life ring\",\"support\"],\"linkedin\":[\"logo\"],\"lock\":[\"security\",\"password\"],\"log-in\":[\"sign in\",\"arrow\"],\"log-out\":[\"sign out\",\"arrow\"],\"mail\":[\"email\"],\"map-pin\":[\"location\",\"navigation\",\"travel\",\"marker\"],\"map\":[\"location\",\"navigation\",\"travel\"],\"maximize\":[\"fullscreen\"],\"maximize-2\":[\"fullscreen\",\"arrows\"],\"meh\":[\"emoji\",\"face\",\"neutral\",\"emotion\"],\"menu\":[\"bars\",\"navigation\",\"hamburger\"],\"message-circle\":[\"comment\",\"chat\"],\"message-square\":[\"comment\",\"chat\"],\"mic-off\":[\"record\"],\"mic\":[\"record\"],\"minimize\":[\"exit fullscreen\"],\"minimize-2\":[\"exit fullscreen\",\"arrows\"],\"monitor\":[\"tv\"],\"moon\":[\"dark\",\"night\"],\"more-horizontal\":[\"ellipsis\"],\"more-vertical\":[\"ellipsis\"],\"mouse-pointer\":[\"arrow\",\"cursor\"],\"move\":[\"arrows\"],\"navigation\":[\"location\",\"travel\"],\"navigation-2\":[\"location\",\"travel\"],\"octagon\":[\"stop\"],\"package\":[\"box\"],\"paperclip\":[\"attachment\"],\"pause\":[\"music\",\"stop\"],\"pause-circle\":[\"music\",\"stop\"],\"pen-tool\":[\"vector\",\"drawing\"],\"play\":[\"music\",\"start\"],\"play-circle\":[\"music\",\"start\"],\"plus\":[\"add\",\"new\"],\"plus-circle\":[\"add\",\"new\"],\"plus-square\":[\"add\",\"new\"],\"pocket\":[\"logo\",\"save\"],\"power\":[\"on\",\"off\"],\"radio\":[\"signal\"],\"rewind\":[\"music\"],\"rss\":[\"feed\",\"subscribe\"],\"save\":[\"floppy disk\"],\"search\":[\"find\",\"magnifier\",\"magnifying glass\"],\"send\":[\"message\",\"mail\",\"paper airplane\"],\"settings\":[\"cog\",\"edit\",\"gear\",\"preferences\"],\"shield\":[\"security\"],\"shield-off\":[\"security\"],\"shopping-bag\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shopping-cart\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shuffle\":[\"music\"],\"skip-back\":[\"music\"],\"skip-forward\":[\"music\"],\"slash\":[\"ban\",\"no\"],\"sliders\":[\"settings\",\"controls\"],\"smile\":[\"emoji\",\"face\",\"happy\",\"good\",\"emotion\"],\"speaker\":[\"music\"],\"star\":[\"bookmark\",\"favorite\",\"like\"],\"sun\":[\"brightness\",\"weather\",\"light\"],\"sunrise\":[\"weather\"],\"sunset\":[\"weather\"],\"tag\":[\"label\"],\"target\":[\"bullseye\"],\"terminal\":[\"code\",\"command line\"],\"thumbs-down\":[\"dislike\",\"bad\"],\"thumbs-up\":[\"like\",\"good\"],\"toggle-left\":[\"on\",\"off\",\"switch\"],\"toggle-right\":[\"on\",\"off\",\"switch\"],\"trash\":[\"garbage\",\"delete\",\"remove\"],\"trash-2\":[\"garbage\",\"delete\",\"remove\"],\"triangle\":[\"delta\"],\"truck\":[\"delivery\",\"van\",\"shipping\"],\"twitter\":[\"logo\"],\"umbrella\":[\"rain\",\"weather\"],\"video-off\":[\"camera\",\"movie\",\"film\"],\"video\":[\"camera\",\"movie\",\"film\"],\"voicemail\":[\"phone\"],\"volume\":[\"music\",\"sound\",\"mute\"],\"volume-1\":[\"music\",\"sound\"],\"volume-2\":[\"music\",\"sound\"],\"volume-x\":[\"music\",\"sound\",\"mute\"],\"watch\":[\"clock\",\"time\"],\"wind\":[\"weather\",\"air\"],\"x-circle\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x-octagon\":[\"delete\",\"stop\",\"alert\",\"warning\",\"times\"],\"x-square\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"youtube\":[\"logo\",\"video\",\"play\"],\"zap-off\":[\"flash\",\"camera\",\"lightning\"],\"zap\":[\"flash\",\"camera\",\"lightning\"]};\n\n/***/ }),\n\n/***/ \"./src/to-svg.js\":\n/*!***********************!*\\\n !*** ./src/to-svg.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create an SVG string.\n * @deprecated\n * @param {string} name\n * @param {Object} attrs\n * @returns {string}\n */\nfunction toSvg(name) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');\n\n if (!name) {\n throw new Error('The required `key` (icon name) parameter is missing.');\n }\n\n if (!_icons2.default[name]) {\n throw new Error('No icon matching \\'' + name + '\\'. See the complete list of icons at https://feathericons.com');\n }\n\n return _icons2.default[name].toSvg(attrs);\n}\n\nexports.default = toSvg;\n\n/***/ }),\n\n/***/ 0:\n/*!**************************************************!*\\\n !*** multi core-js/es/array/from ./src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! core-js/es/array/from */\"./node_modules/core-js/es/array/from.js\");\nmodule.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */\"./src/index.js\");\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=feather.js.map","import feather from \"feather-icons\";\nconst getIcon = (icon, size) => feather.icons[icon].toSvg({height:size||\"16\", width:size||\"16\"});\nexport default getIcon;","<script>\nimport getIcon from \"./icon\";\n\nexport let size = 18;\nexport let icon = \"\";\nexport let style = \"\";\nexport let color = \"var(--secondary100)\";\nexport let hoverColor = \"var(--secondary75)\";\nexport let attributes = {};\n\nlet currentAttributes = [];\nconst addAttributes = (node, attributes) => {\n\n const add = (_attributes) => {\n const attrs = [];\n for(let attr in _attributes) {\n node.setAttribute(attr, _attributes[attr]);\n attrs.push(\"uk-toggle\")\n }\n currentAttributes = attrs;\n }\n\n add(attributes);\n\n return {\n // should implement update method\n update(attributes) {\n for(let attr of currentAttributes) {\n node.removeAttribute(attr)\n }\n add(attributes);\n },\n destroy() {}\n }\n}\n\n</script>\n\n<button style=\"{style}{style ? \";\" : \"\"} color:{color}; --hovercolor:{hoverColor}\"\n on:click\n use:addAttributes={attributes}>\n {@html getIcon(icon, size)}\n</button>\n\n\n<style>\n\nbutton {\n border-style: none;\n background-color: rgba(0,0,0,0);\n cursor: pointer;\n outline:none;\n}\n\nbutton:hover {\n color: var(--hovercolor);\n}\n\nbutton:active {\n outline:none;\n}\n\n</style>","<script>\n\nimport { \n last, \n sortBy, \n filter, \n map,\n uniqWith,\n isEqual,\n trimCharsStart,\n trimChars,\n join,\n includes\n} from \"lodash/fp\";\n\nimport { pipe } from \"../common/core\";\nimport getIcon from \"../common/icon\";\nimport { store } from \"../builderStore\";\n\nexport let components = []\nexport let thisLevel = \"\";\n\nlet pathPartsThisLevel;\nlet componentsThisLevel;\nlet subfolders;\n\nlet expandedFolders = [];\n\nconst joinPath = join(\"/\");\n\nconst normalizedName = name => pipe(name, [\n trimCharsStart(\"./\"),\n trimCharsStart(\"~/\"),\n trimCharsStart(\"../\"),\n trimChars(\" \")\n ]);\n\n\nconst isOnThisLevel = (c) => \n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel\n &&\n (!thisLevel || normalizedName(c.name).startsWith(normalizedName(thisLevel)));\n\nconst notOnThisLevel = (c) => !isOnThisLevel(c);\n\nconst isInSubfolder = (subfolder, c) => \n normalizedName(c.name).startsWith(\n trimCharsStart(\"/\")(\n joinPath([thisLevel, subfolder])));\n\nconst isOnNextLevel = (c) => \n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel + 1\n\nconst lastPartOfName = (c) => \n last(c.name.split(\"/\"))\n\nconst subFolder = (c) => {\n const cname = normalizedName(c.name);\n const folderName = cname.substring(thisLevel.length, cname.length).split(\"/\")[0];\n\n return ({\n name: folderName,\n isExpanded: includes(folderName)(expandedFolders),\n path: thisLevel + \"/\" + folderName\n });\n}\n\nconst subComponents = (subfolder) => pipe(components, [\n filter(c => isInSubfolder(subfolder, c))\n ]);\n\nconst expandFolder = folder => {\n const expandedFolder = {...folder};\n if(expandedFolder.isExpanded) {\n expandedFolder.isExpanded = false;\n expandedFolders = filter(f => f.name !== folder.name)(expandedFolders);\n } else {\n expandedFolder.isExpanded = true;\n expandedFolders.push(folder.name);\n }\n const newFolders = [...subfolders];\n newFolders.splice(\n newFolders.indexOf(folder),\n 1,\n expandedFolder);\n subfolders = newFolders;\n \n}\n\nconst isComponentSelected = (current,c) =>\n current \n && current.name === c.name\n\nconst isFolderSelected = (current, folder) => \n isInSubfolder(current, folder)\n\n\n\n$: {\n pathPartsThisLevel = !thisLevel \n ? 1\n : normalizedName(thisLevel).split(\"/\").length + 1;\n\n componentsThisLevel = \n pipe(components, [\n filter(isOnThisLevel),\n map(c => ({component:c, title:lastPartOfName(c)})),\n sortBy(\"title\")\n ]);\n\n subfolders = \n pipe(components, [\n filter(notOnThisLevel),\n sortBy(\"name\"),\n map(subFolder),\n uniqWith((f1,f2) => f1.path === f2.path)\n ]);\n}\n\n</script>\n\n<div class=\"root\" style={`padding-left: calc(10px * ${pathPartsThisLevel})`}>\n \n {#each subfolders as folder}\n <div class=\"hierarchy-item folder\"\n on:click|stopPropagation={() => expandFolder(folder)}>\n <span>{@html getIcon(folder.isExpanded ? \"chevron-down\" : \"chevron-right\", \"16\")}</span>\n <span class=\"title\" class:currentfolder={$store.currentFrontEndItem && isInSubfolder(folder.name, $store.currentFrontEndItem)}>{folder.name}</span>\n {#if folder.isExpanded}\n <svelte:self components={subComponents(folder.name)} \n thisLevel={folder.path} />\n {/if}\n </div>\n {/each}\n\n {#each componentsThisLevel as component}\n <div class=\"hierarchy-item component\" class:selected={isComponentSelected($store.currentFrontEndItem, component.component)}\n on:click|stopPropagation={() => store.setCurrentComponent(component.component)}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">{component.title}</span>\n </div>\n {/each}\n\n</div>\n\n<style>\n\n.root {\n color: var(--secondary50);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.hierarchy-item {\n cursor: pointer;\n padding: 5px 0px;\n}\n\n.hierarchy-item:hover {\n color: var(--secondary);\n}\n\n.component {\n margin-left: 5px;\n}\n\n.currentfolder {\n color: var(--secondary100);\n}\n\n.selected {\n color: var(--primary100);\n font-weight: bold;\n}\n\n.title {\n margin-left: 10px;\n}\n\n\n</style>","<script>\nimport { store } from \"../builderStore\";\nimport getIcon from \"../common/icon\";\n\nconst getPage = (s, name) => {\n const props = s.pages[name];\n return ({name, props});\n}\n\n</script>\n\n<div class=\"root\">\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndItem && $store.currentPageName === \"main\"}\n on:click|stopPropagation={() => store.setCurrentPage(\"main\")}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">Main</span>\n </div>\n\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndItem && $store.currentPageName === \"unauthenticated\"}\n on:click|stopPropagation={() => store.setCurrentPage(\"unauthenticated\")}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">Login</span>\n </div>\n\n</div>\n\n<style>\n\n.root {\n padding-bottom: 10px;\n padding-left: 10px;\n font-size: .9rem;\n color: var(--secondary50);\n font-weight: bold;\n}\n\n.hierarchy-item {\n cursor: pointer;\n padding: 5px 0px;\n}\n\n.hierarchy-item:hover {\n color: var(--secondary100);\n}\n\n.component {\n margin-left: 5px;\n}\n\n.selected {\n color: var(--primary100);\n font-weight: bold;\n}\n\n\n.title {\n margin-left: 10px;\n}\n\n</style>","<script>\n\nexport let checked=false;\nexport let label=\"\";\n\n</script>\n\n<input class=\"uk-checkbox\" type=\"checkbox\" bind:checked on:change />{label}\n\n<style>\n\ninput {\n margin-right:7px;\n}\n\n</style>","<script>\nexport let text = \"\";\nexport let label = \"\";\nexport let width = \"medium\";\nexport let size = \"small\";\nexport let margin = true;\nexport let infoText = \"\";\nexport let hasError = false;\nexport let disabled = false;\n</script>\n\n<div class:uk-margin={margin}>\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\"\n class:uk-form-danger={hasError}\n on:change\n bind:value={text} \n {disabled}>\n </div>\n {#if infoText}\n <div class=\"info-text\">{infoText}</div>\n {/if}\n</div>\n\n<style>\n.info-text {\n font-size: 0.7rem;\n color: var(--secondary50);\n}\n</style>\n\n","<script>\nimport {createEventDispatcher} from \"svelte\";\n\nexport let selected;\nexport let label;\nexport let options;\nexport let valueMember;\nexport let textMember;\nexport let multiple=false;\nexport let width = \"medium\";\nexport let size = \"small\";\n\nconst dispatch =createEventDispatcher();\n\n\n</script>\n\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n {#if multiple}\n \n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" multiple bind:value={selected} on:change>\n {#each options as option}\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\n {/each}\n </select>\n\n {:else}\n\n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" bind:value={selected} on:change>\n {#each options as option}\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\n {/each}\n </select>\n {/if}\n </div>\n</div>\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nexport function nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nimport process from 'process';\nvar formatRegExp = /%[sdj%]/g;\nexport function format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexport function deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexport function debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nexport function inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexport function isArray(ar) {\n return Array.isArray(ar);\n}\n\nexport function isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexport function isNull(arg) {\n return arg === null;\n}\n\nexport function isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexport function isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexport function isString(arg) {\n return typeof arg === 'string';\n}\n\nexport function isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexport function isUndefined(arg) {\n return arg === void 0;\n}\n\nexport function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexport function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexport function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexport function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexport function isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexport function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexport function isBuffer(maybeBuf) {\n return Buffer.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexport function log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nimport inherits from './inherits';\nexport {inherits}\n\nexport function _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport default {\n inherits: inherits,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect,\n deprecate: deprecate,\n format: format,\n debuglog: debuglog\n}\n","import {\r\n isString\r\n} from \"lodash/fp\";\r\n\r\nimport {\r\n BB_STATE_BINDINGPATH, BB_STATE_FALLBACK, \r\n BB_STATE_BINDINGSOURCE\r\n} from \"@budibase/client/src/state/isState\";\r\n\r\nexport const isBinding = value => \r\n !isString(value) \r\n && value\r\n && isString(value[BB_STATE_BINDINGPATH])\r\n && value[BB_STATE_BINDINGPATH].length > 0;\r\n\r\nexport const setBinding = ({path, fallback, source}, binding={} ) => {\r\n if(isNonEmptyString(path)) binding[BB_STATE_BINDINGPATH] = path;\r\n if(isNonEmptyString(fallback)) binding[BB_STATE_FALLBACK] = fallback;\r\n binding[BB_STATE_BINDINGSOURCE] = source || \"store\";\r\n return binding\r\n}\r\n\r\nexport const getBinding = binding => ({\r\n path: binding[BB_STATE_BINDINGPATH] || \"\",\r\n fallback: binding[BB_STATE_FALLBACK] || \"\",\r\n source: binding[BB_STATE_BINDINGSOURCE] || \"store\"\r\n});\r\n\r\nconst isNonEmptyString = s => isString(s) && s.length > 0;","import { types } from \"./types\";\nimport { \n createProps, arrayElementComponentName \n} from \"./createProps\";\nimport { isString } from \"util\";\nimport { \n includes, filter, map, keys, \n flatten, flattenDeep, each,\n indexOf, isUndefined\n} from \"lodash/fp\";\nimport { common } from \"../../../../core/src\";\nimport {\n isBinding\n} from \"../../common/binding\";\n\nconst pipe = common.$;\n\nconst makeError = (errors, propName, stack) => (message) =>\n errors.push({\n stack,\n propName, \n error:message});\n\nexport const recursivelyValidate = (rootProps, getComponent, stack=[]) => {\n\n const getComponentPropsDefinition = componentName => {\n if(componentName.includes(\":\")) {\n const [parentComponent, arrayProp] = componentName.split(\":\");\n return getComponent(parentComponent)[arrayProp].elementDefinition;\n }\n return getComponent(componentName);\n }\n\n if(!rootProps._component) {\n const errs = [];\n makeError(errs, \"_component\", stack)(\"Component is not set\");\n return errs;\n // this would break everything else anyway\n }\n\n const propsDef = getComponentPropsDefinition(\n rootProps._component);\n\n const getPropsDefArray = (def) => pipe(def, [\n keys,\n map(k => def[k].name \n ? expandPropDef(def[k])\n : ({\n ...expandPropDef(def[k]), \n name:k }))\n ]);\n\n const propsDefArray = getPropsDefArray(propsDef);\n\n const errors = validateProps(\n propsDef,\n rootProps,\n stack,\n true);\n\n const validateChildren = (_defArray, _props, _stack) => pipe(_defArray, [\n filter(d => d.type === \"component\"),\n map(d => recursivelyValidate(\n _props[d.name], \n getComponentPropsDefinition, \n [..._stack, d.name])),\n flatten\n ]);\n\n const childErrors = validateChildren(\n propsDefArray, rootProps, stack);\n\n const childArrayErrors = pipe(propsDefArray, [\n filter(d => d.type === \"array\"),\n map(d => pipe(rootProps[d.name], [ \n map(elementProps => pipe(d.elementDefinition, [\n getPropsDefArray,\n arr => validateChildren(\n arr, \n elementProps,\n [...stack, \n `${d.name}[${indexOf(elementProps)(rootProps[d.name])}]`]) \n ])) \n ]))\n ]);\n\n return flattenDeep([errors, ...childErrors, ...childArrayErrors]);\n}\n\nconst expandPropDef = propDef => {\n const p = isString(propDef)\n ? types[propDef].defaultDefinition()\n : propDef;\n if(p.type === \"array\" && isString(p.elementDefinition)) {\n p.elementDefinition = types[p.elementDefinition].defaultDefinition()\n }\n return p;\n}\n\n\nexport const validateProps = (propsDefinition, props, stack=[], isFinal=true, isArrayElement=false) => {\n\n const errors = [];\n\n if(isFinal && !props._component && !isArrayElement) {\n makeError(errors, \"_component\", stack)(\"Component is not set\");\n return errors;\n // this would break everything else anyway\n }\n\n for(let propDefName in propsDefinition) {\n \n if(propDefName === \"_component\") continue;\n\n const propDef = expandPropDef(propsDefinition[propDefName]);\n\n const type = types[propDef.type];\n\n const error = makeError(errors, propDefName, stack); \n\n const propValue = props[propDefName];\n\n // component declarations dont need to define al props.\n if(!isFinal && isUndefined(propValue)) continue;\n\n if(isFinal && propDef.required && propValue) {\n error(`Property ${propDefName} is required`);\n continue;\n } \n\n if(isBinding(propValue)) {\n if(propDef.type === \"array\" \n || propDef.type === \"component\"\n || propDef.type === \"event\") {\n error(`Cannot apply binding to type ${propDef.type}`);\n continue;\n }\n }\n else if(!type.isOfType(propValue)) {\n error(`Property ${propDefName} is not of type ${propDef.type}. Actual value ${propValue}`)\n continue;\n }\n\n if(propDef.type === \"array\") {\n let index = 0;\n for(let arrayItem of propValue) {\n const arrayErrs = validateProps(\n propDef.elementDefinition,\n arrayItem,\n [...stack, `${propDefName}[${index}]`],\n isFinal,\n true\n )\n for(let arrErr of arrayErrs) {\n errors.push(arrErr);\n }\n index++;\n } \n }\n\n if(propDef.type === \"options\" \n && propValue\n && !isBinding(propValue)\n && !includes(propValue)(propDef.options)) {\n error(`Property ${propDefName} is not one of allowed options. Acutal value is ${propValue}`);\n }\n\n }\n\n return errors;\n}\n\nexport const validatePropsDefinition = (propsDefinition) => {\n const { errors } = createProps(\"dummy_component_name\", propsDefinition);\n \n\n // arrar props without elementDefinition\n pipe(propsDefinition, [\n keys,\n map(k => ({\n propDef:propsDefinition[k],\n propName:k\n })),\n filter(d => d.propDef.type === \"array\" && !d.propDef.elementDefinition),\n each(d => makeError(errors, d.propName)(`${d.propName} does not have a definition for it's item props`))\n ]);\n\n const arrayPropValidationErrors = pipe(propsDefinition, [\n keys,\n map(k => propsDefinition[k]),\n filter(d => d.type === \"array\" && d.elementDefinition),\n map(d => validatePropsDefinition(d.elementDefinition)),\n flatten\n ]);\n\n pipe(propsDefinition, [\n keys,\n map(k => ({\n propDef:propsDefinition[k],\n propName:k\n })),\n filter(d => d.propDef.type === \"options\"\n && (!d.propDef.options || d.propDef.options.length === 0)),\n each(d => makeError(errors, d.propName)(`${d.propName} does not have any options`))\n ]);\n\n return [...errors, ...arrayPropValidationErrors] \n\n}\n\n","<script>\n\nimport { searchAllComponents } from \"./pagesParsing/searchComponents\";\nimport { store } from \"../builderStore\";\n\nexport let onComponentChosen = () => {};\n\nlet allComponents = [];\nlet phrase = \"\";\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n});\n\n$: filteredComponents = \n !phrase \n ? [] \n : searchAllComponents(allComponents, phrase);\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-search uk-search-large\">\n <span uk-search-icon></span>\n <input class=\"uk-search-input\" \n type=\"search\" \n placeholder=\"Based on component...\" \n bind:value={phrase}>\n </form>\n\n <div>\n {#each filteredComponents as component}\n <div class=\"component\" on:click={() => onComponentChosen(component)}>\n <div class=\"title\">{component.name}</div>\n <div class=\"description\">{component.description}</div>\n </div>\n {/each}\n </div>\n\n</div>\n\n<style>\n\n.component {\n padding:5px;\n border-style: solid;\n border-width: 0 0 1px 0;\n border-color: var(--lightslate);\n cursor: pointer;\n}\n\n.component:hover {\n background-color: var(--primary10);\n}\n\n.component > .title {\n font-size: 13pt;\n color: var(--secondary100);\n}\n\n.component > .description {\n font-size: 10pt;\n color: var(--primary75);\n font-style: italic;\n}\n\n</style>","<script>\nexport let style=\"\";\n</script>\n\n<div class=\"root\" style={style}>\n <slot />\n</div>\n\n<style>\n\n.root {\n display: flex;\n}\n\n.root:last-child {\n border-radius: 0 var(--borderradius) var(--borderradius) 0;\n}\n\n.root:first-child {\n border-radius: var(--borderradius) 0 0 var(--borderradius); \n}\n\n.root:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n</style>","/*! UIkit 3.2.0 | http://www.getuikit.com | (c) 2014 - 2019 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = global || self, global.UIkit = factory());\n}(this, function () { 'use strict';\n\n var objPrototype = Object.prototype;\n var hasOwnProperty = objPrototype.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateCache = {};\n var hyphenateRe = /([a-z\\d])([A-Z])/g;\n\n function hyphenate(str) {\n\n if (!(str in hyphenateCache)) {\n hyphenateCache[str] = str\n .replace(hyphenateRe, '$1-$2')\n .toLowerCase();\n }\n\n return hyphenateCache[str];\n }\n\n var camelizeRe = /-(\\w)/g;\n\n function camelize(str) {\n return str.replace(camelizeRe, toUpper);\n }\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n function ucfirst(str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n }\n\n var strPrototype = String.prototype;\n var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var arrPrototype = Array.prototype;\n\n var includesFn = function (search, i) { return ~this.indexOf(search, i); };\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = arrPrototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var findIndexFn = arrPrototype.findIndex || function (predicate) {\n var arguments$1 = arguments;\n\n for (var i = 0; i < this.length; i++) {\n if (predicate.call(arguments$1[1], this[i], i, this)) {\n return i;\n }\n }\n return -1;\n };\n\n function findIndex(array, predicate) {\n return findIndexFn.call(array, predicate);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n function isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) === objPrototype;\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return isObject(obj) && obj.nodeType === 9;\n }\n\n function isJQuery(obj) {\n return isObject(obj) && !!obj.jquery;\n }\n\n function isNode(obj) {\n return obj instanceof Node || isObject(obj) && obj.nodeType >= 1;\n }\n\n var toString = objPrototype.toString;\n function isNodeCollection(obj) {\n return toString.call(obj).match(/^\\[object (NodeList|HTMLCollection)\\]$/);\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj)\n ? obj.length\n : isObject(obj)\n ? Object.keys(obj).length\n : false\n );\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value)\n ? value\n : value === 'true' || value === '1' || value === ''\n ? true\n : value === 'false' || value === '0'\n ? false\n : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return !isNaN(number) ? number : false;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n function toNode(element) {\n return isNode(element) || isWindow(element) || isDocument(element)\n ? element\n : isNodeCollection(element) || isJQuery(element)\n ? element[0]\n : isArray(element)\n ? toNode(element[0])\n : null;\n }\n\n function toNodes(element) {\n return isNode(element)\n ? [element]\n : isNodeCollection(element)\n ? arrPrototype.slice.call(element)\n : isArray(element)\n ? element.map(toNode).filter(Boolean)\n : isJQuery(element)\n ? element.toArray()\n : [];\n }\n\n function toList(value) {\n return isArray(value)\n ? value\n : isString(value)\n ? value.split(/,(?![^(]*\\))/).map(function (value) { return isNumeric(value)\n ? toNumber(value)\n : toBoolean(value.trim()); })\n : [value];\n }\n\n function toMs(time) {\n return !time\n ? 0\n : endsWith(time, 'ms')\n ? toFloat(time)\n : toFloat(time) * 1000;\n }\n\n function isEqual(value, other) {\n return value === other\n || isObject(value)\n && isObject(other)\n && Object.keys(value).length === Object.keys(other).length\n && each(value, function (val, key) { return val === other[key]; });\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp((a + \"|\" + b), 'mg'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n target = Object(target);\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n function last(array) {\n return array[array.length - 1];\n }\n\n function each(obj, cb) {\n for (var key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n\n function sortBy(array, prop) {\n return array.sort(function (ref, ref$1) {\n var propA = ref[prop]; if ( propA === void 0 ) propA = 0;\n var propB = ref$1[prop]; if ( propB === void 0 ) propB = 0;\n\n return propA > propB\n ? 1\n : propB > propA\n ? -1\n : 0;\n }\n );\n }\n\n function uniqueBy(array, prop) {\n var seen = new Set();\n return array.filter(function (ref) {\n var check = ref[prop];\n\n return seen.has(check)\n ? false\n : seen.add(check) || true;\n } // IE 11 does not return the Set object\n );\n }\n\n function clamp(number, min, max) {\n if ( min === void 0 ) min = 0;\n if ( max === void 0 ) max = 1;\n\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect(r1, r2) {\n return r1.left < r2.right &&\n r1.right > r2.left &&\n r1.top < r2.bottom &&\n r1.bottom > r2.top;\n }\n\n function pointInRect(point, rect) {\n return point.x <= rect.right &&\n point.x >= rect.left &&\n point.y <= rect.bottom &&\n point.y >= rect.top;\n }\n\n var Dimensions = {\n\n ratio: function(dimensions, prop, value) {\n var obj;\n\n\n var aProp = prop === 'width' ? 'height' : 'width';\n\n return ( obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj );\n },\n\n contain: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = assign({}, dimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] > maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n },\n\n cover: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = this.contain(dimensions, maxDimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] < maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n }\n\n };\n\n function attr(element, name, value) {\n\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) { return element.hasAttribute(name); });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.hasAttribute(name) && element.removeAttribute(name); }\n ); }\n );\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, (\"data-\" + attribute)]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n\n /* global DocumentTouch */\n\n var isIE = /msie|trident/i.test(window.navigator.userAgent);\n var isRtl = attr(document.documentElement, 'dir') === 'rtl';\n\n var hasTouchEvents = 'ontouchstart' in window;\n var hasPointerEvents = window.PointerEvent;\n var hasTouch = hasTouchEvents\n || window.DocumentTouch && document instanceof DocumentTouch\n || navigator.maxTouchPoints; // IE >=11\n\n var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';\n var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';\n var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';\n var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';\n var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';\n var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n\n function query(selector, context) {\n return toNode(selector) || find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || findAll(selector, getContext(selector, context));\n }\n\n function getContext(selector, context) {\n if ( context === void 0 ) context = document;\n\n return isContextSelector(selector) || isDocument(context)\n ? context\n : context.ownerDocument;\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if ( context === void 0 ) context = document;\n\n\n if (!selector || !isString(selector)) {\n return null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n var removes;\n\n if (isContextSelector(selector)) {\n\n removes = [];\n\n selector = splitSelector(selector).map(function (selector, i) {\n\n var ctx = context;\n\n if (selector[0] === '!') {\n\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(context.parentNode, selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n\n }\n\n if (selector[0] === '-') {\n\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n\n }\n\n if (!ctx) {\n return null;\n }\n\n if (!ctx.id) {\n ctx.id = \"uk-\" + (Date.now()) + i;\n removes.push(function () { return removeAttr(ctx, 'id'); });\n }\n\n return (\"#\" + (escape(ctx.id)) + \" \" + selector);\n\n }).filter(Boolean).join(',');\n\n context = document;\n\n }\n\n try {\n\n return context[queryFn](selector);\n\n } catch (e) {\n\n return null;\n\n } finally {\n\n removes && removes.forEach(function (remove) { return remove(); });\n\n }\n\n }\n\n var contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n\n function isContextSelector(selector) {\n return isString(selector) && selector.match(contextSelectorRe);\n }\n\n var selectorRe = /.*?[^\\\\](?:,|$)/g;\n\n function splitSelector(selector) {\n return selector.match(selectorRe).map(function (selector) { return selector.replace(/,$/, '').trim(); });\n }\n\n var elProto = Element.prototype;\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) { return matchesFn.call(element, selector); });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n\n ancestor = ancestor.parentNode;\n\n } while (ancestor && ancestor.nodeType === 1);\n };\n\n function closest(element, selector) {\n\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isNode(element)\n ? closestFn.call(element, selector)\n : toNodes(element).map(function (element) { return closest(element, selector); }).filter(Boolean);\n }\n\n function parents(element, selector) {\n var elements = [];\n element = toNode(element);\n\n while ((element = element.parentNode) && element.nodeType === 1) {\n if (matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n\n var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) { return (\"\\\\\" + match); }); };\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some(function (element) { return voidElements[element.tagName.toLowerCase()]; });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) { return element.offsetWidth || element.offsetHeight || element.getClientRects().length; });\n }\n\n var selInput = 'input,select,textarea,button';\n function isInput(element) {\n return toNodes(element).some(function (element) { return matches(element, selInput); });\n }\n\n function filter(element, selector) {\n return toNodes(element).filter(function (element) { return matches(element, selector); });\n }\n\n function within(element, selector) {\n return !isString(selector)\n ? element === selector || (isDocument(selector)\n ? selector.documentElement\n : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || closest(element, selector);\n }\n\n function on() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var targets = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n\n targets = toEventTargets(targets);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (selector) {\n listener = delegate(targets, selector, listener);\n }\n\n if (useCapture && useCapture.self) {\n listener = selfFilter(listener);\n }\n\n useCapture = useCaptureFilter(useCapture);\n\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.addEventListener(type, listener, useCapture); }\n ); }\n );\n return function () { return off(targets, type, listener, useCapture); };\n }\n\n function off(targets, type, listener, useCapture) {\n if ( useCapture === void 0 ) useCapture = false;\n\n useCapture = useCaptureFilter(useCapture);\n targets = toEventTargets(targets);\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.removeEventListener(type, listener, useCapture); }\n ); }\n );\n }\n\n function once() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); }\n , true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if ( bubbles === void 0 ) bubbles = true;\n if ( cancelable === void 0 ) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n\n function delegate(delegates, selector, listener) {\n var this$1 = this;\n\n return function (e) {\n\n delegates.forEach(function (delegate) {\n\n var current = selector[0] === '>'\n ? findAll(selector, delegate).reverse().filter(function (element) { return within(e.target, element); })[0]\n : closest(e.target, selector);\n\n if (current) {\n e.delegate = delegate;\n e.current = current;\n\n listener.call(this$1, e);\n }\n\n });\n\n };\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n\n function useCaptureFilter(options) {\n return options && isIE && !isBoolean(options)\n ? !!options.capture\n : options;\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target)\n ? target.map(toEventTarget).filter(Boolean)\n : isString(target)\n ? findAll(target)\n : isEventTarget(target)\n ? [target]\n : toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n }\n\n function getEventPos(e, prop) {\n if ( prop === void 0 ) prop = 'client';\n\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref[(prop + \"X\")];\n var y = ref[(prop + \"Y\")];\n\n return {x: x, y: y};\n }\n\n /* global setImmediate */\n\n var Promise = 'Promise' in window ? window.Promise : PromiseFn;\n\n var Deferred = function() {\n var this$1 = this;\n\n this.promise = new Promise(function (resolve, reject) {\n this$1.reject = reject;\n this$1.resolve = resolve;\n });\n };\n\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n\n var async = 'setImmediate' in window ? setImmediate : setTimeout;\n\n function PromiseFn(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(\n function (x) {\n promise.resolve(x);\n },\n function (r) {\n promise.reject(r);\n }\n );\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(\n x,\n function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n },\n function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n }\n );\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1 = this;\n\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1 = this;\n\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n return new Promise(function (resolve, reject) {\n\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n\n env.beforeSend(env);\n\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n\n xhr[prop] = env[prop];\n\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n\n });\n\n on(xhr, 'error', function () { return reject(assign(Error('Network Error'), {xhr: xhr})); });\n on(xhr, 'timeout', function () { return reject(assign(Error('Network Timeout'), {xhr: xhr})); });\n\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = reject;\n img.onload = function () { return resolve(img); };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n\n }\n\n function ready(fn) {\n\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n var unbind = on(document, 'DOMContentLoaded', function () {\n unbind();\n fn();\n });\n }\n\n function index(element, ref) {\n return ref\n ? toNodes(element).indexOf(toNode(ref))\n : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element);\n }\n\n function getIndex(i, elements, current, finite) {\n if ( current === void 0 ) current = 0;\n if ( finite === void 0 ) finite = false;\n\n\n elements = toNodes(elements);\n\n var length = elements.length;\n\n i = isNumeric(i)\n ? toNumber(i)\n : i === 'next'\n ? current + 1\n : i === 'previous'\n ? current - 1\n : index(elements, i);\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = $(parent);\n return isUndefined(html)\n ? parent.innerHTML\n : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n\n parent = $(parent);\n\n if (!parent.hasChildNodes()) {\n return append(parent, element);\n } else {\n return insertNodes(element, function (element) { return parent.insertBefore(element, parent.firstChild); });\n }\n }\n\n function append(parent, element) {\n parent = $(parent);\n return insertNodes(element, function (element) { return parent.appendChild(element); });\n }\n\n function before(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); });\n }\n\n function after(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.nextSibling\n ? before(ref.nextSibling, element)\n : append(ref.parentNode, element); }\n );\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element\n ? 'length' in element\n ? toNodes(element).map(fn)\n : fn(element)\n : null;\n }\n\n function remove(element) {\n toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); });\n }\n\n function wrapAll(element, structure) {\n\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) { return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); }\n ));\n }\n\n function unwrap(element) {\n toNodes(element)\n .map(function (element) { return element.parentNode; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .forEach(function (parent) {\n before(parent, parent.childNodes);\n remove(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n\n var matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n\n }\n\n function apply(node, fn) {\n\n if (!node || node.nodeType !== 1) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n\n function $(selector, context) {\n return !isString(selector)\n ? toNode(selector)\n : isHtml(selector)\n ? toNode(fragment(selector))\n : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector)\n ? toNodes(selector)\n : isHtml(selector)\n ? toNodes(fragment(selector))\n : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s*</);\n }\n\n function addClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', function (value) { return (value || '').replace(new RegExp((\"\\\\b\" + cls + \"\\\\b\"), 'g'), ''); });\n }\n\n function replaceClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n return cls && toNodes(element).some(function (element) { return element.classList.contains(cls.split(' ')[0]); });\n }\n\n function toggleClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n\n if (!args.length) {\n return;\n }\n\n args = getArgs$1(args);\n\n var force = !isString(last(args)) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false\n\n args = args.filter(Boolean);\n\n toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n for (var i = 0; i < args.length; i++) {\n supports.Force\n ? classList.toggle.apply(classList, [args[i]].concat(force))\n : (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]));\n }\n });\n\n }\n\n function apply$1(element, args, fn) {\n args = getArgs$1(args).filter(Boolean);\n\n args.length && toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n supports.Multiple\n ? classList[fn].apply(classList, args)\n : args.forEach(function (cls) { return classList[fn](cls); });\n });\n }\n\n function getArgs$1(args) {\n return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); }\n , []);\n }\n\n // IE 11\n var supports = {\n\n get Multiple() {\n return this.get('_multiple');\n },\n\n get Force() {\n return this.get('_force');\n },\n\n get: function(key) {\n\n if (!hasOwn(this, key)) {\n var ref = document.createElement('_');\n var classList = ref.classList;\n classList.add('a', 'b');\n classList.toggle('c', false);\n this._multiple = classList.contains('b');\n this._force = !classList.contains('c');\n }\n\n return this[key];\n }\n\n };\n\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value) {\n\n return toNodes(element).map(function (element) {\n\n if (isString(property)) {\n\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && !isNumber(value)) {\n element.style.removeProperty(property);\n } else {\n element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + \"px\") : value;\n }\n\n } else if (isArray(property)) {\n\n var styles = getStyles(element);\n\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n\n } else if (isObject(property)) {\n each(property, function (value, property) { return css(element, property, value); });\n }\n\n return element;\n\n })[0];\n\n }\n\n function getStyles(element, pseudoElt) {\n element = toNode(element);\n return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var vars = {};\n\n function getCssVar(name) {\n\n var docEl = document.documentElement;\n\n if (!isIE) {\n return getStyles(docEl).getPropertyValue((\"--uk-\" + name));\n }\n\n if (!(name in vars)) {\n\n /* usage in css: .uk-name:before { content:\"xyz\" } */\n\n var element = append(docEl, document.createElement('div'));\n\n addClass(element, (\"uk-\" + name));\n\n vars[name] = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n\n remove(element);\n\n }\n\n return vars[name];\n\n }\n\n var cssProps = {};\n\n function propName(name) {\n\n var ret = cssProps[name];\n if (!ret) {\n ret = cssProps[name] = vendorPropName(name) || name;\n }\n return ret;\n }\n\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n\n function vendorPropName(name) {\n\n name = hyphenate(name);\n\n var ref = document.documentElement;\n var style = ref.style;\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length, prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + (cssPrefixes[i]) + \"-\" + name;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if ( duration === void 0 ) duration = 400;\n if ( timing === void 0 ) timing = 'linear';\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n for (var name in props) {\n var value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration);\n\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n 'transition-property': '',\n 'transition-duration': '',\n 'transition-timing-function': ''\n });\n type === 'transitioncanceled' ? reject() : resolve();\n }, {self: true});\n\n addClass(element, 'uk-transition');\n css(element, assign({\n 'transition-property': Object.keys(props).map(propName).join(','),\n 'transition-duration': (duration + \"ms\"),\n 'transition-timing-function': timing\n }, props));\n\n }); }\n ));\n\n }\n\n var Transition = {\n\n start: transition,\n\n stop: function(element) {\n trigger(element, 'transitionend');\n return Promise.resolve();\n },\n\n cancel: function(element) {\n trigger(element, 'transitioncanceled');\n },\n\n inProgress: function(element) {\n return hasClass(element, 'uk-transition');\n }\n\n };\n\n var animationPrefix = 'uk-animation-';\n var clsCancelAnimation = 'uk-cancel-animation';\n\n function animate(element, animation, duration, origin, out) {\n var arguments$1 = arguments;\n if ( duration === void 0 ) duration = 200;\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n if (hasClass(element, clsCancelAnimation)) {\n requestAnimationFrame(function () { return Promise.resolve().then(function () { return animate.apply(void 0, arguments$1).then(resolve, reject); }\n ); }\n );\n return;\n }\n\n var cls = animation + \" \" + animationPrefix + (out ? 'leave' : 'enter');\n\n if (startsWith(animation, animationPrefix)) {\n\n if (origin) {\n cls += \" uk-transform-origin-\" + origin;\n }\n\n if (out) {\n cls += \" \" + animationPrefix + \"reverse\";\n }\n\n }\n\n reset();\n\n once(element, 'animationend animationcancel', function (ref) {\n var type = ref.type;\n\n\n var hasReset = false;\n\n if (type === 'animationcancel') {\n reject();\n reset();\n } else {\n resolve();\n Promise.resolve().then(function () {\n hasReset = true;\n reset();\n });\n }\n\n requestAnimationFrame(function () {\n if (!hasReset) {\n addClass(element, clsCancelAnimation);\n\n requestAnimationFrame(function () { return removeClass(element, clsCancelAnimation); });\n }\n });\n\n }, {self: true});\n\n css(element, 'animationDuration', (duration + \"ms\"));\n addClass(element, cls);\n\n function reset() {\n css(element, 'animationDuration', '');\n removeClasses(element, (animationPrefix + \"\\\\S*\"));\n }\n\n }); }\n ));\n\n }\n\n var inProgress = new RegExp((animationPrefix + \"(enter|leave)\"));\n var Animation = {\n\n in: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, false);\n },\n\n out: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n\n inProgress: function(element) {\n return inProgress.test(attr(element, 'class'));\n },\n\n cancel: function(element) {\n trigger(element, 'animationcancel');\n }\n\n };\n\n var dirs = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n\n var flipped = {element: elAttach, target: targetAttach};\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = getDimensions(element);\n var targetDim = getDimensions(target);\n var position = targetDim;\n\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n if (flip) {\n\n var boundaries = [getDimensions(getWindow(element))];\n\n if (boundary) {\n boundaries.unshift(getDimensions(boundary));\n }\n\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n boundaries.some(function (boundary) {\n\n var elemOffset = elAttach[dir] === align\n ? -dim[prop]\n : elAttach[dir] === alignFlip\n ? dim[prop]\n : 0;\n\n var targetOffset = targetAttach[dir] === align\n ? targetDim[prop]\n : targetAttach[dir] === alignFlip\n ? -targetDim[prop]\n : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n\n return elAttach[dir] === 'center' && (\n apply(centerOffset, centerTargetOffset)\n || apply(-centerOffset, -centerTargetOffset)\n ) || apply(elemOffset, targetOffset);\n\n }\n\n function apply(elemOffset, targetOffset) {\n\n var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2;\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset\n ? flipped[el][dir]\n : flipped[el][dir] === dirs[prop][1]\n ? dirs[prop][2]\n : dirs[prop][1];\n });\n\n return true;\n }\n\n }\n\n });\n\n });\n }\n\n offset(element, position);\n\n return flipped;\n }\n\n function offset(element, coordinates) {\n\n element = toNode(element);\n\n if (coordinates) {\n\n var currentOffset = offset(element);\n var pos = css(element, 'position');\n\n ['left', 'top'].forEach(function (prop) {\n if (prop in coordinates) {\n var value = css(element, prop);\n css(element, prop, coordinates[prop] - currentOffset[prop]\n + toFloat(pos === 'absolute' && value === 'auto'\n ? position(element)[prop]\n : value)\n );\n }\n });\n\n return;\n }\n\n return getDimensions(element);\n }\n\n function getDimensions(element) {\n\n element = toNode(element);\n\n if (!element) {\n return {};\n }\n\n var ref = getWindow(element);\n var top = ref.pageYOffset;\n var left = ref.pageXOffset;\n\n if (isWindow(element)) {\n\n var height = element.innerHeight;\n var width = element.innerWidth;\n\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n bottom: top + height,\n right: left + width\n };\n }\n\n var style, hidden;\n\n if (!isVisible(element) && css(element, 'display') === 'none') {\n\n style = attr(element, 'style');\n hidden = attr(element, 'hidden');\n\n attr(element, {\n style: ((style || '') + \";display:block !important;\"),\n hidden: null\n });\n }\n\n var rect = element.getBoundingClientRect();\n\n if (!isUndefined(style)) {\n attr(element, {style: style, hidden: hidden});\n }\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top + top,\n left: rect.left + left,\n bottom: rect.bottom + top,\n right: rect.right + left\n };\n }\n\n function position(element) {\n element = toNode(element);\n\n var parent = element.offsetParent || getDocEl(element);\n var parentOffset = offset(parent);\n var ref = ['top', 'left'].reduce(function (props, prop) {\n var propName = ucfirst(prop);\n props[prop] -= parentOffset[prop]\n + toFloat(css(element, (\"margin\" + propName)))\n + toFloat(css(parent, (\"border\" + propName + \"Width\")));\n return props;\n }, offset(element));\n var top = ref.top;\n var left = ref.left;\n\n return {top: top, left: left};\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName = ucfirst(prop);\n return function (element, value) {\n\n element = toNode(element);\n\n if (isUndefined(value)) {\n\n if (isWindow(element)) {\n return element[(\"inner\" + propName)];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[(\"offset\" + propName)], doc[(\"scroll\" + propName)]);\n }\n\n value = css(element, prop);\n value = value === 'auto' ? element[(\"offset\" + propName)] : toFloat(value) || 0;\n\n return value - boxModelAdjust(prop, element);\n\n } else {\n\n css(element, prop, !value && value !== 0\n ? ''\n : +value + boxModelAdjust(prop, element) + 'px'\n );\n\n }\n\n };\n }\n\n function boxModelAdjust(prop, element, sizing) {\n if ( sizing === void 0 ) sizing = 'border-box';\n\n return css(element, 'boxSizing') === sizing\n ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value\n + toFloat(css(element, (\"padding\" + prop)))\n + toFloat(css(element, (\"border\" + prop + \"Width\"))); }\n , 0)\n : 0;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0])\n ? pos.concat(['center'])\n : y.test(pos[0])\n ? ['center'].concat(pos)\n : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n function flipPosition(pos) {\n switch (pos) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n default:\n return pos;\n }\n }\n\n function isInView(element, topOffset, leftOffset) {\n if ( topOffset === void 0 ) topOffset = 0;\n if ( leftOffset === void 0 ) leftOffset = 0;\n\n\n if (!isVisible(element)) {\n return false;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var client = element.getBoundingClientRect();\n var bounding = {\n top: -topOffset,\n left: -leftOffset,\n bottom: topOffset + height(win),\n right: leftOffset + width(win)\n };\n\n return intersectRect(client, bounding) || pointInRect({x: client.left, y: client.top}, bounding);\n\n }\n\n function scrolledOver(element, heightOffset) {\n if ( heightOffset === void 0 ) heightOffset = 0;\n\n\n if (!isVisible(element)) {\n return 0;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var doc = getDocument(element);\n var elHeight = element.offsetHeight + heightOffset;\n var ref = offsetPosition(element);\n var top = ref[0];\n var vp = height(win);\n var vh = vp + Math.min(0, top - vp);\n var diff = Math.max(0, vp - (height(doc) + heightOffset - (top + elHeight)));\n\n return clamp(((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100)) / 100);\n }\n\n function scrollTop(element, top) {\n element = toNode(element);\n\n if (isWindow(element) || isDocument(element)) {\n var ref = getWindow(element);\n var scrollTo = ref.scrollTo;\n var pageXOffset = ref.pageXOffset;\n scrollTo(pageXOffset, top);\n } else {\n element.scrollTop = top;\n }\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n\n do {\n\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = getWindow(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n\n } while ((element = element.offsetParent));\n\n return offset;\n }\n\n function toPx(value, property, element) {\n if ( property === void 0 ) property = 'width';\n if ( element === void 0 ) element = window;\n\n return isNumeric(value)\n ? +value\n : endsWith(value, 'vh')\n ? percent(height(getWindow(element)), value)\n : endsWith(value, 'vw')\n ? percent(width(getWindow(element)), value)\n : endsWith(value, '%')\n ? percent(getDimensions(element)[property], value)\n : toFloat(value);\n }\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n\n function getWindow(element) {\n return isWindow(element) ? element : getDocument(element).defaultView;\n }\n\n function getDocument(element) {\n return toNode(element).ownerDocument;\n }\n\n function getDocEl(element) {\n return getDocument(element).documentElement;\n }\n\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n var fastdom = {\n\n reads: [],\n writes: [],\n\n read: function(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write: function(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear: function(task) {\n return remove$1(this.reads, task) || remove$1(this.writes, task);\n },\n\n flush: flush\n\n };\n\n function flush() {\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0, fastdom.writes.length));\n\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(true);\n }\n }\n\n function scheduleFlush(microtask) {\n if ( microtask === void 0 ) microtask = false;\n\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n if (microtask) {\n Promise.resolve().then(flush);\n } else {\n requestAnimationFrame(flush);\n }\n }\n }\n\n function runTasks(tasks) {\n var task;\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n function remove$1(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n\n positions: [],\n position: null,\n\n init: function() {\n var this$1 = this;\n\n\n this.positions = [];\n this.position = null;\n\n var ticking = false;\n this.unbind = on(document, 'mousemove', function (e) {\n\n if (ticking) {\n return;\n }\n\n setTimeout(function () {\n\n var time = Date.now();\n var ref = this$1.positions;\n var length = ref.length;\n\n if (length && (time - this$1.positions[length - 1].time > 100)) {\n this$1.positions.splice(0, length);\n }\n\n this$1.positions.push({time: time, x: e.pageX, y: e.pageY});\n\n if (this$1.positions.length > 5) {\n this$1.positions.shift();\n }\n\n ticking = false;\n }, 5);\n\n ticking = true;\n });\n\n },\n\n cancel: function() {\n if (this.unbind) {\n this.unbind();\n }\n },\n\n movesTo: function(target) {\n\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = offset(target);\n var position = last(this.positions);\n var ref = this.positions;\n var prevPos = ref[0];\n\n if (p.left <= position.x && position.x <= p.right && p.top <= position.y && position.y <= p.bottom) {\n return false;\n }\n\n var points = [\n [{x: p.left, y: p.top}, {x: p.right, y: p.bottom}],\n [{x: p.right, y: p.top}, {x: p.left, y: p.bottom}]\n ];\n\n if (p.right <= position.x) ; else if (p.left >= position.x) {\n points[0].reverse();\n points[1].reverse();\n } else if (p.bottom <= position.y) {\n points[0].reverse();\n } else if (p.top >= position.y) {\n points[1].reverse();\n }\n\n return !!points.reduce(function (result, point) {\n return result + (slope(prevPos, point[0]) < slope(position, point[0]) && slope(prevPos, point[1]) > slope(position, point[1]));\n }, 0);\n }\n\n };\n\n function slope(a, b) {\n return (b.y - a.y) / (b.x - a.x);\n }\n\n var strats = {};\n\n strats.events =\n strats.created =\n strats.beforeConnect =\n strats.connected =\n strats.beforeDisconnect =\n strats.disconnected =\n strats.destroy = concatStrat;\n\n // args strategy\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n\n // update strategy\n strats.update = function (parentVal, childVal) {\n return sortBy(concatStrat(parentVal, isFunction(childVal) ? {read: childVal} : childVal), 'order');\n };\n\n // property strategy\n strats.props = function (parentVal, childVal) {\n\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n };\n\n // extend strategy\n strats.computed =\n strats.methods = function (parentVal, childVal) {\n return childVal\n ? parentVal\n ? assign({}, parentVal, childVal)\n : childVal\n : parentVal;\n };\n\n // data strategy\n strats.data = function (parentVal, childVal, vm) {\n\n if (!vm) {\n\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal)\n ? parentVal.call(vm, vm)\n : parentVal,\n isFunction(childVal)\n ? childVal.call(vm, vm)\n : childVal\n );\n }\n\n // concat strategy\n function concatStrat(parentVal, childVal) {\n\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n }\n\n // default strategy\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n\n if ( args === void 0 ) args = [];\n\n try {\n\n return !options\n ? {}\n : startsWith(options, '{')\n ? JSON.parse(options)\n : args.length && !includes(options, ':')\n ? (( obj = {}, obj[args[0]] = options, obj ))\n : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n return options;\n }, {});\n\n } catch (e) {\n return {};\n }\n\n }\n\n var id = 0;\n\n var Player = function(el) {\n this.id = ++id;\n this.el = toNode(el);\n };\n\n Player.prototype.isVideo = function () {\n return this.isYoutube() || this.isVimeo() || this.isHTML5();\n };\n\n Player.prototype.isHTML5 = function () {\n return this.el.tagName === 'VIDEO';\n };\n\n Player.prototype.isIFrame = function () {\n return this.el.tagName === 'IFRAME';\n };\n\n Player.prototype.isYoutube = function () {\n return this.isIFrame() && !!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n };\n\n Player.prototype.isVimeo = function () {\n return this.isIFrame() && !!this.el.src.match(/vimeo\\.com\\/video\\/.*/);\n };\n\n Player.prototype.enableApi = function () {\n var this$1 = this;\n\n\n if (this.ready) {\n return this.ready;\n }\n\n var youtube = this.isYoutube();\n var vimeo = this.isVimeo();\n\n var poller;\n\n if (youtube || vimeo) {\n\n return this.ready = new Promise(function (resolve) {\n\n once(this$1.el, 'load', function () {\n if (youtube) {\n var listener = function () { return post(this$1.el, {event: 'listening', id: this$1.id}); };\n poller = setInterval(listener, 100);\n listener();\n }\n });\n\n listen(function (data) { return youtube && data.id === this$1.id && data.event === 'onReady' || vimeo && Number(data.player_id) === this$1.id; })\n .then(function () {\n resolve();\n poller && clearInterval(poller);\n });\n\n attr(this$1.el, 'src', (\"\" + (this$1.el.src) + (includes(this$1.el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : (\"api=1&player_id=\" + (this$1.id)))));\n\n });\n\n }\n\n return Promise.resolve();\n\n };\n\n Player.prototype.play = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'playVideo', method: 'play'}); });\n } else if (this.isHTML5()) {\n try {\n var promise = this.el.play();\n\n if (promise) {\n promise.catch(noop);\n }\n } catch (e) {}\n }\n };\n\n Player.prototype.pause = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'pauseVideo', method: 'pause'}); });\n } else if (this.isHTML5()) {\n this.el.pause();\n }\n };\n\n Player.prototype.mute = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'mute', method: 'setVolume', value: 0}); });\n } else if (this.isHTML5()) {\n this.el.muted = true;\n attr(this.el, 'muted', '');\n }\n\n };\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*');\n } catch (e) {}\n }\n\n function listen(cb) {\n\n return new Promise(function (resolve) {\n\n once(window, 'message', function (_, data) { return resolve(data); }, false, function (ref) {\n var data = ref.data;\n\n\n if (!data || !isString(data)) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (e) {\n return;\n }\n\n return data && cb(data);\n\n });\n\n });\n\n }\n\n var IntersectionObserver = 'IntersectionObserver' in window\n ? window.IntersectionObserver\n : /*@__PURE__*/(function () {\n function IntersectionObserverClass(callback, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var rootMargin = ref.rootMargin; if ( rootMargin === void 0 ) rootMargin = '0 0';\n\n\n this.targets = [];\n\n var ref$1 = (rootMargin || '0 0').split(' ').map(toFloat);\n var offsetTop = ref$1[0];\n var offsetLeft = ref$1[1];\n\n this.offsetTop = offsetTop;\n this.offsetLeft = offsetLeft;\n\n var pending;\n this.apply = function () {\n\n if (pending) {\n return;\n }\n\n pending = requestAnimationFrame(function () { return setTimeout(function () {\n var records = this$1.takeRecords();\n\n if (records.length) {\n callback(records, this$1);\n }\n\n pending = false;\n }); });\n\n };\n\n this.off = on(window, 'scroll resize load', this.apply, {passive: true, capture: true});\n\n }\n\n IntersectionObserverClass.prototype.takeRecords = function () {\n var this$1 = this;\n\n return this.targets.filter(function (entry) {\n\n var inView = isInView(entry.target, this$1.offsetTop, this$1.offsetLeft);\n\n if (entry.isIntersecting === null || inView ^ entry.isIntersecting) {\n entry.isIntersecting = inView;\n return true;\n }\n\n });\n };\n\n IntersectionObserverClass.prototype.observe = function (target) {\n this.targets.push({\n target: target,\n isIntersecting: null\n });\n this.apply();\n };\n\n IntersectionObserverClass.prototype.disconnect = function () {\n this.targets = [];\n this.off();\n };\n\n return IntersectionObserverClass;\n }());\n\n\n\n var util = /*#__PURE__*/Object.freeze({\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n positionAt: positionAt,\n offset: offset,\n position: position,\n height: height,\n width: width,\n boxModelAdjust: boxModelAdjust,\n flipPosition: flipPosition,\n isInView: isInView,\n scrolledOver: scrolledOver,\n scrollTop: scrollTop,\n offsetPosition: offsetPosition,\n toPx: toPx,\n ready: ready,\n index: index,\n getIndex: getIndex,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: remove,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\n $: $,\n $$: $$,\n isIE: isIE,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerCancel: pointerCancel,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n isTouch: isTouch,\n getEventPos: getEventPos,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n filter: filter,\n within: within,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n findIndex: findIndex,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isJQuery: isJQuery,\n isNode: isNode,\n isNodeCollection: isNodeCollection,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isEmpty: isEmpty,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toList: toList,\n toMs: toMs,\n isEqual: isEqual,\n swap: swap,\n assign: assign,\n last: last,\n each: each,\n sortBy: sortBy,\n uniqueBy: uniqueBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n Player: Player,\n Promise: Promise,\n Deferred: Deferred,\n IntersectionObserver: IntersectionObserver,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n matches: matches,\n closest: closest,\n parents: parents,\n escape: escape,\n css: css,\n getStyles: getStyles,\n getStyle: getStyle,\n getCssVar: getCssVar,\n propName: propName\n });\n\n function componentAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n var components = {};\n\n UIkit.component = function (name, options) {\n\n if (!options) {\n\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n\n }\n\n UIkit[name] = function (element, data) {\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\n\n\n var component = UIkit.component(name);\n\n if (isPlainObject(element)) {\n return new component({data: element});\n }\n\n if (component.options.functional) {\n return new component({data: [].concat( argsArray )});\n }\n\n return element && element.nodeType ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (!data) {\n return instance;\n } else {\n instance.$destroy();\n }\n }\n\n return new component({el: element, data: data});\n\n }\n\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n var id = hyphenate(name);\n fastdom.read(function () { return UIkit[name]((\"[uk-\" + id + \"],[data-uk-\" + id + \"]\")); });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) { return element && element[DATA] || {}; };\n UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; };\n\n UIkit.connect = function (node) {\n\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n\n }\n\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n\n }\n\n function getComponentName(attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-')\n ? camelize(attribute.replace('data-uk-', '').replace('uk-', ''))\n : false;\n }\n\n function boot (UIkit) {\n\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!('MutationObserver' in window)) {\n return;\n }\n\n if (document.body) {\n\n fastdom.read(init);\n\n } else {\n\n (new MutationObserver(function () {\n\n if (document.body) {\n this.disconnect();\n init();\n }\n\n })).observe(document, {childList: true, subtree: true});\n\n }\n\n function init() {\n\n apply(document.body, connect);\n\n // Safari renders prior to first animation frame\n fastdom.flush();\n\n (new MutationObserver(function (mutations) { return mutations.forEach(applyMutation); })).observe(document, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n\n UIkit._initialized = true;\n }\n\n function applyMutation(mutation) {\n\n var target = mutation.target;\n var type = mutation.type;\n\n var update = type !== 'attributes'\n ? applyChildList(mutation)\n : applyAttribute(mutation);\n\n update && UIkit.update(target);\n\n }\n\n function applyAttribute(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n\n\n if (attributeName === 'href') {\n return true;\n }\n\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return true;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n return true;\n }\n\n }\n\n function applyChildList(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply(removedNodes[i$1], disconnect);\n }\n\n return true;\n }\n\n function apply(node, fn) {\n\n if (node.nodeType !== 1 || hasAttr(node, 'uk-no-boot')) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n var next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n }\n\n }\n\n function globalAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n\n options = options || {};\n\n var Super = this;\n var Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n\n Sub.super = Super;\n Sub.extend = Super.extend;\n\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n\n element = element ? toNode(element) : document.body;\n\n path(element, function (element) { return update(element[DATA], e); });\n apply(element, function (element) { return update(element[DATA], e); });\n\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n\n get: function() {\n return container || document.body;\n },\n\n set: function(element) {\n container = $(element);\n }\n\n });\n\n function update(data, e) {\n\n if (!data) {\n return;\n }\n\n for (var name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n\n }\n\n function path(node, fn) {\n if (node && node !== document.body && node.parentNode) {\n path(node.parentNode, fn);\n fn(node.parentNode);\n }\n }\n\n }\n\n function hooksAPI (UIkit) {\n\n UIkit.prototype._callHook = function (hook) {\n var this$1 = this;\n\n\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) { return handler.call(this$1); });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computeds = {};\n this._initProps();\n\n this._callHook('beforeConnect');\n this._connected = true;\n\n this._initEvents();\n this._initObserver();\n\n this._callHook('connected');\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n\n this._unbindEvents();\n this._callHook('disconnected');\n\n this._connected = false;\n\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1 = this;\n if ( e === void 0 ) e = 'update';\n\n\n var type = e.type || e;\n\n if (includes(['update', 'resize'], type)) {\n this._callWatches();\n }\n\n var updates = this.$options.update;\n var ref = this._frames;\n var reads = ref.reads;\n var writes = ref.writes;\n\n if (!updates) {\n return;\n }\n\n updates.forEach(function (ref, i) {\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n\n if (type !== 'update' && !includes(events, type)) {\n return;\n }\n\n if (read && !includes(fastdom.reads, reads[i])) {\n reads[i] = fastdom.read(function () {\n\n var result = this$1._connected && read.call(this$1, this$1._data, type);\n\n if (result === false && write) {\n fastdom.clear(writes[i]);\n } else if (isPlainObject(result)) {\n assign(this$1._data, result);\n }\n });\n }\n\n if (write && !includes(fastdom.writes, writes[i])) {\n writes[i] = fastdom.write(function () { return this$1._connected && write.call(this$1, this$1._data, type); });\n }\n\n });\n\n };\n\n }\n\n function stateAPI (UIkit) {\n\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n\n this._frames = {reads: {}, writes: {}};\n this._events = [];\n\n this._uid = uid++;\n this._initData();\n this._initMethods();\n this._initComputeds();\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n\n var ref = this.$options;\n var data = ref.data; if ( data === void 0 ) data = {};\n\n for (var key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this[key] = methods[key].bind(this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n\n var ref = this.$options;\n var computed = ref.computed;\n\n this._computeds = {};\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._callWatches = function () {\n\n var ref = this;\n var computed = ref.$options.computed;\n var _computeds = ref._computeds;\n\n for (var key in _computeds) {\n\n var value = _computeds[key];\n delete _computeds[key];\n\n if (computed[key].watch && !isEqual(value, this[key])) {\n computed[key].watch.call(this, this[key], value);\n }\n\n }\n\n };\n\n UIkit.prototype._initProps = function (props) {\n\n var key;\n\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n\n events.forEach(function (event) {\n\n if (!hasOwn(event, 'handler')) {\n for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\n }\n\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) { return unbind(); });\n this._events = [];\n };\n\n UIkit.prototype._initObserver = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var attrs = ref.attrs;\n var props = ref.props;\n var el = ref.el;\n if (this._observer || !props || attrs === false) {\n return;\n }\n\n attrs = isArray(attrs) ? attrs : Object.keys(props);\n\n this._observer = new MutationObserver(function () {\n\n var data = getProps(this$1.$options, this$1.$name);\n if (attrs.some(function (key) { return !isUndefined(data[key]) && data[key] !== this$1.$props[key]; })) {\n this$1.$reset();\n }\n\n });\n\n var filter = attrs.map(function (key) { return hyphenate(key); }).concat(this.$name);\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map(function (key) { return (\"data-\" + key); }))\n });\n };\n\n function getProps(opts, name) {\n\n var data$1 = {};\n var args = opts.args; if ( args === void 0 ) args = [];\n var props = opts.props; if ( props === void 0 ) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n var value = data(el, prop);\n\n if (!isUndefined(value)) {\n\n value = props[key] === Boolean && value === ''\n ? true\n : coerce(props[key], value);\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$1[key] = value;\n }\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n if (props[prop$1] !== undefined) {\n data$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n\n enumerable: true,\n\n get: function() {\n\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n\n set: function(value) {\n\n var _computeds = component._computeds;\n\n _computeds[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computeds[key])) {\n delete _computeds[key];\n }\n }\n\n });\n }\n\n function registerEvent(component, event, key) {\n\n if (!isPlainObject(event)) {\n event = ({name: key, handler: event});\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var passive = event.passive;\n var delegate = event.delegate;\n var filter = event.filter;\n var self = event.self;\n el = isFunction(el)\n ? el.call(component)\n : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) { return registerEvent(component, assign({}, event, {el: el}), key); });\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n component._events.push(\n on(\n el,\n name,\n !delegate\n ? null\n : isString(delegate)\n ? delegate\n : delegate.call(component),\n isString(handler) ? component[handler] : handler.bind(component),\n {passive: passive, capture: capture, self: self}\n )\n );\n\n }\n\n function notIn(options, key) {\n return options.every(function (arr) { return !arr || !hasOwn(arr, key); });\n }\n\n function coerce(type, value) {\n\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function normalizeData(ref, ref$1) {\n var data = ref.data;\n var el = ref.el;\n var args = ref$1.args;\n var props = ref$1.props; if ( props === void 0 ) props = {};\n\n data = isArray(data)\n ? !isEmpty(args)\n ? data.slice(0, args.length).reduce(function (data, value, index) {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n return data;\n }, {})\n : undefined\n : data;\n\n if (data) {\n for (var key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else {\n data[key] = props[key] ? coerce(props[key], data[key]) : data[key];\n }\n }\n }\n\n return data;\n }\n }\n\n function instanceAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.prototype.$mount = function (el) {\n\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if ( removeEl === void 0 ) removeEl = false;\n\n\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove(this.$el);\n }\n };\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$update = UIkit.update;\n UIkit.prototype.$getComponent = UIkit.getComponent;\n\n var names = {};\n Object.defineProperties(UIkit.prototype, {\n\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n\n $name: {\n\n get: function() {\n var ref = this.$options;\n var name = ref.name;\n\n if (!names[name]) {\n names[name] = UIkit.prefix + hyphenate(name);\n }\n\n return names[name];\n }\n\n }\n\n });\n\n }\n\n var UIkit = function (options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n var Class = {\n\n connected: function() {\n !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);\n }\n\n };\n\n var Togglable = {\n\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String,\n queued: Boolean\n },\n\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n queued: false,\n\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n\n },\n\n computed: {\n\n hasAnimation: function(ref) {\n var animation = ref.animation;\n\n return !!animation[0];\n },\n\n hasTransition: function(ref) {\n var animation = ref.animation;\n\n return this.hasAnimation && animation[0] === true;\n }\n\n },\n\n methods: {\n\n toggleElement: function(targets, show, animate) {\n var this$1 = this;\n\n return new Promise(function (resolve) {\n\n targets = toNodes(targets);\n\n var all = function (targets) { return Promise.all(targets.map(function (el) { return this$1._toggleElement(el, show, animate); })); };\n var toggled = targets.filter(function (el) { return this$1.isToggled(el); });\n var untoggled = targets.filter(function (el) { return !includes(toggled, el); });\n\n var p;\n\n if (!this$1.queued || !isUndefined(animate) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) {\n\n p = all(untoggled.concat(toggled));\n\n } else {\n\n var body = document.body;\n var scroll = body.scrollTop;\n var el = toggled[0];\n var inProgress = Animation.inProgress(el) && hasClass(el, 'uk-animation-leave')\n || Transition.inProgress(el) && el.style.height === '0px';\n\n p = all(toggled);\n\n if (!inProgress) {\n p = p.then(function () {\n var p = all(untoggled);\n body.scrollTop = scroll;\n return p;\n });\n }\n\n }\n\n p.then(resolve, noop);\n\n });\n },\n\n toggleNow: function(targets, show) {\n var this$1 = this;\n\n return new Promise(function (resolve) { return Promise.all(toNodes(targets).map(function (el) { return this$1._toggleElement(el, show, false); })).then(resolve, noop); });\n },\n\n isToggled: function(el) {\n var nodes = toNodes(el || this.$el);\n return this.cls\n ? hasClass(nodes, this.cls.split(' ')[0])\n : !hasAttr(nodes, 'hidden');\n },\n\n updateAria: function(el) {\n if (this.cls === false) {\n attr(el, 'aria-hidden', !this.isToggled(el));\n }\n },\n\n _toggleElement: function(el, show, animate) {\n var this$1 = this;\n\n\n show = isBoolean(show)\n ? show\n : Animation.inProgress(el)\n ? hasClass(el, 'uk-animation-leave')\n : Transition.inProgress(el)\n ? el.style.height === '0px'\n : !this.isToggled(el);\n\n if (!trigger(el, (\"before\" + (show ? 'show' : 'hide')), [this])) {\n return Promise.reject();\n }\n\n var promise = (\n isFunction(animate)\n ? animate\n : animate === false || !this.hasAnimation\n ? this._toggle\n : this.hasTransition\n ? toggleHeight(this)\n : toggleAnimation(this)\n )(el, show);\n\n trigger(el, show ? 'show' : 'hide', [this]);\n\n var final = function () {\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n };\n\n return promise ? promise.then(final) : Promise.resolve(final());\n },\n\n _toggle: function(el, toggled) {\n\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n\n var changed;\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === hasAttr(el, 'hidden');\n changed && attr(el, 'hidden', !toggled ? '' : null);\n }\n\n $$('[autofocus]', el).some(function (el) { return isVisible(el) ? el.focus() || true : el.blur(); });\n\n this.updateAria(el);\n changed && this.$update(el);\n }\n\n }\n\n };\n\n function toggleHeight(ref) {\n var isToggled = ref.isToggled;\n var duration = ref.duration;\n var initProps = ref.initProps;\n var hideProps = ref.hideProps;\n var transition = ref.transition;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n\n Transition.cancel(el);\n\n if (!isToggled(el)) {\n _toggle(el, true);\n }\n\n height(el, '');\n\n // Update child components first\n fastdom.flush();\n\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n\n return (show\n ? Transition.start(el, assign({}, initProps, {overflow: 'hidden', height: endHeight}), Math.round(duration * (1 - currentHeight / endHeight)), transition)\n : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () { return _toggle(el, false); })\n ).then(function () { return css(el, initProps); });\n\n };\n }\n\n function toggleAnimation(ref) {\n var animation = ref.animation;\n var duration = ref.duration;\n var origin = ref.origin;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n Animation.cancel(el);\n\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, origin).then(function () { return _toggle(el, false); });\n };\n }\n\n var Accordion = {\n\n mixins: [Class, Togglable],\n\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String\n },\n\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease'\n },\n\n computed: {\n\n items: function(ref, $el) {\n var targets = ref.targets;\n\n return $$(targets, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.targets) + \" \" + (this.$props.toggle));\n },\n\n handler: function(e) {\n e.preventDefault();\n this.toggle(index($$(((this.targets) + \" \" + (this.$props.toggle)), this.$el), e.current));\n }\n\n }\n\n ],\n\n connected: function() {\n\n if (this.active === false) {\n return;\n }\n\n var active = this.items[Number(this.active)];\n if (active && !hasClass(active, this.clsOpen)) {\n this.toggle(active, false);\n }\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.items.forEach(function (el) { return this$1._toggle($(this$1.content, el), hasClass(el, this$1.clsOpen)); });\n\n var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n\n methods: {\n\n toggle: function(item, animate) {\n var this$1 = this;\n\n\n var index = getIndex(item, this.items);\n var active = filter(this.items, (\".\" + (this.clsOpen)));\n\n item = this.items[index];\n\n item && [item]\n .concat(!this.multiple && !includes(active, item) && active || [])\n .forEach(function (el) {\n\n var isItem = el === item;\n var state = isItem && !hasClass(el, this$1.clsOpen);\n\n if (!state && isItem && !this$1.collapsible && active.length < 2) {\n return;\n }\n\n toggleClass(el, this$1.clsOpen, state);\n\n var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el);\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, '<div>');\n attr(el._wrapper, 'hidden', state ? '' : null);\n }\n\n this$1._toggle(content, true);\n this$1.toggleElement(el._wrapper, state, animate).then(function () {\n\n if (hasClass(el, this$1.clsOpen) !== state) {\n return;\n }\n\n if (!state) {\n this$1._toggle(content, false);\n }\n\n el._wrapper = null;\n unwrap(content);\n\n });\n\n });\n }\n\n }\n\n };\n\n var Alert = {\n\n mixins: [Class, Togglable],\n\n args: 'animation',\n\n props: {\n close: String\n },\n\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({opacity: 0}, Togglable.data.hideProps)\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.close();\n }\n\n }\n\n ],\n\n methods: {\n\n close: function() {\n var this$1 = this;\n\n this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); });\n }\n\n }\n\n };\n\n function Core (UIkit) {\n\n ready(function () {\n\n UIkit.update();\n on(window, 'load resize', function () { return UIkit.update(null, 'resize'); });\n on(document, 'loadedmetadata load', function (ref) {\n var target = ref.target;\n\n return UIkit.update(target, 'resize');\n }, true);\n\n // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)\n var pending;\n on(window, 'scroll', function (e) {\n\n if (pending) {\n return;\n }\n pending = true;\n fastdom.write(function () { return pending = false; });\n\n var target = e.target;\n UIkit.update(target.nodeType !== 1 ? document.body : target, e.type);\n\n }, {passive: true, capture: true});\n\n var started = 0;\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n\n started++;\n css(document.body, 'overflowX', 'hidden');\n setTimeout(function () {\n if (!--started) {\n css(document.body, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n\n var off;\n on(document, pointerDown, function (e) {\n\n off && off();\n\n if (!isTouch(e)) {\n return;\n }\n\n // Handle Swipe Gesture\n var pos = getEventPos(e);\n var target = 'tagName' in e.target ? e.target : e.target.parentNode;\n off = once(document, (pointerUp + \" \" + pointerCancel), function (e) {\n\n var ref = getEventPos(e);\n var x = ref.x;\n var y = ref.y;\n\n // swipe\n if (target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n\n setTimeout(function () {\n trigger(target, 'swipe');\n trigger(target, (\"swipe\" + (swipeDirection(pos.x, pos.y, x, y))));\n });\n\n }\n\n });\n\n // Force click event anywhere on iOS < 13\n if (pointerDown === 'touchstart') {\n css(document.body, 'cursor', 'pointer');\n once(document, (pointerUp + \" \" + pointerCancel), function () { return setTimeout(function () { return css(document.body, 'cursor', ''); }\n , 50); }\n );\n }\n\n }, {passive: true});\n\n });\n\n }\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2)\n ? x1 - x2 > 0\n ? 'Left'\n : 'Right'\n : y1 - y2 > 0\n ? 'Up'\n : 'Down';\n }\n\n var Video = {\n\n args: 'autoplay',\n\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n\n data: {\n automute: false,\n autoplay: true\n },\n\n computed: {\n\n inView: function(ref) {\n var autoplay = ref.autoplay;\n\n return autoplay === 'inview';\n }\n\n },\n\n connected: function() {\n\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n this.player = new Player(this.$el);\n\n if (this.automute) {\n this.player.mute();\n }\n\n },\n\n update: {\n\n read: function() {\n\n return !this.player\n ? false\n : {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n\n write: function(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n\n if (!visible || this.inView && !inView) {\n this.player.pause();\n } else if (this.autoplay === true || this.inView && inView) {\n this.player.play();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n };\n\n var Cover = {\n\n mixins: [Class, Video],\n\n props: {\n width: Number,\n height: Number\n },\n\n data: {\n automute: true\n },\n\n update: {\n\n read: function() {\n\n var el = this.$el;\n var ref = el.parentNode;\n var height = ref.offsetHeight;\n var width = ref.offsetWidth;\n var dim = Dimensions.cover(\n {\n width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,\n height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight\n },\n {\n width: width + (width % 2 ? 1 : 0),\n height: height + (height % 2 ? 1 : 0)\n }\n );\n\n if (!dim.width || !dim.height) {\n return false;\n }\n\n return dim;\n },\n\n write: function(ref) {\n var height = ref.height;\n var width = ref.width;\n\n css(this.$el, {height: height, width: width});\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Position = {\n\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n\n data: {\n pos: (\"bottom-\" + (!isRtl ? 'left' : 'right')),\n flip: true,\n offset: false,\n clsPos: ''\n },\n\n computed: {\n\n pos: function(ref) {\n var pos = ref.pos;\n\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\n },\n\n dir: function() {\n return this.pos[0];\n },\n\n align: function() {\n return this.pos[1];\n }\n\n },\n\n methods: {\n\n positionAt: function(element, target, boundary) {\n\n removeClasses(element, ((this.clsPos) + \"-(top|bottom|left|right)(-[a-z]+)?\"));\n css(element, {top: '', left: ''});\n\n var node;\n var ref = this;\n var offset$1 = ref.offset;\n var axis = this.getAxis();\n\n if (!isNumeric(offset$1)) {\n node = $(offset$1);\n offset$1 = node\n ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom']\n : 0;\n }\n\n var ref$1 = positionAt(\n element,\n target,\n axis === 'x' ? ((flipPosition(this.dir)) + \" \" + (this.align)) : ((this.align) + \" \" + (flipPosition(this.dir))),\n axis === 'x' ? ((this.dir) + \" \" + (this.align)) : ((this.align) + \" \" + (this.dir)),\n axis === 'x' ? (\"\" + (this.dir === 'left' ? -offset$1 : offset$1)) : (\" \" + (this.dir === 'top' ? -offset$1 : offset$1)),\n null,\n this.flip,\n boundary\n ).target;\n var x = ref$1.x;\n var y = ref$1.y;\n\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n\n toggleClass(element, ((this.clsPos) + \"-\" + (this.dir) + \"-\" + (this.align)), this.offset === false);\n\n },\n\n getAxis: function() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n\n }\n\n };\n\n var active;\n\n var Drop = {\n\n mixins: [Position, Togglable],\n\n args: 'pos',\n\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: window,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n hoverIdle: 200,\n animation: ['uk-animation-fade'],\n cls: 'uk-open'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n\n return query(boundary, $el);\n },\n\n clsDrop: function(ref) {\n var clsDrop = ref.clsDrop;\n\n return clsDrop || (\"uk-\" + (this.$options.name));\n },\n\n clsPos: function() {\n return this.clsDrop;\n }\n\n },\n\n created: function() {\n this.tracker = new MouseTracker();\n },\n\n connected: function() {\n\n addClass(this.$el, this.clsDrop);\n\n var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n\n !this.toggle && trigger(this.$el, 'updatearia');\n\n },\n\n events: [\n\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\".\" + (this.clsDrop) + \"-close\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var defaultPrevented = ref.defaultPrevented;\n var hash = ref.current.hash;\n\n if (!defaultPrevented && hash && !within(hash, this.$el)) {\n this.hide(false);\n }\n }\n\n },\n\n {\n\n name: 'beforescroll',\n\n handler: function() {\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle, false);\n }\n }\n\n },\n\n {\n\n name: pointerEnter,\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n if (isTouch(e)) {\n return;\n }\n\n if (active\n && active !== this\n && active.toggle\n && includes(active.toggle.mode, 'hover')\n && !within(e.target, active.toggle.$el)\n && !pointInRect({x: e.pageX, y: e.pageY}, offset(active.$el))\n ) {\n active.hide(false);\n }\n\n e.preventDefault();\n this.show(this.toggle);\n }\n\n },\n\n {\n\n name: 'toggleshow',\n\n handler: function(e, toggle) {\n\n if (toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n this.show(toggle || this.toggle);\n }\n\n },\n\n {\n\n name: (\"togglehide \" + pointerLeave),\n\n handler: function(e, toggle) {\n\n if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n\n if (this.toggle && includes(this.toggle.mode, 'hover')) {\n this.hide();\n }\n }\n\n },\n\n {\n\n name: 'beforeshow',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n Animation.cancel(this.$el);\n this.position();\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n this.tracker.init();\n trigger(this.$el, 'updatearia');\n\n // If triggered from an click event handler, delay adding the click handler\n var off = delayOn(document, 'click', function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var target = ref.target;\n\n if (!defaultPrevented && !within(target, this$1.$el) && !(this$1.toggle && within(target, this$1.toggle.$el))) {\n this$1.hide(false);\n }\n });\n\n once(this.$el, 'hide', off, {self: true});\n }\n\n },\n\n {\n\n name: 'beforehide',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n }\n\n },\n\n {\n\n name: 'hide',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n if (this.$el !== target) {\n active = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\n trigger(this.$el, 'updatearia');\n this.tracker.cancel();\n }\n\n },\n\n {\n\n name: 'updatearia',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n this.updateAria(this.$el);\n\n if (toggle || this.toggle) {\n attr((toggle || this.toggle).$el, 'aria-expanded', this.isToggled());\n toggleClass(this.toggle.$el, this.cls, this.isToggled());\n }\n }\n }\n\n ],\n\n update: {\n\n write: function() {\n\n if (this.isToggled() && !Animation.inProgress(this.$el)) {\n this.position();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n show: function(toggle, delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var show = function () { return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); };\n var tryShow = function () {\n\n this$1.toggle = toggle || this$1.toggle;\n\n this$1.clearTimers();\n\n if (this$1.isActive()) {\n return;\n } else if (delay && active && active !== this$1 && active.isDelaying) {\n this$1.showTimer = setTimeout(this$1.show, 10);\n return;\n } else if (this$1.isParentOf(active)) {\n\n if (active.hideTimer) {\n active.hide(false);\n } else {\n return;\n }\n\n } else if (this$1.isChildOf(active)) {\n\n active.clearTimers();\n\n } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) {\n\n var prev;\n while (active && active !== prev && !this$1.isChildOf(active)) {\n prev = active;\n active.hide(false);\n }\n\n }\n\n if (delay && this$1.delayShow) {\n this$1.showTimer = setTimeout(show, this$1.delayShow);\n } else {\n show();\n }\n\n active = this$1;\n };\n\n if (toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n\n once(this.$el, 'hide', tryShow);\n this.hide(false);\n\n } else {\n tryShow();\n }\n },\n\n hide: function(delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var hide = function () { return this$1.toggleNow(this$1.$el, false); };\n\n this.clearTimers();\n\n this.isDelaying = this.tracker.movesTo(this.$el);\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, this.hoverIdle);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n\n clearTimers: function() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n\n isActive: function() {\n return active === this;\n },\n\n isChildOf: function(drop) {\n return drop && drop !== this && within(this.$el, drop.$el);\n },\n\n isParentOf: function(drop) {\n return drop && drop !== this && within(drop.$el, this.$el);\n },\n\n position: function() {\n\n removeClasses(this.$el, ((this.clsDrop) + \"-(stack|boundary)\"));\n css(this.$el, {top: '', left: '', display: 'block'});\n toggleClass(this.$el, ((this.clsDrop) + \"-boundary\"), this.boundaryAlign);\n\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, ((this.clsDrop) + \"-stack\"));\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);\n\n css(this.$el, 'display', '');\n\n }\n\n }\n\n };\n\n function delayOn(el, type, fn) {\n var off = once(el, type, function () { return off = on(el, type, fn); }\n , true);\n return function () { return off(); };\n }\n\n var Dropdown = {\n\n extends: Drop\n\n };\n\n var FormCustom = {\n\n mixins: [Class],\n\n args: 'target',\n\n props: {\n target: Boolean\n },\n\n data: {\n target: false\n },\n\n computed: {\n\n input: function(_, $el) {\n return $(selInput, $el);\n },\n\n state: function() {\n return this.input.nextElementSibling;\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return target && (target === true\n && this.input.parentNode === $el\n && this.input.nextElementSibling\n || query(target, $el));\n }\n\n },\n\n update: function() {\n\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0]\n ? input.files[0].name\n : matches(input, 'select') && (option = $$('option', input).filter(function (el) { return el.selected; })[0]) // eslint-disable-line prefer-destructuring\n ? option.textContent\n : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n\n },\n\n events: [\n\n {\n name: 'change',\n\n handler: function() {\n this.$emit();\n }\n },\n\n {\n name: 'reset',\n\n el: function() {\n return closest(this.$el, 'form');\n },\n\n handler: function() {\n this.$emit();\n }\n }\n\n ]\n\n };\n\n // Deprecated\n var Gif = {\n\n update: {\n\n read: function(data) {\n\n var inview = isInView(this.$el);\n\n if (!inview || data.isInView === inview) {\n return false;\n }\n\n data.isInView = inview;\n },\n\n write: function() {\n this.$el.src = this.$el.src;\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n var Margin = {\n\n props: {\n margin: String,\n firstColumn: Boolean\n },\n\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n\n update: {\n\n read: function(data) {\n\n var items = this.$el.children;\n var rows = [[]];\n\n if (!items.length || !isVisible(this.$el)) {\n return data.rows = rows;\n }\n\n data.rows = getRows(items);\n data.stacks = !data.rows.some(function (row) { return row.length > 1; });\n\n },\n\n write: function(ref) {\n var this$1 = this;\n var rows = ref.rows;\n\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) {\n toggleClass(el, this$1.margin, i !== 0);\n toggleClass(el, this$1.firstColumn, j === 0);\n }); }\n );\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function getRows(items) {\n var rows = [[]];\n\n for (var i = 0; i < items.length; i++) {\n\n var el = items[i];\n var dim = getOffset(el);\n\n if (!dim.height) {\n continue;\n }\n\n for (var j = rows.length - 1; j >= 0; j--) {\n\n var row = rows[j];\n\n if (!row[0]) {\n row.push(el);\n break;\n }\n\n var leftDim = (void 0);\n if (row[0].offsetParent === el.offsetParent) {\n leftDim = getOffset(row[0]);\n } else {\n dim = getOffset(el, true);\n leftDim = getOffset(row[0], true);\n }\n\n if (dim.top >= leftDim.bottom - 1 && dim.top !== leftDim.top) {\n rows.push([el]);\n break;\n }\n\n if (dim.bottom > leftDim.top) {\n\n if (dim.left < leftDim.left && !isRtl) {\n row.unshift(el);\n break;\n }\n\n row.push(el);\n break;\n }\n\n if (j === 0) {\n rows.unshift([el]);\n break;\n }\n\n }\n\n }\n\n return rows;\n\n }\n\n function getOffset(element, offset) {\n var assign;\n\n if ( offset === void 0 ) offset = false;\n\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n\n if (offset) {\n (assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1]);\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n height: offsetHeight,\n bottom: offsetTop + offsetHeight\n };\n }\n\n var Grid = {\n\n extends: Margin,\n\n mixins: [Class],\n\n name: 'grid',\n\n props: {\n masonry: Boolean,\n parallax: Number\n },\n\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n\n computed: {\n\n length: function(_, $el) {\n return $el.children.length;\n },\n\n parallax: function(ref) {\n var parallax = ref.parallax;\n\n return parallax && this.length ? Math.abs(parallax) : '';\n }\n\n },\n\n connected: function() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var rows = ref.rows;\n\n\n if (this.masonry || this.parallax) {\n rows = rows.map(function (elements) { return sortBy(elements, 'offsetLeft'); });\n\n if (isRtl) {\n rows.map(function (row) { return row.reverse(); });\n }\n\n }\n\n var transitionInProgress = rows.some(function (elements) { return elements.some(Transition.inProgress); });\n var translates = false;\n var elHeight = '';\n\n if (this.masonry && this.length) {\n\n var height = 0;\n\n translates = rows.reduce(function (translates, row, i) {\n\n translates[i] = row.map(function (_, j) { return i === 0 ? 0 : toFloat(translates[i - 1][j]) + (height - toFloat(rows[i - 1][j] && rows[i - 1][j].offsetHeight)); });\n height = row.reduce(function (height, el) { return Math.max(height, el.offsetHeight); }, 0);\n\n return translates;\n\n }, []);\n\n elHeight = maxColumnHeight(rows) + getMarginTop(this.$el, this.margin) * (rows.length - 1);\n\n }\n\n var padding = this.parallax && getPaddingBottom(this.parallax, rows, translates);\n\n return {padding: padding, rows: rows, translates: translates, height: !transitionInProgress ? elHeight : false};\n\n },\n\n write: function(ref) {\n var stacks = ref.stacks;\n var height = ref.height;\n var padding = ref.padding;\n\n\n toggleClass(this.$el, this.clsStack, stacks);\n\n css(this.$el, 'paddingBottom', padding);\n height !== false && css(this.$el, 'height', height);\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var height$1 = ref.height;\n\n return {\n scrolled: this.parallax\n ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * this.parallax\n : false\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n\n if (scrolled === false && !translates) {\n return;\n }\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) { return css(el, 'transform', !scrolled && !translates ? '' : (\"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? j % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\")); }\n ); }\n );\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n function getPaddingBottom(distance, rows, translates) {\n var column = 0;\n var max = 0;\n var maxScrolled = 0;\n for (var i = rows.length - 1; i >= 0; i--) {\n for (var j = column; j < rows[i].length; j++) {\n var el = rows[i][j];\n var bottom = el.offsetTop + height(el) + (translates && -translates[i][j]);\n max = Math.max(max, bottom);\n maxScrolled = Math.max(maxScrolled, bottom + (j % 2 ? distance : distance / 8));\n column++;\n }\n }\n return maxScrolled - max;\n }\n\n function getMarginTop(root, cls) {\n\n var nodes = toNodes(root.children);\n var ref = nodes.filter(function (el) { return hasClass(el, cls); });\n var node = ref[0];\n\n return toFloat(node\n ? css(node, 'marginTop')\n : css(nodes[0], 'paddingLeft'));\n }\n\n function maxColumnHeight(rows) {\n return Math.max.apply(Math, rows.reduce(function (sum, row) {\n row.forEach(function (el, i) { return sum[i] = (sum[i] || 0) + el.offsetHeight; });\n return sum;\n }, []));\n }\n\n // IE 11 fix (min-height on a flex container won't apply to its flex items)\n var FlexBug = isIE ? {\n\n props: {\n selMinHeight: String\n },\n\n data: {\n selMinHeight: false,\n forceHeight: false\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var selMinHeight = ref.selMinHeight;\n\n return selMinHeight ? $$(selMinHeight, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n css(this.elements, 'height', '');\n },\n\n order: -5,\n\n events: ['resize']\n\n },\n\n {\n\n write: function() {\n var this$1 = this;\n\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust('height', el, 'content-box')) >= el.offsetHeight)) {\n css(el, 'height', height);\n }\n });\n },\n\n order: 5,\n\n events: ['resize']\n\n }\n\n ]\n\n } : {};\n\n var HeightMatch = {\n\n mixins: [FlexBug],\n\n args: 'target',\n\n props: {\n target: String,\n row: Boolean\n },\n\n data: {\n target: '> *',\n row: true,\n forceHeight: true\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return $$(target, $el);\n }\n\n },\n\n update: {\n\n read: function() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n\n rows.forEach(function (ref) {\n var heights = ref.heights;\n var elements = ref.elements;\n\n return elements.forEach(function (el, i) { return css(el, 'minHeight', heights[i]); }\n );\n }\n );\n },\n\n events: ['resize']\n\n }\n\n };\n\n function match(elements) {\n var assign;\n\n\n if (elements.length < 2) {\n return {heights: [''], elements: elements};\n }\n\n var ref = getHeights(elements);\n var heights = ref.heights;\n var max = ref.max;\n var hasMinHeight = elements.some(function (el) { return el.style.minHeight; });\n var hasShrunk = elements.some(function (el, i) { return !el.style.minHeight && heights[i] < max; });\n\n if (hasMinHeight && hasShrunk) {\n css(elements, 'minHeight', '');\n ((assign = getHeights(elements), heights = assign.heights, max = assign.max));\n }\n\n heights = elements.map(function (el, i) { return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max; }\n );\n\n return {heights: heights, elements: elements};\n }\n\n function getHeights(elements) {\n var heights = elements.map(function (el) { return offset(el).height - boxModelAdjust('height', el, 'content-box'); });\n var max = Math.max.apply(null, heights);\n\n return {heights: heights, max: max};\n }\n\n var HeightViewport = {\n\n mixins: [FlexBug],\n\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n\n update: {\n\n read: function(ref) {\n var prev = ref.minHeight;\n\n\n if (!isVisible(this.$el)) {\n return false;\n }\n\n var minHeight = '';\n var box = boxModelAdjust('height', this.$el, 'content-box');\n\n if (this.expand) {\n\n this.$el.dataset.heightExpand = '';\n\n if ($('[data-height-expand]') !== this.$el) {\n return false;\n }\n\n minHeight = height(window) - (offsetHeight(document.documentElement) - offsetHeight(this.$el)) - box || '';\n\n } else {\n\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = 'calc(100vh';\n\n if (this.offsetTop) {\n\n var ref$1 = offset(this.$el);\n var top = ref$1.top;\n minHeight += top > 0 && top < height(window) / 2 ? (\" - \" + top + \"px\") : '';\n\n }\n\n if (this.offsetBottom === true) {\n\n minHeight += \" - \" + (offsetHeight(this.$el.nextElementSibling)) + \"px\";\n\n } else if (isNumeric(this.offsetBottom)) {\n\n minHeight += \" - \" + (this.offsetBottom) + \"vh\";\n\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n\n minHeight += \" - \" + (toFloat(this.offsetBottom)) + \"px\";\n\n } else if (isString(this.offsetBottom)) {\n\n minHeight += \" - \" + (offsetHeight(query(this.offsetBottom, this.$el))) + \"px\";\n\n }\n\n minHeight += (box ? (\" - \" + box + \"px\") : '') + \")\";\n\n }\n\n return {minHeight: minHeight, prev: prev};\n },\n\n write: function(ref) {\n var minHeight = ref.minHeight;\n var prev = ref.prev;\n\n\n css(this.$el, {minHeight: minHeight});\n\n if (minHeight !== prev) {\n this.$update(this.$el, 'resize');\n }\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function offsetHeight(el) {\n return el && offset(el).height || 0;\n }\n\n var Svg = {\n\n args: 'src',\n\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n focusable: Boolean, // IE 11\n attributes: 'list'\n },\n\n data: {\n ratio: 1,\n include: ['style', 'class', 'focusable'],\n class: '',\n strokeAnimation: false\n },\n\n beforeConnect: function() {\n var this$1 = this;\n var assign;\n\n\n this.class += ' uk-svg';\n\n if (!this.icon && includes(this.src, '#')) {\n\n var parts = this.src.split('#');\n\n if (parts.length > 1) {\n (assign = parts, this.src = assign[0], this.icon = assign[1]);\n }\n }\n\n this.svg = this.getSvg().then(function (el) {\n this$1.applyAttributes(el);\n return this$1.svgEl = insertSVG(el, this$1.$el);\n }, noop);\n\n },\n\n disconnected: function() {\n var this$1 = this;\n\n\n if (isVoidElement(this.$el)) {\n attr(this.$el, 'hidden', null);\n }\n\n if (this.svg) {\n this.svg.then(function (svg) { return (!this$1._connected || svg !== this$1.svgEl) && remove(svg); }, noop);\n }\n\n this.svg = this.svgEl = null;\n\n },\n\n update: {\n\n read: function() {\n return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));\n },\n\n write: function() {\n applyAnimation(this.svgEl);\n },\n\n type: ['resize']\n\n },\n\n methods: {\n\n getSvg: function() {\n var this$1 = this;\n\n return loadSVG(this.src).then(function (svg) { return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.'); }\n );\n },\n\n applyAttributes: function(el) {\n var this$1 = this;\n\n\n for (var prop in this.$options.props) {\n if (this[prop] && includes(this.include, prop)) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (var attribute in this.attributes) {\n var ref = this.attributes[attribute].split(':', 2);\n var prop$1 = ref[0];\n var value = ref[1];\n attr(el, prop$1, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n var props = ['width', 'height'];\n var dimensions = [this.width, this.height];\n\n if (!dimensions.some(function (val) { return val; })) {\n dimensions = props.map(function (prop) { return attr(el, prop); });\n }\n\n var viewBox = attr(el, 'viewBox');\n if (viewBox && !dimensions.some(function (val) { return val; })) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach(function (val, i) {\n val = (val | 0) * this$1.ratio;\n val && attr(el, props[i], val);\n\n if (val && !dimensions[i ^ 1]) {\n removeAttr(el, props[i ^ 1]);\n }\n });\n\n attr(el, 'data-svg', this.icon || this.src);\n\n }\n\n }\n\n };\n\n var svgs = {};\n\n function loadSVG(src) {\n\n if (svgs[src]) {\n return svgs[src];\n }\n\n return svgs[src] = new Promise(function (resolve, reject) {\n\n if (!src) {\n reject();\n return;\n }\n\n if (startsWith(src, 'data:')) {\n resolve(decodeURIComponent(src.split(',')[1]));\n } else {\n\n ajax(src).then(\n function (xhr) { return resolve(xhr.response); },\n function () { return reject('SVG not found.'); }\n );\n\n }\n\n });\n }\n\n function parseSVG(svg, icon) {\n\n if (icon && includes(svg, '<symbol')) {\n svg = parseSymbols(svg, icon) || svg;\n }\n\n svg = $(svg.substr(svg.indexOf('<svg')));\n return svg && svg.hasChildNodes() && svg;\n }\n\n var symbolRe = /<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n\n if (!symbols[svg]) {\n\n symbols[svg] = {};\n\n var match;\n while ((match = symbolRe.exec(svg))) {\n symbols[svg][match[3]] = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + (match[1]) + \"svg>\";\n }\n\n symbolRe.lastIndex = 0;\n\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n\n var length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(Math.max.apply(Math, $$('[stroke]', el).map(function (stroke) { return stroke.getTotalLength && stroke.getTotalLength() || 0; }\n ).concat([0])));\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n\n attr(root, 'hidden', true);\n\n var next = root.nextElementSibling;\n return equals(el, next)\n ? next\n : after(root, el);\n\n } else {\n\n var last = root.lastElementChild;\n return equals(el, last)\n ? last\n : append(root, el);\n\n }\n }\n\n function equals(el, other) {\n return attr(el, 'data-svg') === attr(other, 'data-svg');\n }\n\n var closeIcon = \"<svg width=\\\"14\\\" height=\\\"14\\\" viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"13\\\" y2=\\\"13\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"13\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"13\\\"/></svg>\";\n\n var closeLarge = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"19\\\" y2=\\\"19\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"19\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"19\\\"/></svg>\";\n\n var marker = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"9\\\" y=\\\"4\\\" width=\\\"1\\\" height=\\\"11\\\"/><rect x=\\\"4\\\" y=\\\"9\\\" width=\\\"11\\\" height=\\\"1\\\"/></svg>\";\n\n var navbarToggleIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect y=\\\"9\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"3\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"15\\\" width=\\\"20\\\" height=\\\"2\\\"/></svg>\";\n\n var overlayIcon = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"19\\\" y=\\\"0\\\" width=\\\"1\\\" height=\\\"40\\\"/><rect x=\\\"0\\\" y=\\\"19\\\" width=\\\"40\\\" height=\\\"1\\\"/></svg>\";\n\n var paginationNext = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 1 6 6 1 11\\\"/></svg>\";\n\n var paginationPrevious = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"6 1 1 6 6 11\\\"/></svg>\";\n\n var searchIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"9\\\" cy=\\\"9\\\" r=\\\"7\\\"/><path fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" d=\\\"M14,14 L18,18 L14,14 Z\\\"/></svg>\";\n\n var searchLarge = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"16.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" x1=\\\"38\\\" y1=\\\"39\\\" x2=\\\"29\\\" y2=\\\"30\\\"/></svg>\";\n\n var searchNavbar = \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"9.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"23\\\" y1=\\\"23\\\" x2=\\\"17\\\" y2=\\\"17\\\"/></svg>\";\n\n var slidenavNext = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"1.225,23 12.775,12 1.225,1 \\\"/></svg>\";\n\n var slidenavNextLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"4.002,38.547 22.527,20.024 4,1.5 \\\"/></svg>\";\n\n var slidenavPrevious = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"12.775,1 1.225,12 12.775,23 \\\"/></svg>\";\n\n var slidenavPreviousLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"20.527,1.5 2,20.024 20.525,38.547 \\\"/></svg>\";\n\n var spinner = \"<svg width=\\\"30\\\" height=\\\"30\\\" viewBox=\\\"0 0 30 30\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" cx=\\\"15\\\" cy=\\\"15\\\" r=\\\"14\\\"/></svg>\";\n\n var totop = \"<svg width=\\\"18\\\" height=\\\"10\\\" viewBox=\\\"0 0 18 10\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 9 9 1 17 9 \\\"/></svg>\";\n\n var parsed = {};\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n\n var Icon = {\n\n install: install,\n\n extends: Svg,\n\n args: 'icon',\n\n props: ['icon'],\n\n data: {\n include: ['focusable']\n },\n\n isIcon: true,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-icon');\n },\n\n methods: {\n\n getSvg: function() {\n\n var icon = getIcon(applyRtl(this.icon));\n\n if (!icon) {\n return Promise.reject('Icon not found.');\n }\n\n return Promise.resolve(icon);\n }\n\n }\n\n };\n\n var IconComponent = {\n\n args: false,\n\n extends: Icon,\n\n data: function (vm) { return ({\n icon: hyphenate(vm.constructor.options.name)\n }); },\n\n beforeConnect: function() {\n addClass(this.$el, this.$name);\n }\n\n };\n\n var Slidenav = {\n\n extends: IconComponent,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-slidenav');\n },\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-slidenav-large')\n ? (icon + \"-large\")\n : icon;\n }\n\n }\n\n };\n\n var Search = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length\n ? 'search-large'\n : parents($el, '.uk-search-navbar').length\n ? 'search-navbar'\n : icon;\n }\n\n }\n\n };\n\n var Close = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function() {\n return (\"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'));\n }\n\n }\n\n };\n\n var Spinner = {\n\n extends: IconComponent,\n\n connected: function() {\n var this$1 = this;\n\n this.svg.then(function (svg) { return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); }, noop);\n }\n\n };\n\n function install(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n\n\n var added = isString(name) ? (( obj = {}, obj[name] = svg, obj )) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, function (el) { return each(UIkit.getComponents(el), function (cmp) {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n }); }\n );\n }\n };\n }\n\n function getIcon(icon) {\n\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $(icons[icon].trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var Img = {\n\n args: 'dataSrc',\n\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n\n data: {\n dataSrc: '',\n dataSrcset: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: 0,\n target: false\n },\n\n computed: {\n\n cacheKey: function(ref) {\n var dataSrc = ref.dataSrc;\n\n return ((this.$name) + \".\" + dataSrc);\n },\n\n width: function(ref) {\n var width = ref.width;\n var dataWidth = ref.dataWidth;\n\n return width || dataWidth;\n },\n\n height: function(ref) {\n var height = ref.height;\n var dataHeight = ref.dataHeight;\n\n return height || dataHeight;\n },\n\n sizes: function(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n\n return sizes || dataSizes;\n },\n\n isImg: function(_, $el) {\n return isImg($el);\n },\n\n target: {\n\n get: function(ref) {\n var target = ref.target;\n\n return [this.$el].concat(queryAll(target, this.$el));\n },\n\n watch: function() {\n this.observe();\n }\n\n },\n\n offsetTop: function(ref) {\n var offsetTop = ref.offsetTop;\n\n return toPx(offsetTop, 'height');\n },\n\n offsetLeft: function(ref) {\n var offsetLeft = ref.offsetLeft;\n\n return toPx(offsetLeft, 'width');\n }\n\n },\n\n connected: function() {\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey] || this.dataSrc, this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n this.observer = new IntersectionObserver(this.load, {\n rootMargin: ((this.offsetTop) + \"px \" + (this.offsetLeft) + \"px\")\n });\n\n requestAnimationFrame(this.observe);\n\n },\n\n disconnected: function() {\n this.observer.disconnect();\n },\n\n update: {\n\n read: function(ref) {\n var this$1 = this;\n var image = ref.image;\n\n\n if (!image && document.readyState === 'complete') {\n this.load(this.observer.takeRecords());\n }\n\n if (this.isImg) {\n return false;\n }\n\n image && image.then(function (img) { return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img)); });\n\n },\n\n write: function(data) {\n\n if (this.dataSrcset && window.devicePixelRatio !== 1) {\n\n var bgSize = css(this.$el, 'backgroundSize');\n if (bgSize.match(/^(auto\\s?)+$/) || toFloat(bgSize) === data.bgSize) {\n data.bgSize = getSourceSize(this.dataSrcset, this.sizes);\n css(this.$el, 'backgroundSize', ((data.bgSize) + \"px\"));\n }\n\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n load: function(entries) {\n var this$1 = this;\n\n\n // Old chromium based browsers (UC Browser) did not implement `isIntersecting`\n if (!entries.some(function (entry) { return isUndefined(entry.isIntersecting) || entry.isIntersecting; })) {\n return;\n }\n\n this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n\n setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n\n }, noop);\n\n this.observer.disconnect();\n },\n\n observe: function() {\n var this$1 = this;\n\n if (!this._data.image && this._connected) {\n this.target.forEach(function (el) { return this$1.observer.observe(el); });\n }\n }\n\n }\n\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n\n if (isImg(el)) {\n sizes && (el.sizes = sizes);\n srcset && (el.srcset = srcset);\n src && (el.src = src);\n } else if (src) {\n\n var change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, 'backgroundImage', (\"url(\" + (escape(src)) + \")\"));\n trigger(el, createEvent('load', false));\n }\n\n }\n\n }\n\n function getPlaceholderImage(width, height, sizes) {\n var assign;\n\n\n if (sizes) {\n ((assign = Dimensions.ratio({width: width, height: height}, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height));\n }\n\n return (\"data:image/svg+xml;utf8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\"></svg>\");\n }\n\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n function sizesToPixel(sizes) {\n var matches;\n\n sizesRe.lastIndex = 0;\n\n while ((matches = sizesRe.exec(sizes))) {\n if (!matches[1] || window.matchMedia(matches[1]).matches) {\n matches = evaluateSize(matches[2]);\n break;\n }\n }\n\n return matches || '100vw';\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n function evaluateSize(size) {\n return startsWith(size, 'calc')\n ? size\n .substring(5, size.length - 1)\n .replace(sizeRe, function (size) { return toPx(size); })\n .replace(/ /g, '')\n .match(additionRe)\n .reduce(function (a, b) { return a + +b; }, 0)\n : size;\n }\n\n var srcSetRe = /\\s+\\d+w\\s*(?:,|$)/g;\n function getSourceSize(srcset, sizes) {\n var srcSize = toPx(sizesToPixel(sizes));\n var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) { return a - b; });\n\n return descriptors.filter(function (size) { return size >= srcSize; })[0] || descriptors.pop() || '';\n }\n\n function isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage;\n\n // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Media = {\n\n props: {\n media: Boolean\n },\n\n data: {\n media: false\n },\n\n computed: {\n\n matchMedia: function() {\n var media = toMedia(this.media);\n return !media || window.matchMedia(media).matches;\n }\n\n }\n\n };\n\n function toMedia(value) {\n\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"breakpoint-\" + (value.substr(1));\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? (\"(min-width: \" + value + \"px)\") : false;\n }\n\n var Leader = {\n\n mixins: [Class, Media],\n\n props: {\n fill: String\n },\n\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n\n computed: {\n\n fill: function(ref) {\n var fill = ref.fill;\n\n return fill || getCssVar('leader-fill-content');\n }\n\n },\n\n connected: function() {\n var assign;\n\n (assign = wrapInner(this.$el, (\"<span class=\\\"\" + (this.clsWrapper) + \"\\\">\")), this.wrapper = assign[0]);\n },\n\n disconnected: function() {\n unwrap(this.wrapper.childNodes);\n },\n\n update: {\n\n read: function(ref) {\n var changed = ref.changed;\n var width = ref.width;\n\n\n var prev = width;\n\n width = Math.floor(this.$el.offsetWidth / 2);\n\n return {\n width: width,\n fill: this.fill,\n changed: changed || prev !== width,\n hide: !this.matchMedia\n };\n },\n\n write: function(data) {\n\n toggleClass(this.wrapper, this.clsHide, data.hide);\n\n if (data.changed) {\n data.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Container = {\n\n props: {\n container: Boolean\n },\n\n data: {\n container: true\n },\n\n computed: {\n\n container: function(ref) {\n var container = ref.container;\n\n return container === true && this.$container || container && $(container);\n }\n\n }\n\n };\n\n var active$1 = [];\n\n var Modal = {\n\n mixins: [Class, Container, Togglable],\n\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n\n computed: {\n\n panel: function(ref, $el) {\n var selPanel = ref.selPanel;\n\n return $(selPanel, $el);\n },\n\n transitionElement: function() {\n return this.panel;\n },\n\n bgClose: function(ref) {\n var bgClose = ref.bgClose;\n\n return bgClose && this.panel;\n }\n\n },\n\n beforeDisconnect: function() {\n if (this.isToggled()) {\n this.toggleNow(this.$el, false);\n }\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide();\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n },\n\n {\n name: 'beforeshow',\n\n self: true,\n\n handler: function(e) {\n\n if (includes(active$1, this)) {\n return false;\n }\n\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map(function (modal) { return modal.hide(); })).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n if (width(window) - width(document) && this.overlay) {\n css(document.body, 'overflowY', 'scroll');\n }\n\n addClass(document.documentElement, this.clsPage);\n\n if (this.bgClose) {\n once(this.$el, 'hide', delayOn(document, 'click', function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var target = ref.target;\n\n var current = last(active$1);\n if (!defaultPrevented\n && current === this$1\n && (!current.overlay || within(target, current.$el))\n && !within(target, current.panel)\n ) {\n current.hide();\n }\n }), {self: true});\n }\n\n if (this.escClose) {\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n var current = last(active$1);\n if (e.keyCode === 27 && current === this$1) {\n e.preventDefault();\n current.hide();\n }\n }), {self: true});\n }\n }\n\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n active$1.splice(active$1.indexOf(this), 1);\n\n if (!active$1.length) {\n css(document.body, 'overflowY', '');\n }\n\n if (!active$1.some(function (modal) { return modal.clsPage === this$1.clsPage; })) {\n removeClass(document.documentElement, this.clsPage);\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n toggle: function() {\n return this.isToggled() ? this.hide() : this.show();\n },\n\n show: function() {\n var this$1 = this;\n\n\n if (this.container && this.$el.parentNode !== this.container) {\n append(this.container, this.$el);\n return new Promise(function (resolve) { return requestAnimationFrame(function () { return this$1.show().then(resolve); }\n ); }\n );\n }\n\n return this.toggleElement(this.$el, true, animate$1(this));\n },\n\n hide: function() {\n return this.toggleElement(this.$el, false, animate$1(this));\n }\n\n }\n\n };\n\n function animate$1(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n\n return function (el, show) { return new Promise(function (resolve, reject) { return once(el, 'show hide', function () {\n el._reject && el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n var off = once(transitionElement, 'transitionstart', function () {\n once(transitionElement, 'transitionend transitioncancel', resolve, {self: true});\n clearTimeout(timer);\n }, {self: true});\n\n var timer = setTimeout(function () {\n off();\n resolve();\n }, toMs(css(transitionElement, 'transitionDuration')));\n\n }); }\n ); };\n }\n\n var Modal$1 = {\n\n install: install$1,\n\n mixins: [Modal],\n\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n\n events: [\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n\n }\n }\n\n ]\n\n };\n\n function install$1(UIkit) {\n\n UIkit.modal.dialog = function (content, options) {\n\n var dialog = UIkit.modal((\" <div class=\\\"uk-modal\\\"> <div class=\\\"uk-modal-dialog\\\">\" + content + \"</div> </div> \"), options);\n\n dialog.show();\n\n on(dialog.$el, 'hidden', function () { return Promise.resolve(function () { return dialog.$destroy(true); }); }, {self: true});\n\n return dialog;\n };\n\n UIkit.modal.alert = function (message, options) {\n\n options = assign({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options);\n\n return new Promise(\n function (resolve) { return on(UIkit.modal.dialog((\" <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-primary uk-modal-close\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> \"), options).$el, 'hide', resolve); }\n );\n };\n\n UIkit.modal.confirm = function (message, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve, reject) {\n\n var confirm = UIkit.modal.dialog((\" <form> <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> </form> \"), options);\n\n var resolved = false;\n\n on(confirm.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve();\n resolved = true;\n confirm.hide();\n });\n on(confirm.$el, 'hide', function () {\n if (!resolved) {\n reject();\n }\n });\n\n });\n };\n\n UIkit.modal.prompt = function (message, value, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve) {\n\n var prompt = UIkit.modal.dialog((\" <form class=\\\"uk-form-stacked\\\"> <div class=\\\"uk-modal-body\\\"> <label>\" + (isString(message) ? message : html(message)) + \"</label> <input class=\\\"uk-input\\\" autofocus> </div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\">\" + (options.labels.ok) + \"</button> </div> </form> \"), options),\n input = $('input', prompt.$el);\n\n input.value = value;\n\n var resolved = false;\n\n on(prompt.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve(input.value);\n resolved = true;\n prompt.hide();\n });\n on(prompt.$el, 'hide', function () {\n if (!resolved) {\n resolve(null);\n }\n });\n\n });\n };\n\n UIkit.modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n }\n\n var Nav = {\n\n extends: Accordion,\n\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n\n };\n\n var Navbar = {\n\n mixins: [Class, FlexBug],\n\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n\n data: {\n dropdown: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n forceHeight: true,\n selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n\n return (boundary === true || boundaryAlign) ? $el : boundary;\n },\n\n dropbarAnchor: function(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n\n return query(dropbarAnchor, $el);\n },\n\n pos: function(ref) {\n var align = ref.align;\n\n return (\"bottom-\" + align);\n },\n\n dropdowns: function(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n\n return $$((dropdown + \" .\" + clsDrop), $el);\n }\n\n },\n\n beforeConnect: function() {\n\n var ref = this.$props;\n var dropbar = ref.dropbar;\n\n this.dropbar = dropbar && (query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el) || $('<div></div>'));\n\n if (this.dropbar) {\n\n addClass(this.dropbar, 'uk-navbar-dropbar');\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n }\n\n },\n\n disconnected: function() {\n this.dropbar && remove(this.dropbar);\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.$create(\n 'drop',\n this.dropdowns.filter(function (el) { return !this$1.getDropdown(el); }),\n assign({}, this.$props, {boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset})\n );\n\n },\n\n events: [\n\n {\n name: 'mouseover',\n\n delegate: function() {\n return this.dropdown;\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n var active = this.getActive();\n if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n\n },\n\n {\n name: 'mouseleave',\n\n el: function() {\n return this.dropbar;\n },\n\n handler: function() {\n var active = this.getActive();\n\n if (active && !this.dropdowns.some(function (el) { return matches(el, ':hover'); })) {\n active.hide();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function() {\n\n if (!this.dropbar.parentNode) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n\n }\n },\n\n {\n name: 'show',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, drop) {\n\n var $el = drop.$el;\n var dir = drop.dir;\n\n this.clsDrop && addClass($el, ((this.clsDrop) + \"-dropbar\"));\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n },\n\n {\n name: 'beforehide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(e, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n },\n\n {\n name: 'hide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }\n\n ],\n\n methods: {\n\n getActive: function() {\n var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { return drop && drop.isActive(); });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n\n transitionTo: function(newHeight, el) {\n var this$1 = this;\n\n\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n\n el = oldHeight < newHeight && el;\n\n css(el, 'clip', (\"rect(0,\" + (el.offsetWidth) + \"px,\" + oldHeight + \"px,0)\"));\n\n height(dropbar, oldHeight);\n\n Transition.cancel([el, dropbar]);\n return Promise.all([\n Transition.start(dropbar, {height: newHeight}, this.duration),\n Transition.start(el, {clip: (\"rect(0,\" + (el.offsetWidth) + \"px,\" + newHeight + \"px,0)\")}, this.duration)\n ])\n .catch(noop)\n .then(function () {\n css(el, {clip: ''});\n this$1.$update(dropbar);\n });\n },\n\n getDropdown: function(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n\n }\n\n };\n\n var Offcanvas = {\n\n mixins: [Modal],\n\n args: 'mode',\n\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close',\n container: false\n },\n\n computed: {\n\n clsFlip: function(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n\n return flip ? clsFlip : '';\n },\n\n clsOverlay: function(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n\n return overlay ? clsOverlay : '';\n },\n\n clsMode: function(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n\n return (clsMode + \"-\" + mode);\n },\n\n clsSidebarAnimation: function(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n\n clsContainerAnimation: function(ref) {\n var mode = ref.mode;\n var clsContainerAnimation = ref.clsContainerAnimation;\n\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n\n transitionElement: function(ref) {\n var mode = ref.mode;\n\n return mode === 'reveal' ? this.panel.parentNode : this.panel;\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var hash = ref.current.hash;\n var defaultPrevented = ref.defaultPrevented;\n\n if (!defaultPrevented && hash && $(hash, document.body)) {\n this.hide();\n }\n }\n\n },\n\n {\n name: 'touchstart',\n\n passive: true,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(ref) {\n var targetTouches = ref.targetTouches;\n\n\n if (targetTouches.length === 1) {\n this.clientY = targetTouches[0].clientY;\n }\n\n }\n\n },\n\n {\n name: 'touchmove',\n\n self: true,\n passive: false,\n\n filter: function() {\n return this.overlay;\n },\n\n handler: function(e) {\n e.cancelable && e.preventDefault();\n }\n\n },\n\n {\n name: 'touchmove',\n\n passive: false,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(e) {\n\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n var clientY = event.targetTouches[0].clientY - this.clientY;\n var ref = this.panel;\n var scrollTop = ref.scrollTop;\n var scrollHeight = ref.scrollHeight;\n var clientHeight = ref.clientHeight;\n\n if (clientHeight >= scrollHeight\n || scrollTop === 0 && clientY > 0\n || scrollHeight - scrollTop <= clientHeight && clientY < 0\n ) {\n e.cancelable && e.preventDefault();\n }\n\n }\n\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (this.mode === 'reveal' && !hasClass(this.panel.parentNode, this.clsMode)) {\n wrapAll(this.panel, '<div>');\n addClass(this.panel.parentNode, this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');\n addClass(document.body, this.clsContainer, this.clsFlip);\n css(document.body, 'touch-action', 'pan-y pinch-zoom');\n css(this.$el, 'display', 'block');\n addClass(this.$el, this.clsOverlay);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n\n height(document.body); // force reflow\n addClass(document.body, this.clsContainerAnimation);\n\n this.clsContainerAnimation && suppressUserScale();\n\n\n }\n },\n\n {\n name: 'hide',\n\n self: true,\n\n handler: function() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, 'touch-action', '');\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n\n css(document.documentElement, 'overflowY', '');\n\n }\n },\n\n {\n name: 'swipeLeft swipeRight',\n\n handler: function(e) {\n\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n\n }\n }\n\n ]\n\n };\n\n // Chrome in responsive mode zooms page upon opening offcanvas\n function suppressUserScale() {\n getViewport().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '<meta name=\"viewport\">');\n }\n\n var OverflowAuto = {\n\n mixins: [Class],\n\n props: {\n selContainer: String,\n selContent: String\n },\n\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog'\n },\n\n computed: {\n\n container: function(ref, $el) {\n var selContainer = ref.selContainer;\n\n return closest($el, selContainer);\n },\n\n content: function(ref, $el) {\n var selContent = ref.selContent;\n\n return closest($el, selContent);\n }\n\n },\n\n connected: function() {\n css(this.$el, 'minHeight', 150);\n },\n\n update: {\n\n read: function() {\n\n if (!this.content || !this.container) {\n return false;\n }\n\n return {\n current: toFloat(css(this.$el, 'maxHeight')),\n max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el)))\n };\n },\n\n write: function(ref) {\n var current = ref.current;\n var max = ref.max;\n\n css(this.$el, 'maxHeight', max);\n if (Math.round(current) !== Math.round(max)) {\n trigger(this.$el, 'resize');\n }\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Responsive = {\n\n props: ['width', 'height'],\n\n connected: function() {\n addClass(this.$el, 'uk-responsive-width');\n },\n\n update: {\n\n read: function() {\n return isVisible(this.$el) && this.width && this.height\n ? {width: width(this.$el.parentNode), height: this.height}\n : false;\n },\n\n write: function(dim) {\n height(this.$el, Dimensions.contain({\n height: this.height,\n width: this.width\n }, dim).height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Scroll = {\n\n props: {\n duration: Number,\n offset: Number\n },\n\n data: {\n duration: 1000,\n offset: 0\n },\n\n methods: {\n\n scrollTo: function(el) {\n var this$1 = this;\n\n\n el = el && $(el) || document.body;\n\n var docHeight = height(document);\n var winHeight = height(window);\n\n var target = offset(el).top - this.offset;\n if (target + winHeight > docHeight) {\n target = docHeight - winHeight;\n }\n\n if (!trigger(this.$el, 'beforescroll', [this, el])) {\n return;\n }\n\n var start = Date.now();\n var startY = window.pageYOffset;\n var step = function () {\n\n var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration));\n\n scrollTop(window, currentY);\n\n // scroll more if we have not reached our destination\n if (currentY !== target) {\n requestAnimationFrame(step);\n } else {\n trigger(this$1.$el, 'scrolled', [this$1, el]);\n }\n\n };\n\n step();\n\n }\n\n },\n\n events: {\n\n click: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(escape(decodeURIComponent(this.$el.hash)).substr(1));\n }\n\n }\n\n };\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n var Scrollspy = {\n\n args: 'cls',\n\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n\n data: function () { return ({\n cls: false,\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n }); },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return target ? $$(target, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n write: function() {\n if (this.hidden) {\n css(filter(this.elements, (\":not(.\" + (this.inViewClass) + \")\")), 'visibility', 'hidden');\n }\n }\n\n },\n\n {\n\n read: function(ref) {\n var this$1 = this;\n var update = ref.update;\n\n\n if (!update) {\n return;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n\n if (!state) {\n state = {cls: data(el, 'uk-scrollspy-class') || this$1.cls};\n }\n\n state.show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n el._ukScrollspyState = state;\n\n });\n\n },\n\n write: function(data) {\n var this$1 = this;\n\n\n // Let child components be applied at least once first\n if (!data.update) {\n this.$emit();\n return data.update = true;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n var cls = state.cls;\n\n if (state.show && !state.inview && !state.queued) {\n\n var show = function () {\n\n css(el, 'visibility', '');\n addClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'inview');\n\n this$1.$update(el);\n\n state.inview = true;\n state.abort && state.abort();\n };\n\n if (this$1.delay) {\n\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(function () {\n return !state.inview && new Promise(function (resolve) {\n\n var timer = setTimeout(function () {\n\n show();\n resolve();\n\n }, data.promise || this$1.elements.length === 1 ? this$1.delay : 0);\n\n state.abort = function () {\n clearTimeout(timer);\n resolve();\n state.queued = false;\n };\n\n });\n\n });\n\n } else {\n show();\n }\n\n } else if (!state.show && (state.inview || state.queued) && this$1.repeat) {\n\n state.abort && state.abort();\n\n if (!state.inview) {\n return;\n }\n\n css(el, 'visibility', this$1.hidden ? 'hidden' : '');\n removeClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'outview');\n\n this$1.$update(el);\n\n state.inview = false;\n\n }\n\n\n });\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var ScrollspyNav = {\n\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n\n computed: {\n\n links: function(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) { return el.hash; });\n },\n\n elements: function(ref) {\n var selector = ref.closest;\n\n return closest(this.links, selector || '*');\n },\n\n targets: function() {\n return $$(this.links.map(function (el) { return escape(el.hash).substr(1); }).join(','));\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n if (this.scroll) {\n this.$create('scroll', this.links, {offset: this.offset || 0});\n }\n }\n\n },\n\n {\n\n read: function(data) {\n var this$1 = this;\n\n\n var scroll = window.pageYOffset + this.offset + 1;\n var max = height(document) - height(window) + this.offset;\n\n data.active = false;\n\n this.targets.every(function (el, i) {\n\n var ref = offset(el);\n var top = ref.top;\n var last = i + 1 === this$1.targets.length;\n\n if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) {\n return false;\n }\n\n if (!last && offset(this$1.targets[i + 1]).top <= scroll) {\n return true;\n }\n\n if (scroll >= max) {\n for (var j = this$1.targets.length - 1; j > i; j--) {\n if (isInView(this$1.targets[j])) {\n el = this$1.targets[j];\n break;\n }\n }\n }\n\n return !(data.active = $(filter(this$1.links, (\"[href=\\\"#\" + (el.id) + \"\\\"]\"))));\n\n });\n\n },\n\n write: function(ref) {\n var active = ref.active;\n\n\n this.links.forEach(function (el) { return el.blur(); });\n removeClass(this.elements, this.cls);\n\n if (active) {\n trigger(this.$el, 'active', [active, addClass(this.closest ? closest(active, this.closest) : active, this.cls)]);\n }\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var Sticky = {\n\n mixins: [Class, Media],\n\n props: {\n top: null,\n bottom: Boolean,\n offset: String,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n targetOffset: Number\n },\n\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n targetOffset: false\n },\n\n computed: {\n\n offset: function(ref) {\n var offset = ref.offset;\n\n return toPx(offset);\n },\n\n selTarget: function(ref, $el) {\n var selTarget = ref.selTarget;\n\n return selTarget && $(selTarget, $el) || $el;\n },\n\n widthElement: function(ref, $el) {\n var widthElement = ref.widthElement;\n\n return query(widthElement, $el) || this.placeholder;\n },\n\n isActive: {\n\n get: function() {\n return hasClass(this.selTarget, this.clsActive);\n },\n\n set: function(value) {\n if (value && !this.isActive) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n trigger(this.$el, 'active');\n } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n trigger(this.$el, 'inactive');\n }\n }\n\n }\n\n },\n\n connected: function() {\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class=\"uk-sticky-placeholder\"></div>');\n this.isFixed = false;\n this.isActive = false;\n },\n\n disconnected: function() {\n\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n remove(this.placeholder);\n this.placeholder = null;\n this.widthElement = null;\n },\n\n events: [\n\n {\n\n name: 'load hashchange popstate',\n\n el: window,\n\n handler: function() {\n var this$1 = this;\n\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n\n });\n }\n\n }\n\n }\n\n ],\n\n update: [\n\n {\n\n read: function(ref, type) {\n var height = ref.height;\n\n\n if (this.isActive && type !== 'update') {\n\n this.hide();\n height = this.$el.offsetHeight;\n this.show();\n\n }\n\n height = !this.isActive ? this.$el.offsetHeight : height;\n\n this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + height;\n\n var bottom = parseProp('bottom', this);\n\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - height;\n this.inactive = !this.matchMedia;\n\n return {\n lastScroll: false,\n height: height,\n margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n };\n },\n\n write: function(ref) {\n var height = ref.height;\n var margins = ref.margins;\n\n\n var ref$1 = this;\n var placeholder = ref$1.placeholder;\n\n css(placeholder, assign({height: height}, margins));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n attr(placeholder, 'hidden', '');\n }\n\n // ensure active/inactive classes are applied\n this.isActive = this.isActive;\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var scroll = ref.scroll; if ( scroll === void 0 ) scroll = 0;\n\n\n this.width = (isVisible(this.widthElement) ? this.widthElement : this.$el).offsetWidth;\n\n this.scroll = window.pageYOffset;\n\n return {\n dir: scroll <= this.scroll ? 'down' : 'up',\n scroll: this.scroll,\n visible: isVisible(this.$el),\n top: offsetPosition(this.placeholder)[0]\n };\n },\n\n write: function(data, type) {\n var this$1 = this;\n\n\n var initTimestamp = data.initTimestamp; if ( initTimestamp === void 0 ) initTimestamp = 0;\n var dir = data.dir;\n var lastDir = data.lastDir;\n var lastScroll = data.lastScroll;\n var scroll = data.scroll;\n var top = data.top;\n var visible = data.visible;\n var now = performance.now();\n\n data.lastScroll = scroll;\n\n if (scroll < 0 || scroll === lastScroll || !visible || this.disabled || this.showOnUp && type !== 'scroll') {\n return;\n }\n\n if (now - initTimestamp > 300 || dir !== lastDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n data.lastDir = dir;\n\n if (this.showOnUp && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {\n return;\n }\n\n if (this.inactive\n || scroll < this.top\n || this.showOnUp && (scroll <= this.top || dir === 'down' || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)\n ) {\n\n if (!this.isFixed) {\n\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n this.isFixed = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () { return this$1.hide(); }, noop);\n } else {\n this.hide();\n }\n\n } else if (this.isFixed) {\n\n this.update();\n\n } else if (this.animation) {\n\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n\n } else {\n this.show();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n ],\n\n methods: {\n\n show: function() {\n\n this.isFixed = true;\n this.update();\n attr(this.placeholder, 'hidden', null);\n\n },\n\n hide: function() {\n\n this.isActive = false;\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {position: '', top: '', width: ''});\n attr(this.placeholder, 'hidden', '');\n\n },\n\n update: function() {\n\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n\n if (this.bottom && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\n top: (top + \"px\"),\n width: this.width\n });\n\n this.isActive = active;\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n\n }\n\n }\n\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[(prop + \"Offset\")];\n\n\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isNumeric(value) && isString(value) && value.match(/^-?\\d/)) {\n\n return propOffset + toPx(value);\n\n } else {\n\n return offset(value === true ? $el.parentNode : query(value, $el)).bottom;\n\n }\n }\n\n var Switcher = {\n\n mixins: [Togglable],\n\n args: 'connect',\n\n props: {\n connect: String,\n toggle: String,\n active: Number,\n swiping: Boolean\n },\n\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n active: 0,\n swiping: true,\n cls: 'uk-active',\n clsContainer: 'uk-switcher',\n attrItem: 'uk-switcher-item',\n queued: true\n },\n\n computed: {\n\n connects: function(ref, $el) {\n var connect = ref.connect;\n\n return queryAll(connect, $el);\n },\n\n toggles: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(toNodes(this.$el.children).filter(function (el) { return within(e.current, el); })[0]);\n }\n\n },\n\n {\n name: 'click',\n\n el: function() {\n return this.connects;\n },\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n },\n\n {\n name: 'swipeRight swipeLeft',\n\n filter: function() {\n return this.swiping;\n },\n\n el: function() {\n return this.connects;\n },\n\n handler: function(ref) {\n var type = ref.type;\n\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }\n\n ],\n\n update: function() {\n var this$1 = this;\n\n\n this.connects.forEach(function (list) { return this$1.updateAria(list.children); });\n var ref = this.$el;\n var children = ref.children;\n this.show(filter(children, (\".\" + (this.cls)))[0] || children[this.active] || children[0]);\n\n this.swiping && css(this.connects, 'touch-action', 'pan-y pinch-zoom');\n\n },\n\n methods: {\n\n index: function() {\n return !isEmpty(this.connects) && index(filter(this.connects[0].children, (\".\" + (this.cls)))[0]);\n },\n\n show: function(item) {\n var this$1 = this;\n\n\n var ref = this.$el;\n var children = ref.children;\n var length = children.length;\n var prev = this.index();\n var hasPrev = prev >= 0;\n var dir = item === 'previous' ? -1 : 1;\n\n var toggle, active, next = getIndex(item, children, prev);\n\n for (var i = 0; i < length; i++, next = (next + dir + length) % length) {\n if (!matches(this.toggles[next], '.uk-disabled *, .uk-disabled, [disabled]')) {\n toggle = this.toggles[next];\n active = children[next];\n break;\n }\n }\n\n if (!active || prev >= 0 && hasClass(active, this.cls) || prev === next) {\n return;\n }\n\n removeClass(children, this.cls);\n addClass(active, this.cls);\n attr(this.toggles, 'aria-expanded', false);\n attr(toggle, 'aria-expanded', true);\n\n this.connects.forEach(function (list) {\n if (!hasPrev) {\n this$1.toggleNow(list.children[next]);\n } else {\n this$1.toggleElement([list.children[prev], list.children[next]]);\n }\n });\n\n }\n\n }\n\n };\n\n var Tab = {\n\n mixins: [Class],\n\n extends: Switcher,\n\n props: {\n media: Boolean\n },\n\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n\n connected: function() {\n\n var cls = hasClass(this.$el, 'uk-tab-left')\n ? 'uk-tab-left'\n : hasClass(this.$el, 'uk-tab-right')\n ? 'uk-tab-right'\n : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {cls: cls, mode: 'media', media: this.media});\n }\n }\n\n };\n\n var Toggle = {\n\n mixins: [Media, Togglable],\n\n args: 'target',\n\n props: {\n href: String,\n target: null,\n mode: 'list'\n },\n\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n\n computed: {\n\n target: function(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n }\n\n },\n\n connected: function() {\n trigger(this.target, 'updatearia', [this]);\n },\n\n events: [\n\n {\n\n name: (pointerEnter + \" \" + pointerLeave),\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n if (!isTouch(e)) {\n this.toggle((\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide')));\n }\n }\n\n },\n\n {\n\n name: 'click',\n\n filter: function() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n // TODO better isToggled handling\n var link;\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]')\n || (link = closest(e.target, 'a[href]')) && (\n this.cls\n || !isVisible(this.target)\n || link.hash && matches(this.target, link.hash)\n )\n ) {\n e.preventDefault();\n }\n\n this.toggle();\n }\n\n }\n\n ],\n\n update: {\n\n read: function() {\n return includes(this.mode, 'media') && this.media\n ? {match: this.matchMedia}\n : false;\n },\n\n write: function(ref) {\n var match = ref.match;\n\n\n var toggled = this.isToggled(this.target);\n if (match ? !toggled : toggled) {\n this.toggle();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n toggle: function(type) {\n if (trigger(this.target, type || 'toggle', [this])) {\n this.toggleElement(this.target);\n }\n }\n\n }\n\n };\n\n function core (UIkit) {\n\n // core components\n UIkit.component('accordion', Accordion);\n UIkit.component('alert', Alert);\n UIkit.component('cover', Cover);\n UIkit.component('drop', Drop);\n UIkit.component('dropdown', Dropdown);\n UIkit.component('formCustom', FormCustom);\n UIkit.component('gif', Gif);\n UIkit.component('grid', Grid);\n UIkit.component('heightMatch', HeightMatch);\n UIkit.component('heightViewport', HeightViewport);\n UIkit.component('icon', Icon);\n UIkit.component('img', Img);\n UIkit.component('leader', Leader);\n UIkit.component('margin', Margin);\n UIkit.component('modal', Modal$1);\n UIkit.component('nav', Nav);\n UIkit.component('navbar', Navbar);\n UIkit.component('offcanvas', Offcanvas);\n UIkit.component('overflowAuto', OverflowAuto);\n UIkit.component('responsive', Responsive);\n UIkit.component('scroll', Scroll);\n UIkit.component('scrollspy', Scrollspy);\n UIkit.component('scrollspyNav', ScrollspyNav);\n UIkit.component('sticky', Sticky);\n UIkit.component('svg', Svg);\n UIkit.component('switcher', Switcher);\n UIkit.component('tab', Tab);\n UIkit.component('toggle', Toggle);\n UIkit.component('video', Video);\n\n // Icon components\n UIkit.component('close', Close);\n UIkit.component('marker', IconComponent);\n UIkit.component('navbarToggleIcon', IconComponent);\n UIkit.component('overlayIcon', IconComponent);\n UIkit.component('paginationNext', IconComponent);\n UIkit.component('paginationPrevious', IconComponent);\n UIkit.component('searchIcon', Search);\n UIkit.component('slidenavNext', Slidenav);\n UIkit.component('slidenavPrevious', Slidenav);\n UIkit.component('spinner', Spinner);\n UIkit.component('totop', IconComponent);\n\n // core functionality\n UIkit.use(Core);\n\n }\n\n UIkit.version = '3.2.0';\n\n core(UIkit);\n\n var Countdown = {\n\n mixins: [Class],\n\n props: {\n date: String,\n clsWrapper: String\n },\n\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n\n computed: {\n\n date: function(ref) {\n var date = ref.date;\n\n return Date.parse(date);\n },\n\n days: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n\n hours: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n\n minutes: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n\n seconds: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n\n units: function() {\n var this$1 = this;\n\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { return this$1[unit]; });\n }\n\n },\n\n connected: function() {\n this.start();\n },\n\n disconnected: function() {\n var this$1 = this;\n\n this.stop();\n this.units.forEach(function (unit) { return empty(this$1[unit]); });\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n handler: function() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n }\n\n ],\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n\n this.stop();\n\n timespan.days\n = timespan.hours\n = timespan.minutes\n = timespan.seconds\n = 0;\n }\n\n this.units.forEach(function (unit) {\n\n var digits = String(Math.floor(timespan[unit]));\n\n digits = digits.length < 2 ? (\"0\" + digits) : digits;\n\n var el = this$1[unit];\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () { return '<span></span>'; }).join(''));\n }\n\n digits.forEach(function (digit, i) { return el.children[i].textContent = digit; });\n }\n\n });\n\n }\n\n },\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.stop();\n\n if (this.date && this.units.length) {\n this.$emit();\n this.timer = setInterval(function () { return this$1.$emit(); }, 1000);\n }\n\n },\n\n stop: function() {\n\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n\n }\n\n }\n\n };\n\n function getTimeSpan(date) {\n\n var total = date - Date.now();\n\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var targetClass = 'uk-animation-target';\n\n var Animate = {\n\n props: {\n animation: Number\n },\n\n data: {\n animation: 150\n },\n\n computed: {\n\n target: function() {\n return this.$el;\n }\n\n },\n\n methods: {\n\n animate: function(action) {\n var this$1 = this;\n\n\n addStyle();\n\n var children = toNodes(this.target.children);\n var propsFrom = children.map(function (el) { return getProps(el, true); });\n\n var oldHeight = height(this.target);\n var oldScrollY = window.pageYOffset;\n\n action();\n\n Transition.cancel(this.target);\n children.forEach(Transition.cancel);\n\n reset(this.target);\n this.$update(this.target);\n fastdom.flush();\n\n var newHeight = height(this.target);\n\n children = children.concat(toNodes(this.target.children).filter(function (el) { return !includes(children, el); }));\n\n var propsTo = children.map(function (el, i) { return el.parentNode && i in propsFrom\n ? propsFrom[i]\n ? isVisible(el)\n ? getPositionWithMargin(el)\n : {opacity: 0}\n : {opacity: isVisible(el) ? 1 : 0}\n : false; }\n );\n\n propsFrom = propsTo.map(function (props, i) {\n var from = children[i].parentNode === this$1.target\n ? propsFrom[i] || getProps(children[i])\n : false;\n\n if (from) {\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n }\n\n return from;\n });\n\n addClass(this.target, targetClass);\n children.forEach(function (el, i) { return propsFrom[i] && css(el, propsFrom[i]); });\n css(this.target, 'height', oldHeight);\n scrollTop(window, oldScrollY);\n\n return Promise.all(children.map(function (el, i) { return propsFrom[i] && propsTo[i]\n ? Transition.start(el, propsTo[i], this$1.animation, 'ease')\n : Promise.resolve(); }\n ).concat(Transition.start(this.target, {height: newHeight}, this.animation, 'ease'))).then(function () {\n children.forEach(function (el, i) { return css(el, {display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: ''}); });\n reset(this$1.target);\n this$1.$update(this$1.target);\n fastdom.flush(); // needed for IE11\n }, noop);\n\n }\n }\n };\n\n function getProps(el, opacity) {\n\n var zIndex = css(el, 'zIndex');\n\n return isVisible(el)\n ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el))\n : false;\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n width: ''\n });\n removeClass(el, targetClass);\n css(el, 'height', '');\n }\n\n function getPositionWithMargin(el) {\n var ref = el.getBoundingClientRect();\n var height = ref.height;\n var width = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n top += toFloat(css(el, 'marginTop'));\n\n return {top: top, left: left, height: height, width: width};\n }\n\n var style;\n\n function addStyle() {\n if (style) {\n return;\n }\n style = append(document.head, '<style>').sheet;\n style.insertRule(\n (\".\" + targetClass + \" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\"), 0\n );\n }\n\n var Filter = {\n\n mixins: [Animate],\n\n args: 'target',\n\n props: {\n target: Boolean,\n selActive: Boolean\n },\n\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n animation: 250\n },\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var attrItem = ref.attrItem;\n\n return $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), $el);\n },\n\n watch: function() {\n this.updateState();\n }\n\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return $(target, $el);\n },\n\n children: {\n\n get: function() {\n return toNodes(this.target && this.target.children);\n },\n\n watch: function(list, old) {\n if (!isEqualList(list, old)) {\n this.updateState();\n }\n }\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n\n e.preventDefault();\n this.apply(e.current);\n\n }\n\n }\n\n ],\n\n connected: function() {\n var this$1 = this;\n\n\n this.updateState();\n\n if (this.selActive !== false) {\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, includes(actives, el)); });\n }\n\n },\n\n methods: {\n\n apply: function(el) {\n this.setState(mergeState(el, this.attrItem, this.getState()));\n },\n\n getState: function() {\n var this$1 = this;\n\n return this.toggles\n .filter(function (item) { return hasClass(item, this$1.cls); })\n .reduce(function (state, el) { return mergeState(el, this$1.attrItem, state); }, {filter: {'': ''}, sort: []});\n },\n\n setState: function(state, animate) {\n var this$1 = this;\n if ( animate === void 0 ) animate = true;\n\n\n state = assign({filter: {'': ''}, sort: []}, state);\n\n trigger(this.$el, 'beforeFilter', [this, state]);\n\n var ref = this;\n var children = ref.children;\n\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state)); });\n\n var apply = function () {\n\n var selector = getSelector(state);\n\n children.forEach(function (el) { return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); });\n\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n if (!isEqual(sorted, children)) {\n sorted.forEach(function (el) { return append(this$1.target, el); });\n }\n }\n\n };\n\n if (animate) {\n this.animate(apply).then(function () { return trigger(this$1.$el, 'afterFilter', [this$1]); });\n } else {\n apply();\n trigger(this.$el, 'afterFilter', [this]);\n }\n\n },\n\n updateState: function() {\n var this$1 = this;\n\n fastdom.write(function () { return this$1.setState(this$1.getState(), false); });\n }\n\n }\n\n };\n\n function getFilter(el, attr) {\n return parseOptions(data(el, attr), ['filter']);\n }\n\n function mergeState(el, attr, state) {\n\n var filterBy = getFilter(el, attr);\n var filter = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order; if ( order === void 0 ) order = 'asc';\n\n if (filter || isUndefined(sort)) {\n\n if (group) {\n\n if (filter) {\n delete state.filter[''];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n\n if (isEmpty(state.filter) || '' in state.filter) {\n state.filter = {'': filter || ''};\n }\n\n }\n\n } else {\n state.filter = {'': filter || ''};\n }\n\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n\n return state;\n }\n\n function matchFilter(el, attr, ref) {\n var stateFilter = ref.filter; if ( stateFilter === void 0 ) stateFilter = {'': ''};\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n\n\n var ref$1 = getFilter(el, attr);\n var filter = ref$1.filter; if ( filter === void 0 ) filter = '';\n var group = ref$1.group; if ( group === void 0 ) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order; if ( order === void 0 ) order = 'asc';\n\n return isUndefined(sort)\n ? group in stateFilter && filter === stateFilter[group]\n || !filter && group && !(group in stateFilter) && !stateFilter['']\n : stateSort === sort && stateOrder === order;\n }\n\n function isEqualList(listA, listB) {\n return listA.length === listB.length\n && listA.every(function (el) { return ~listB.indexOf(el); });\n }\n\n function getSelector(ref) {\n var filter = ref.filter;\n\n var selector = '';\n each(filter, function (value) { return selector += value || ''; });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return assign([], nodes).sort(function (a, b) { return data(a, sort).localeCompare(data(b, sort), undefined, {numeric: true}) * (order === 'asc' || -1); });\n }\n\n var Animations = {\n\n slide: {\n\n show: function(dir) {\n return [\n {transform: translate(dir * -100)},\n {transform: translate()}\n ];\n },\n\n percent: function(current) {\n return translated(current);\n },\n\n translate: function(percent, dir) {\n return [\n {transform: translate(dir * -100 * percent)},\n {transform: translate(dir * 100 * (1 - percent))}\n ];\n }\n\n }\n\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function translate(value, unit) {\n if ( value === void 0 ) value = 0;\n if ( unit === void 0 ) unit = '%';\n\n value += value ? unit : '';\n return isIE ? (\"translateX(\" + value + \")\") : (\"translate3d(\" + value + \", 0, 0)\"); // currently not translate3d in IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return (\"scale3d(\" + value + \", \" + value + \", 1)\");\n }\n\n var Animations$1 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0},\n {opacity: 1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent},\n {opacity: percent}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 - .2)},\n {opacity: 1, transform: scale3d(1)}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},\n {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}\n ];\n }\n\n }\n\n });\n\n function Transitioner(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n\n\n var percent = animation.percent;\n var translate = animation.translate;\n var show = animation.show; if ( show === void 0 ) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n var this$1 = this;\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n triggerUpdate(next, 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n triggerUpdate(prev, 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(function () {\n this$1.reset();\n deferred.resolve();\n }, noop);\n\n return deferred.promise;\n },\n\n stop: function() {\n return Transition.stop([next, prev]);\n },\n\n cancel: function() {\n Transition.cancel([next, prev]);\n },\n\n reset: function() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n\n },\n\n translate: function(percent) {\n\n this.reset();\n\n var props = translate(percent, dir);\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate(prev, 'itemtranslateout', {percent: 1 - percent, dir: dir});\n\n },\n\n percent: function() {\n return percent(prev || next, next, dir);\n },\n\n getDistance: function() {\n return prev && prev.offsetWidth;\n }\n\n };\n\n }\n\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var SliderAutoplay = {\n\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n\n connected: function() {\n this.autoplay && this.startAutoplay();\n },\n\n disconnected: function() {\n this.stopAutoplay();\n },\n\n update: function() {\n attr(this.slides, 'tabindex', '-1');\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n filter: function() {\n return this.autoplay;\n },\n\n handler: function() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n\n }\n\n ],\n\n methods: {\n\n startAutoplay: function() {\n var this$1 = this;\n\n\n this.stopAutoplay();\n\n this.interval = setInterval(\n function () { return (!this$1.draggable || !$(':focus', this$1.$el))\n && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover'))\n && !this$1.stack.length\n && this$1.show('next'); },\n this.autoplayInterval\n );\n\n },\n\n stopAutoplay: function() {\n this.interval && clearInterval(this.interval);\n }\n\n }\n\n };\n\n var SliderDrag = {\n\n props: {\n draggable: Boolean\n },\n\n data: {\n draggable: true,\n threshold: 10\n },\n\n created: function() {\n var this$1 = this;\n\n\n ['start', 'move', 'end'].forEach(function (key) {\n\n var fn = this$1[key];\n this$1[key] = function (e) {\n\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$1.pos = pos;\n\n fn(e);\n };\n\n });\n\n },\n\n events: [\n\n {\n\n name: pointerDown,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (!this.draggable\n || !isTouch(e) && hasTextNodesOnly(e.target)\n || e.button > 0\n || this.length < 2\n ) {\n return;\n }\n\n this.start(e);\n }\n\n },\n\n {\n\n // Workaround for iOS 11 bug: https://bugs.webkit.org/show_bug.cgi?id=184250\n\n name: 'touchmove',\n passive: false,\n handler: 'move',\n delegate: function() {\n return this.selSlides;\n }\n\n },\n\n {\n name: 'dragstart',\n\n handler: function(e) {\n e.preventDefault();\n }\n }\n\n ],\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.drag = this.pos;\n\n if (this._transitioner) {\n\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n\n this.stack = [];\n\n } else {\n this.prevIndex = this.index;\n }\n\n // See above workaround notice\n var off = pointerMove !== 'touchmove'\n ? on(document, pointerMove, this.move, {passive: false})\n : noop;\n this.unbindMove = function () {\n off();\n this$1.unbindMove = null;\n };\n on(window, 'scroll', this.unbindMove);\n on(document, pointerUp, this.end, true);\n\n css(this.list, 'userSelect', 'none');\n\n },\n\n move: function(e) {\n var this$1 = this;\n\n\n // See above workaround notice\n if (!this.unbindMove) {\n return;\n }\n\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n\n css(this.list, 'pointerEvents', 'none');\n\n e.cancelable && e.preventDefault();\n\n this.dragging = true;\n this.dir = (distance < 0 ? 1 : -1);\n\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n\n this.drag -= width * this.dir;\n\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n }\n\n this.percent = dis / width;\n\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n\n var itemShown;\n\n [this.index, this.prevIndex].filter(function (i) { return !includes([nextIndex, prevIndex], i); }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1]);\n\n if (edge) {\n itemShown = true;\n this$1.prevIndex = prevIndex;\n }\n\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n\n },\n\n end: function() {\n\n off(window, 'scroll', this.unbindMove);\n this.unbindMove && this.unbindMove();\n off(document, pointerUp, this.end, true);\n\n if (this.dragging) {\n\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n\n }\n\n css(this.list, {userSelect: '', pointerEvents: ''});\n\n this.drag\n = this.percent\n = null;\n\n }\n\n }\n\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n\n data: {\n selNav: false\n },\n\n computed: {\n\n nav: function(ref, $el) {\n var selNav = ref.selNav;\n\n return $(selNav, $el);\n },\n\n selNavItem: function(ref) {\n var attrItem = ref.attrItem;\n\n return (\"[\" + attrItem + \"],[data-\" + attrItem + \"]\");\n },\n\n navItems: function(_, $el) {\n return $$(this.selNavItem, $el);\n }\n\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) { return (\"<li \" + (this$1.attrItem) + \"=\\\"\" + i + \"\\\"><a href=\\\"#\\\"></a></li>\"); }).join(''));\n }\n\n toggleClass($$(this.selNavItem, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex);\n\n this.updateNav();\n\n },\n\n events: ['resize']\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selNavItem;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n\n },\n\n {\n\n name: 'itemshow',\n handler: 'updateNav'\n\n }\n\n ],\n\n methods: {\n\n updateNav: function() {\n var this$1 = this;\n\n\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n\n var cmd = data(el, this$1.attrItem);\n\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));\n });\n\n }\n\n }\n\n };\n\n var Slider = {\n\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n\n data: function () { return ({\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n }); },\n\n connected: function() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.index);\n this.stack = [];\n },\n\n disconnected: function() {\n removeClass(this.slides, this.clsActive);\n },\n\n computed: {\n\n duration: function(ref, $el) {\n var velocity = ref.velocity;\n\n return speedUp($el.offsetWidth / velocity);\n },\n\n list: function(ref, $el) {\n var selList = ref.selList;\n\n return $(selList, $el);\n },\n\n maxIndex: function() {\n return this.length - 1;\n },\n\n selSlides: function(ref) {\n var selList = ref.selList;\n\n return (selList + \" > *\");\n },\n\n slides: {\n\n get: function() {\n return toNodes(this.list.children);\n },\n\n watch: function() {\n this.$reset();\n }\n\n },\n\n length: function() {\n return this.slides.length;\n }\n\n },\n\n events: {\n\n itemshown: function() {\n this.$update(this.list);\n }\n\n },\n\n methods: {\n\n show: function(index, force) {\n var this$1 = this;\n if ( force === void 0 ) force = false;\n\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n var reset = function () {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.index;\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n prev && trigger(prev, 'beforeitemhide', [this]);\n if (!trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n\n prev && trigger(prev, 'itemhidden', [this$1]);\n trigger(next, 'itemshown', [this$1]);\n\n return new Promise(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$1._transitioner = null;\n }\n resolve();\n });\n });\n\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n\n return promise;\n\n },\n\n getIndex: function(index, prev) {\n if ( index === void 0 ) index = this.index;\n if ( prev === void 0 ) prev = this.index;\n\n return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n return this.getIndex(index, prevIndex);\n },\n\n _show: function(prev, next, force) {\n\n this._transitioner = this._getTransitioner(\n prev,\n next,\n this.dir,\n assign({\n easing: force\n ? next.offsetWidth < 600\n ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */\n : this.easing\n }, this.transitionOptions)\n );\n\n if (!force && !prev) {\n this._transitioner.translate(1);\n return Promise.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n\n },\n\n _getDistance: function(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n\n _translate: function(percent, prev, next) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n transitioner.translate(percent);\n return transitioner;\n },\n\n _getTransitioner: function(prev, next, dir, options) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n if ( dir === void 0 ) dir = this.dir || 1;\n if ( options === void 0 ) options = this.transitionOptions;\n\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n\n }\n\n };\n\n function getDirection(index, prevIndex) {\n return index === 'next'\n ? 1\n : index === 'previous'\n ? -1\n : index < prevIndex\n ? -1\n : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n\n mixins: [Slider],\n\n props: {\n animation: String\n },\n\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations,\n Transitioner: Transitioner\n },\n\n computed: {\n\n animation: function(ref) {\n var animation = ref.animation;\n var Animations = ref.Animations;\n\n return assign(animation in Animations ? Animations[animation] : Animations.slide, {name: animation});\n },\n\n transitionOptions: function() {\n return {animation: this.animation};\n }\n\n },\n\n events: {\n\n 'itemshow itemhide itemshown itemhidden': function(ref) {\n var target = ref.target;\n\n this.$update(target);\n },\n\n beforeitemshow: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActive);\n },\n\n itemshown: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActivated);\n },\n\n itemhidden: function(ref) {\n var target = ref.target;\n\n removeClass(target, this.clsActive, this.clsActivated);\n }\n\n }\n\n };\n\n var lightboxPanel = {\n\n mixins: [Container, Modal, Togglable, Slideshow],\n\n functional: true,\n\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n\n data: function () { return ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n selCaption: '.uk-lightbox-caption',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"<div class=\\\"uk-lightbox uk-overflow-hidden\\\"> <ul class=\\\"uk-lightbox-items\\\"></ul> <div class=\\\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\\\"> <button class=\\\"uk-lightbox-toolbar-icon uk-close-large\\\" type=\\\"button\\\" uk-close></button> </div> <a class=\\\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-previous uk-lightbox-item=\\\"previous\\\"></a> <a class=\\\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-next uk-lightbox-item=\\\"next\\\"></a> <div class=\\\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\\\"></div> </div>\"\n }); },\n\n created: function() {\n\n var $el = $(this.template);\n var list = $(this.selList, $el);\n this.items.forEach(function () { return append(list, '<li></li>'); });\n\n this.$mount(append(this.container, $el));\n\n },\n\n computed: {\n\n caption: function(ref, $el) {\n var selCaption = ref.selCaption;\n\n return $('.uk-lightbox-caption', $el);\n }\n\n },\n\n events: [\n\n {\n\n name: (pointerMove + \" \" + pointerDown + \" keydown\"),\n\n handler: 'showControls'\n\n },\n\n {\n\n name: 'click',\n\n self: true,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n this.hide();\n }\n\n },\n\n {\n\n name: 'shown',\n\n self: true,\n\n handler: function() {\n this.showControls();\n }\n\n },\n\n {\n\n name: 'hide',\n\n self: true,\n\n handler: function() {\n\n this.hideControls();\n\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n\n }\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n this.$destroy(true);\n }\n\n },\n\n {\n\n name: 'keyup',\n\n el: document,\n\n handler: function(e) {\n\n if (!this.isToggled(this.$el)) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n case 39:\n this.show('next');\n break;\n }\n }\n },\n\n {\n\n name: 'beforeitemshow',\n\n handler: function(e) {\n\n if (this.isToggled()) {\n return;\n }\n\n this.draggable = false;\n\n e.preventDefault();\n\n this.toggleNow(this.$el, true);\n\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n\n }\n\n },\n\n {\n\n name: 'itemshow',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n var i = index(target);\n var ref$1 = this.getItem(i);\n var caption = ref$1.caption;\n\n css(this.caption, 'display', caption ? '' : 'none');\n html(this.caption, caption);\n\n for (var j = 0; j <= this.preload; j++) {\n this.loadItem(this.getIndex(i + j));\n this.loadItem(this.getIndex(i - j));\n }\n\n }\n\n },\n\n {\n\n name: 'itemshown',\n\n handler: function() {\n this.draggable = this.$props.draggable;\n }\n\n },\n\n {\n\n name: 'itemload',\n\n handler: function(_, item) {\n var this$1 = this;\n\n\n var source = item.source;\n var type = item.type;\n var alt = item.alt;\n\n this.setItem(item, '<span uk-spinner></span>');\n\n if (!source) {\n return;\n }\n\n var matches;\n\n // Image\n if (type === 'image' || source.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i)) {\n\n getImage(source).then(\n function (img) { return this$1.setItem(item, (\"<img width=\\\"\" + (img.width) + \"\\\" height=\\\"\" + (img.height) + \"\\\" src=\\\"\" + source + \"\\\" alt=\\\"\" + (alt ? alt : '') + \"\\\">\")); },\n function () { return this$1.setError(item); }\n );\n\n // Video\n } else if (type === 'video' || source.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n\n var video = $((\"<video controls playsinline\" + (item.poster ? (\" poster=\\\"\" + (item.poster) + \"\\\"\") : '') + \" uk-video=\\\"\" + (this.videoAutoplay) + \"\\\"></video>\"));\n attr(video, 'src', source);\n\n once(video, 'error loadedmetadata', function (type) {\n if (type === 'error') {\n this$1.setError(item);\n } else {\n attr(video, {width: video.videoWidth, height: video.videoHeight});\n this$1.setItem(item, video);\n }\n });\n\n // Iframe\n } else if (type === 'iframe' || source.match(/\\.(html|php)($|\\?)/i)) {\n\n this.setItem(item, (\"<iframe class=\\\"uk-lightbox-iframe\\\" src=\\\"\" + source + \"\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"));\n\n // YouTube\n } else if ((matches = source.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/) || source.match(/()youtu\\.be\\/(.*)/))) {\n\n var id = matches[2];\n var setIframe = function (width, height) {\n if ( width === void 0 ) width = 640;\n if ( height === void 0 ) height = 450;\n\n return this$1.setItem(item, getIframe((\"https://www.youtube\" + (matches[1] || '') + \".com/embed/\" + id), width, height, this$1.videoAutoplay));\n };\n\n getImage((\"https://img.youtube.com/vi/\" + id + \"/maxresdefault.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n // YouTube default 404 thumb, fall back to low resolution\n if (width === 120 && height === 90) {\n getImage((\"https://img.youtube.com/vi/\" + id + \"/0.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n return setIframe(width, height);\n },\n setIframe\n );\n } else {\n setIframe(width, height);\n }\n },\n setIframe\n );\n\n // Vimeo\n } else if ((matches = source.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))) {\n\n ajax((\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + (encodeURI(source))), {responseType: 'json', withCredentials: false})\n .then(\n function (ref) {\n var ref_response = ref.response;\n var height = ref_response.height;\n var width = ref_response.width;\n\n return this$1.setItem(item, getIframe((\"https://player.vimeo.com/video/\" + (matches[2])), width, height, this$1.videoAutoplay));\n },\n function () { return this$1.setError(item); }\n );\n\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n loadItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n\n var item = this.getItem(index);\n\n if (item.content) {\n return;\n }\n\n trigger(this.$el, 'itemload', [item]);\n },\n\n getItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n return this.items[index] || {};\n },\n\n setItem: function(item, content) {\n assign(item, {content: content});\n var el = html(this.slides[this.items.indexOf(item)], content);\n trigger(this.$el, 'itemloaded', [this, el]);\n this.$update(el);\n },\n\n setError: function(item) {\n this.setItem(item, '<span uk-icon=\"icon: bolt; ratio: 2\"></span>');\n },\n\n showControls: function() {\n\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n\n },\n\n hideControls: function() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n\n }\n\n };\n\n function getIframe(src, width, height, autoplay) {\n return (\"<iframe src=\\\"\" + src + \"\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\" style=\\\"max-width: 100%; box-sizing: border-box;\\\" frameborder=\\\"0\\\" allowfullscreen uk-video=\\\"autoplay: \" + autoplay + \"\\\" uk-responsive></iframe>\");\n }\n\n var Lightbox = {\n\n install: install$2,\n\n props: {toggle: String},\n\n data: {toggle: 'a'},\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n },\n\n watch: function() {\n this.hide();\n }\n\n },\n\n items: function() {\n return uniqueBy(this.toggles.map(toItem), 'source');\n }\n\n },\n\n disconnected: function() {\n this.hide();\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n var src = data(e.current, 'href');\n this.show(findIndex(this.items, function (ref) {\n var source = ref.source;\n\n return source === src;\n }));\n }\n\n }\n\n ],\n\n methods: {\n\n show: function(index) {\n var this$1 = this;\n\n\n this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {items: this.items}));\n\n on(this.panel.$el, 'hidden', function () { return this$1.panel = false; });\n\n return this.panel.show(index);\n\n },\n\n hide: function() {\n\n return this.panel && this.panel.hide();\n\n }\n\n }\n\n };\n\n function install$2(UIkit, Lightbox) {\n\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', lightboxPanel);\n }\n\n assign(\n Lightbox.props,\n UIkit.component('lightboxPanel').options.props\n );\n\n }\n\n function toItem(el) {\n return ['href', 'caption', 'type', 'poster', 'alt'].reduce(function (obj, attr) {\n obj[attr === 'href' ? 'source' : attr] = data(el, attr);\n return obj;\n }, {});\n }\n\n var obj;\n\n var containers = {};\n\n var Notification = {\n\n functional: true,\n\n args: ['message', 'status'],\n\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n\n install: install$3,\n\n computed: {\n\n marginProp: function(ref) {\n var pos = ref.pos;\n\n return (\"margin\" + (startsWith(pos, 'top') ? 'Top' : 'Bottom'));\n },\n\n startProps: function() {\n var obj;\n\n return ( obj = {opacity: 0}, obj[this.marginProp] = -this.$el.offsetHeight, obj );\n }\n\n },\n\n created: function() {\n\n if (!containers[this.pos]) {\n containers[this.pos] = append(this.$container, (\"<div class=\\\"uk-notification uk-notification-\" + (this.pos) + \"\\\"></div>\"));\n }\n\n var container = css(containers[this.pos], 'display', 'block');\n\n this.$mount(append(container,\n (\"<div class=\\\"\" + (this.clsMsg) + (this.status ? (\" \" + (this.clsMsg) + \"-\" + (this.status)) : '') + \"\\\"> <a href=\\\"#\\\" class=\\\"\" + (this.clsClose) + \"\\\" data-uk-close></a> <div>\" + (this.message) + \"</div> </div>\")\n ));\n\n },\n\n connected: function() {\n var this$1 = this;\n var obj;\n\n\n var margin = toFloat(css(this.$el, this.marginProp));\n Transition.start(\n css(this.$el, this.startProps),\n ( obj = {opacity: 1}, obj[this.marginProp] = margin, obj )\n ).then(function () {\n if (this$1.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n\n },\n\n events: ( obj = {\n\n click: function(e) {\n if (closest(e.target, 'a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n this.close();\n }\n\n }, obj[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj ),\n\n methods: {\n\n close: function(immediate) {\n var this$1 = this;\n\n\n var removeFn = function () {\n\n trigger(this$1.$el, 'close', [this$1]);\n remove(this$1.$el);\n\n if (!containers[this$1.pos].children.length) {\n css(containers[this$1.pos], 'display', 'none');\n }\n\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn();\n } else {\n Transition.start(this.$el, this.startProps).then(removeFn);\n }\n }\n\n }\n\n };\n\n function install$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];\n\n var Parallax = {\n\n mixins: [Media],\n\n props: props.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {}),\n\n data: props.reduce(function (data, prop) {\n data[prop] = undefined;\n return data;\n }, {}),\n\n computed: {\n\n props: function(properties, $el) {\n var this$1 = this;\n\n\n return props.reduce(function (props, prop) {\n\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n\n var pos, bgPos, diff;\n var steps = properties[prop].slice(0);\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale'\n ? 1\n : isCssProp\n ? css($el, prop)\n : 0) || 0);\n }\n\n var unit = getUnit(steps);\n\n if (isColor) {\n\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) { return parseColor($el, step); });\n $el.style.color = color;\n\n } else if (startsWith(prop, 'bg')) {\n\n var attr = prop === 'bgy' ? 'height' : 'width';\n steps = steps.map(function (step) { return toPx(step, attr, this$1.$el); });\n\n css($el, (\"background-position-\" + (prop[2])), '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\n\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n\n diff = max - min;\n\n steps = steps.map(function (step) { return step - (down ? min : max); });\n pos = (down ? -diff : 0) + \"px\";\n\n } else {\n\n pos = bgPos;\n\n }\n\n } else {\n\n steps = steps.map(toFloat);\n\n }\n\n if (prop === 'stroke') {\n\n if (!steps.some(function (step) { return step; })) {\n return props;\n }\n\n var length = getMaxPathLength(this$1.$el);\n css($el, 'strokeDasharray', length);\n\n if (unit === '%') {\n steps = steps.map(function (step) { return step * length / 100; });\n }\n\n steps = steps.reverse();\n\n prop = 'strokeDashoffset';\n }\n\n props[prop] = {steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff};\n\n return props;\n\n }, {});\n\n },\n\n bgProps: function() {\n var this$1 = this;\n\n return ['bgx', 'bgy'].filter(function (bg) { return bg in this$1.props; });\n },\n\n covers: function(_, $el) {\n return covers($el);\n }\n\n },\n\n disconnected: function() {\n delete this._image;\n },\n\n update: {\n\n read: function(data) {\n var this$1 = this;\n\n\n data.active = this.matchMedia;\n\n if (!data.active) {\n return;\n }\n\n if (!data.image && this.covers && this.bgProps.length) {\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (src) {\n var img = new Image();\n img.src = src;\n data.image = img;\n\n if (!img.naturalWidth) {\n img.onload = function () { return this$1.$emit(); };\n }\n }\n\n }\n\n var image = data.image;\n\n if (!image || !image.naturalWidth) {\n return;\n }\n\n var dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n\n var dim = Dimensions.cover(dimImage, dimEl);\n\n this.bgProps.forEach(function (prop) {\n\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = dim[attr] + diff - span;\n } else if (span > diff) {\n\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);\n\n if (posPercentage) {\n this$1.props[prop].steps = steps.map(function (step) { return step - (span - diff) / posPercentage; });\n }\n }\n\n dim = Dimensions.cover(dimImage, dimEl);\n });\n\n data.dim = dim;\n },\n\n write: function(ref) {\n var dim = ref.dim;\n var active = ref.active;\n\n\n if (!active) {\n css(this.$el, {backgroundSize: '', backgroundRepeat: ''});\n return;\n }\n\n dim && css(this.$el, {\n backgroundSize: ((dim.width) + \"px \" + (dim.height) + \"px\"),\n backgroundRepeat: 'no-repeat'\n });\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n reset: function() {\n var this$1 = this;\n\n each(this.getCss(0), function (_, prop) { return css(this$1.$el, prop, ''); });\n },\n\n getCss: function(percent) {\n\n var ref = this;\n var props = ref.props;\n return Object.keys(props).reduce(function (css, prop) {\n\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n\n // transforms\n case 'x':\n case 'y': {\n unit = unit || 'px';\n css.transform += \" translate\" + (ucfirst(prop)) + \"(\" + (toFloat(value).toFixed(unit === 'px' ? 0 : 2)) + unit + \")\";\n break;\n }\n case 'rotate':\n unit = unit || 'deg';\n css.transform += \" rotate(\" + (value + unit) + \")\";\n break;\n case 'scale':\n css.transform += \" scale(\" + value + \")\";\n break;\n\n // bg image\n case 'bgy':\n case 'bgx':\n css[(\"background-position-\" + (prop[2]))] = \"calc(\" + pos + \" + \" + value + \"px)\";\n break;\n\n // color\n case 'color':\n case 'backgroundColor':\n case 'borderColor': {\n\n var ref$1 = getStep(steps, percent);\n var start = ref$1[0];\n var end = ref$1[1];\n var p = ref$1[2];\n\n css[prop] = \"rgba(\" + (start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',')) + \")\";\n break;\n }\n // CSS Filter\n case 'blur':\n unit = unit || 'px';\n css.filter += \" blur(\" + (value + unit) + \")\";\n break;\n case 'hue':\n unit = unit || 'deg';\n css.filter += \" hue-rotate(\" + (value + unit) + \")\";\n break;\n case 'fopacity':\n unit = unit || '%';\n css.filter += \" opacity(\" + (value + unit) + \")\";\n break;\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n unit = unit || '%';\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n break;\n default:\n css[prop] = value;\n }\n\n return css;\n\n }, {transform: '', filter: ''});\n\n }\n\n }\n\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color')\n .split(/[(),]/g)\n .slice(1, -1)\n .concat(1)\n .slice(0, 4)\n .map(toFloat);\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index = Math.min(Math.floor(count * percent), count - 1);\n var step = steps.slice(index, index + 2);\n\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n\n return step;\n }\n\n function getValue(steps, percent, digits) {\n if ( digits === void 0 ) digits = 2;\n\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return (isNumber(start)\n ? start + Math.abs(start - end) * p * (start < end ? 1 : -1)\n : +end\n ).toFixed(digits);\n }\n\n function getUnit(steps) {\n return steps.reduce(function (unit, step) { return isString(step) && step.replace(/-|\\d/g, '').trim() || unit; }, '');\n }\n\n function covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var Parallax$1 = {\n\n mixins: [Parallax],\n\n props: {\n target: String,\n viewport: Number,\n easing: Number\n },\n\n data: {\n target: false,\n viewport: 1,\n easing: 1\n },\n\n computed: {\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return getOffsetElement(target && query(target, $el) || $el);\n }\n\n },\n\n update: {\n\n read: function(ref, type) {\n var percent = ref.percent;\n var active = ref.active;\n\n\n if (type !== 'scroll') {\n percent = false;\n }\n\n if (!active) {\n return;\n }\n\n var prev = percent;\n percent = ease$1(scrolledOver(this.target) / (this.viewport || 1), this.easing);\n\n return {\n percent: percent,\n style: prev !== percent ? this.getCss(percent) : false\n };\n },\n\n write: function(ref) {\n var style = ref.style;\n var active = ref.active;\n\n\n if (!active) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n function ease$1(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\n }\n\n // SVG elements do not inherit from HTMLElement\n function getOffsetElement(el) {\n return el\n ? 'offsetTop' in el\n ? el\n : getOffsetElement(el.parentNode)\n : document.body;\n }\n\n var SliderReactive = {\n\n update: {\n\n write: function() {\n\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index = this.getValidIndex(this.index);\n\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function Transitioner$1 (prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n\n\n var deferred = new Deferred();\n\n var from = prev\n ? getLeft(prev, list, center)\n : getLeft(next, list, center) + bounds(next).width * dir;\n var to = next\n ? getLeft(next, list, center)\n : from + bounds(prev).width * dir * (isRtl ? -1 : 1);\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n prev && this.updateTranslates();\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Transition\n .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing)\n .then(deferred.resolve, noop);\n\n return deferred.promise;\n\n },\n\n stop: function() {\n return Transition.stop(list);\n },\n\n cancel: function() {\n Transition.cancel(list);\n },\n\n reset: function() {\n css(list, 'transform', '');\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n\n translate: function(percent) {\n\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n\n css(list, 'transform', translate(clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n bounds(list).width\n ) * (isRtl ? -1 : 1), 'px'));\n\n this.updateTranslates();\n\n if (prev) {\n percent = clamp(percent, -1, 1);\n triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {percent: 1 - percent, dir: dir});\n }\n\n },\n\n percent: function() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n\n getDistance: function() {\n return Math.abs(to - from);\n },\n\n getItemIn: function(out) {\n if ( out === void 0 ) out = false;\n\n\n var actives = this.getActives();\n var all = sortBy(slides(list), 'offsetLeft');\n var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);\n\n return ~i && all[i + (prev && !out ? dir : 0)];\n\n },\n\n getActives: function() {\n\n var left = getLeft(prev || next, list, center);\n\n return sortBy(slides(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n return slideLeft >= left && slideLeft + bounds(slide).width <= bounds(list).width + left;\n }), 'offsetLeft');\n\n },\n\n updateTranslates: function() {\n\n var actives = this.getActives();\n\n slides(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n\n triggerUpdate$1(slide, (\"itemtranslate\" + (isActive ? 'in' : 'out')), {\n percent: isActive ? 1 : 0,\n dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1\n });\n });\n }\n\n };\n\n }\n\n function getLeft(el, list, center) {\n\n var left = getElLeft(el, list);\n\n return center\n ? left - centerEl(el, list)\n : Math.min(left, getMax(list));\n\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - bounds(list).width);\n }\n\n function getWidth(list) {\n return slides(list).reduce(function (right, el) { return bounds(el).width + right; }, 0);\n }\n\n function getMaxWidth(list) {\n return slides(list).reduce(function (right, el) { return Math.max(right, bounds(el).width); }, 0);\n }\n\n function centerEl(el, list) {\n return bounds(list).width / 2 - bounds(el).width / 2;\n }\n\n function getElLeft(el, list) {\n return (position(el).left + (isRtl ? bounds(el).width - bounds(list).width : 0)) * (isRtl ? -1 : 1);\n }\n\n function bounds(el) {\n return el.getBoundingClientRect();\n }\n\n function triggerUpdate$1(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n function slides(list) {\n return toNodes(list.children);\n }\n\n var Slider$1 = {\n\n mixins: [Class, Slider, SliderReactive],\n\n props: {\n center: Boolean,\n sets: Boolean\n },\n\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner$1\n },\n\n computed: {\n\n avgWidth: function() {\n return getWidth(this.list) / this.length;\n },\n\n finite: function(ref) {\n var finite = ref.finite;\n\n return finite || getWidth(this.list) < bounds(this.list).width + getMaxWidth(this.list) + this.center;\n },\n\n maxIndex: function() {\n\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return last(this.sets);\n }\n\n css(this.slides, 'order', '');\n\n var max = getMax(this.list);\n var i = this.length;\n\n while (i--) {\n if (getElLeft(this.list.children[i], this.list) < max) {\n return Math.min(i + 1, this.length - 1);\n }\n }\n\n return 0;\n },\n\n sets: function(ref) {\n var this$1 = this;\n var sets = ref.sets;\n\n\n var width = bounds(this.list).width / (this.center ? 2 : 1);\n\n var left = 0;\n var leftCenter = width;\n var slideLeft = 0;\n\n sets = sets && this.slides.reduce(function (sets, slide, i) {\n\n var ref = bounds(slide);\n var slideWidth = ref.width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n\n if (!this$1.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n\n var cmp = this$1.slides[i + 1];\n if (this$1.center && cmp && slideWidth < leftCenter - bounds(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width;\n sets.push(i);\n left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0);\n }\n\n }\n }\n\n slideLeft += slideWidth;\n\n return sets;\n\n }, []);\n\n return !isEmpty(sets) && sets;\n\n },\n\n transitionOptions: function() {\n return {\n center: this.center,\n list: this.list\n };\n }\n\n },\n\n connected: function() {\n toggleClass(this.$el, this.clsContainer, !$((\".\" + (this.clsContainer)), this.$el));\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), this.$el).forEach(function (el) {\n var index = data(el, this$1.attrItem);\n this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex));\n });\n\n if (!this.dragging && !this.stack.length) {\n this._getTransitioner().translate(1);\n }\n\n },\n\n events: ['resize']\n\n },\n\n events: {\n\n beforeitemshow: function(e) {\n\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n var diff = Math.abs(\n this.index\n - this.prevIndex\n + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n\n if (!this.dragging && diff > 1) {\n\n for (var i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n this.duration = speedUp(this.avgWidth / this.velocity)\n * (bounds(\n this.dir < 0 || !this.slides[this.prevIndex]\n ? this.slides[this.index]\n : this.slides[this.prevIndex]\n ).width / this.avgWidth);\n\n this.reorder();\n\n },\n\n itemshow: function() {\n !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n },\n\n itemshown: function() {\n var this$1 = this;\n\n var actives = this._getTransitioner(this.index).getActives();\n this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActive, includes(actives, slide)); });\n (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); });\n }\n\n },\n\n methods: {\n\n reorder: function() {\n var this$1 = this;\n\n\n css(this.slides, 'order', '');\n\n if (this.finite) {\n return;\n }\n\n var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n\n this.slides.forEach(function (slide, i) { return css(slide, 'order', this$1.dir > 0 && i < index\n ? 1\n : this$1.dir < 0 && i >= this$1.index\n ? -1\n : ''\n ); }\n );\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index];\n var width = bounds(this.list).width / 2 - bounds(next).width / 2;\n var j = 0;\n\n while (width > 0) {\n var slideIndex = this.getIndex(--j + index, index);\n var slide = this.slides[slideIndex];\n\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= bounds(slide).width;\n }\n\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n var prev;\n\n do {\n\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n\n } while (index !== prev);\n\n return index;\n }\n\n }\n\n };\n\n var SlideshowParallax = {\n\n mixins: [Parallax],\n\n data: {\n selItem: '!li'\n },\n\n computed: {\n\n item: function(ref, $el) {\n var selItem = ref.selItem;\n\n return query(selItem, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'itemshown',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n css(this.$el, this.getCss(.5));\n }\n\n },\n\n {\n name: 'itemin itemout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n\n Transition.start(this.$el, this.getCss(isIn(type)\n ? .5\n : dir > 0\n ? 1\n : 0\n ), duration, timing).catch(noop);\n\n }\n },\n\n {\n name: 'transitioncanceled transitionend',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n Transition.cancel(this.$el);\n }\n\n },\n\n {\n name: 'itemtranslatein itemtranslateout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n }\n }\n\n ]\n\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrent(type, dir, percent) {\n\n percent /= 2;\n\n return !isIn(type)\n ? dir < 0\n ? percent\n : 1 - percent\n : dir < 0\n ? 1 - percent\n : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0, zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 + .5), zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n pull: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ]\n : [\n {transform: translate(-100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir < 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(30 * percent), zIndex: -1},\n {transform: translate(-100 * (1 - percent)), zIndex: 0}\n ]\n : [\n {transform: translate(-percent * 100), zIndex: 0},\n {transform: translate(30 * (1 - percent)), zIndex: -1}\n ];\n }\n\n },\n\n push: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ]\n : [\n {transform: translate(-30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir > 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(percent * 100), zIndex: 0},\n {transform: translate(-30 * (1 - percent)), zIndex: -1}\n ]\n : [\n {transform: translate(-30 * percent), zIndex: -1},\n {transform: translate(100 * (1 - percent)), zIndex: 0}\n ];\n }\n\n }\n\n });\n\n var Slideshow$1 = {\n\n mixins: [Class, Slideshow, SliderReactive],\n\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number\n },\n\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations$2\n },\n\n update: {\n\n read: function() {\n\n var ref = this.ratio.split(':').map(Number);\n var width = ref[0];\n var height = ref[1];\n\n height = height * this.list.offsetWidth / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return {height: height - boxModelAdjust(this.list, 'content-box')};\n },\n\n write: function(ref) {\n var height = ref.height;\n\n height > 0 && css(this.list, 'minHeight', height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Sortable = {\n\n mixins: [Class, Animate],\n\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false\n },\n\n created: function() {\n var this$1 = this;\n\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n this$1[key] = function (e) {\n this$1.scrollY = window.pageYOffset;\n var ref = getEventPos(e, 'page');\n var x = ref.x;\n var y = ref.y;\n this$1.pos = {x: x, y: y};\n\n fn(e);\n };\n });\n },\n\n events: {\n\n name: pointerDown,\n passive: false,\n handler: 'init'\n\n },\n\n update: {\n\n write: function() {\n\n if (this.clsEmpty) {\n toggleClass(this.$el, this.clsEmpty, isEmpty(this.$el.children));\n }\n\n css(this.handle ? $$(this.handle, this.$el) : this.$el.children, {touchAction: 'none', userSelect: 'none'});\n\n if (this.drag) {\n\n // clamp to viewport\n var ref = offset(window);\n var right = ref.right;\n var bottom = ref.bottom;\n offset(this.drag, {\n top: clamp(this.pos.y + this.origin.top, 0, bottom - this.drag.offsetHeight),\n left: clamp(this.pos.x + this.origin.left, 0, right - this.drag.offsetWidth)\n });\n\n trackScroll(this.pos);\n\n }\n\n }\n\n },\n\n methods: {\n\n init: function(e) {\n\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = toNodes(this.$el.children).filter(function (el) { return within(target, el); });\n var placeholder = ref[0];\n\n if (!placeholder\n || defaultPrevented\n || button > 0\n || isInput(target)\n || within(target, (\".\" + (this.clsNoDrag)))\n || this.handle && !within(target, this.handle)\n ) {\n return;\n }\n\n e.preventDefault();\n\n this.touched = [this];\n this.placeholder = placeholder;\n this.origin = assign({target: target, index: index(placeholder)}, this.pos);\n\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n on(window, 'scroll', this.scroll);\n\n if (!this.threshold) {\n this.start(e);\n }\n\n },\n\n start: function(e) {\n\n this.drag = append(this.$container, this.placeholder.outerHTML.replace(/^<li/i, '<div').replace(/li>$/i, 'div>'));\n\n css(this.drag, assign({\n boxSizing: 'border-box',\n width: this.placeholder.offsetWidth,\n height: this.placeholder.offsetHeight,\n overflow: 'hidden'\n }, css(this.placeholder, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n attr(this.drag, 'uk-no-boot', '');\n addClass(this.drag, this.clsDrag, this.clsCustom);\n\n height(this.drag.firstElementChild, height(this.placeholder.firstElementChild));\n\n var ref = offset(this.placeholder);\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {left: left - this.pos.x, top: top - this.pos.y});\n\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.$el.children, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n\n trigger(this.$el, 'start', [this, this.placeholder]);\n\n this.move(e);\n },\n\n move: function(e) {\n\n if (!this.drag) {\n\n if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n\n return;\n }\n\n this.$emit();\n\n var target = e.type === 'mousemove' ? e.target : document.elementFromPoint(this.pos.x - window.pageXOffset, this.pos.y - window.pageYOffset);\n\n var sortable = this.getSortable(target);\n var previous = this.getSortable(this.placeholder);\n var move = sortable !== previous;\n\n if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) {\n return;\n }\n\n target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function (element) { return within(target, element); })[0];\n\n if (move) {\n previous.remove(this.placeholder);\n } else if (!target) {\n return;\n }\n\n sortable.insert(this.placeholder, target);\n\n if (!includes(this.touched, sortable)) {\n this.touched.push(sortable);\n }\n\n },\n\n end: function(e) {\n\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n if (e.type === 'touchend') {\n e.target.click();\n }\n\n return;\n }\n\n untrackScroll();\n\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n\n remove(this.drag);\n this.drag = null;\n\n var classes = this.touched.map(function (sortable) { return ((sortable.clsPlaceholder) + \" \" + (sortable.clsItem)); }).join(' ');\n this.touched.forEach(function (sortable) { return removeClass(sortable.$el.children, classes); });\n\n removeClass(document.documentElement, this.clsDragState);\n\n },\n\n scroll: function() {\n var scroll = window.pageYOffset;\n if (scroll !== this.scrollY) {\n this.pos.y += scroll - this.scrollY;\n this.scrollY = scroll;\n this.$emit();\n }\n },\n\n insert: function(element, target) {\n var this$1 = this;\n\n\n addClass(this.$el.children, this.clsItem);\n\n var insert = function () {\n\n if (target) {\n\n if (!within(element, this$1.$el) || isPredecessor(element, target)) {\n before(target, element);\n } else {\n after(target, element);\n }\n\n } else {\n append(this$1.$el, element);\n }\n\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n\n },\n\n remove: function(element) {\n\n if (!within(element, this.$el)) {\n return;\n }\n\n css(this.handle ? $$(this.handle, element) : element, {touchAction: '', userSelect: ''});\n\n if (this.animation) {\n this.animate(function () { return remove(element); });\n } else {\n remove(element);\n }\n\n },\n\n getSortable: function(element) {\n return element && (this.$getComponent(element, 'sortable') || this.getSortable(element.parentNode));\n }\n\n }\n\n };\n\n function isPredecessor(element, target) {\n return element.parentNode === target.parentNode && index(element) > index(target);\n }\n\n var trackTimer;\n function trackScroll(ref) {\n var x = ref.x;\n var y = ref.y;\n\n\n clearTimeout(trackTimer);\n\n scrollParents(document.elementFromPoint(x - window.pageXOffset, y - window.pageYOffset)).some(function (scrollEl) {\n\n var scroll = scrollEl.scrollTop;\n var scrollHeight = scrollEl.scrollHeight;\n\n if (getScrollingElement() === scrollEl) {\n scrollEl = window;\n scrollHeight -= window.innerHeight;\n }\n\n var ref = offset(scrollEl);\n var top = ref.top;\n var bottom = ref.bottom;\n\n if (top < y && top + 30 > y) {\n scroll -= 5;\n } else if (bottom > y && bottom - 20 < y) {\n scroll += 5;\n }\n\n if (scroll > 0 && scroll < scrollHeight) {\n return trackTimer = setTimeout(function () {\n scrollTop(scrollEl, scroll);\n trackScroll({x: x, y: y});\n }, 10);\n }\n\n });\n\n }\n\n function untrackScroll() {\n clearTimeout(trackTimer);\n }\n\n var overflowRe = /auto|scroll/;\n\n function scrollParents(element) {\n var scrollEl = getScrollingElement();\n return parents$1(element, function (parent) { return parent === scrollEl || overflowRe.test(css(parent, 'overflow')); });\n }\n\n function parents$1(element, fn) {\n var parents = [];\n do {\n if (fn(element)) {\n parents.unshift(element);\n }\n } while (element && (element = element.parentElement));\n return parents;\n }\n\n function getScrollingElement() {\n return document.scrollingElement || document.documentElement;\n }\n\n var obj$1;\n\n var actives = [];\n\n var Tooltip = {\n\n mixins: [Container, Togglable, Position],\n\n args: 'title',\n\n props: {\n delay: Number,\n title: String\n },\n\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n\n beforeConnect: function() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, {title: '', 'aria-expanded': false});\n },\n\n disconnected: function() {\n this.hide();\n attr(this.$el, {title: this._hasTitle ? this.title : null, 'aria-expanded': null});\n },\n\n methods: {\n\n show: function() {\n var this$1 = this;\n\n\n if (this.isActive() || !this.title) {\n return;\n }\n\n actives.forEach(function (active) { return active.hide(); });\n actives.push(this);\n\n this._unbind = on(document, pointerUp, function (e) { return !within(e.target, this$1.$el) && this$1.hide(); });\n\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(function () {\n this$1._show();\n this$1.hideTimer = setInterval(function () {\n\n if (!isVisible(this$1.$el)) {\n this$1.hide();\n }\n\n }, 150);\n }, this.delay);\n },\n\n hide: function() {\n\n if (!this.isActive() || matches(this.$el, 'input:focus')) {\n return;\n }\n\n actives.splice(actives.indexOf(this), 1);\n\n clearTimeout(this.showTimer);\n clearInterval(this.hideTimer);\n attr(this.$el, 'aria-expanded', false);\n this.toggleElement(this.tooltip, false);\n this.tooltip && remove(this.tooltip);\n this.tooltip = false;\n this._unbind();\n\n },\n\n _show: function() {\n\n this.tooltip = append(this.container,\n (\"<div class=\\\"\" + (this.clsPos) + \"\\\" aria-expanded=\\\"true\\\" aria-hidden> <div class=\\\"\" + (this.clsPos) + \"-inner\\\">\" + (this.title) + \"</div> </div>\")\n );\n\n this.positionAt(this.tooltip, this.$el);\n\n this.origin = this.getAxis() === 'y'\n ? ((flipPosition(this.dir)) + \"-\" + (this.align))\n : ((this.align) + \"-\" + (flipPosition(this.dir)));\n\n this.toggleElement(this.tooltip, true);\n\n },\n\n isActive: function() {\n return includes(actives, this);\n }\n\n },\n\n events: ( obj$1 = {\n\n focus: 'show',\n blur: 'hide'\n\n }, obj$1[(pointerEnter + \" \" + pointerLeave)] = function (e) {\n if (isTouch(e)) {\n return;\n }\n e.type === pointerEnter\n ? this.show()\n : this.hide();\n }, obj$1[pointerDown] = function (e) {\n if (!isTouch(e)) {\n return;\n }\n this.isActive()\n ? this.hide()\n : this.show();\n }, obj$1 )\n\n };\n\n var Upload = {\n\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n\n events: {\n\n change: function(e) {\n\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n\n drop: function(e) {\n stop(e);\n\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n\n this.upload(transfer.files);\n },\n\n dragenter: function(e) {\n stop(e);\n },\n\n dragover: function(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n\n dragleave: function(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n\n },\n\n methods: {\n\n upload: function(files) {\n var this$1 = this;\n\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n\n if (this.maxSize && this.maxSize * 1000 < files[i].size) {\n this.fail(this.msgInvalidSize.replace('%s', this.maxSize));\n return;\n }\n\n if (this.allow && !match$1(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match$1(this.mime, files[i].type)) {\n this.fail(this.msgInvalidMime.replace('%s', this.mime));\n return;\n }\n\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n\n var chunks = chunk(files, this.concurrent);\n var upload = function (files) {\n\n var data = new FormData();\n\n files.forEach(function (file) { return data.append(this$1.name, file); });\n\n for (var key in this$1.params) {\n data.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function (env) {\n\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { return on(xhr, type.toLowerCase(), this$1[type]); }\n );\n\n this$1.beforeSend(env);\n\n }\n }).then(\n function (xhr) {\n\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n\n },\n function (e) { return this$1.error(e); }\n );\n\n };\n\n upload(chunks.shift());\n\n }\n\n }\n\n };\n\n function match$1(pattern, path) {\n return path.match(new RegExp((\"^\" + (pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.')) + \"$\"), 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n chunks.push(chunk);\n }\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n UIkit.component('countdown', Countdown);\n UIkit.component('filter', Filter);\n UIkit.component('lightbox', Lightbox);\n UIkit.component('lightboxPanel', lightboxPanel);\n UIkit.component('notification', Notification);\n UIkit.component('parallax', Parallax$1);\n UIkit.component('slider', Slider$1);\n UIkit.component('sliderParallax', SlideshowParallax);\n UIkit.component('slideshow', Slideshow$1);\n UIkit.component('slideshowParallax', SlideshowParallax);\n UIkit.component('sortable', Sortable);\n UIkit.component('tooltip', Tooltip);\n UIkit.component('upload', Upload);\n\n {\n boot(UIkit);\n }\n\n return UIkit;\n\n}));\n","<script>\nimport {\n last\n} from \"lodash/fp\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport ComponentSearch from \"./ComponentSearch.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport UIkit from \"uikit\";\nimport {\n getComponentInfo\n} from \"./pagesParsing/createProps\";\nimport { store } from \"../builderStore\";\n\nconst emptyProps = () => ({_component:\"\"})\n\nexport let props = emptyProps();\nexport let onValueChanged = () => {};\nexport let onComponentChosen = () => {};\nexport let onEdit = () => {};\nexport let disabled = false;\n\nconst CHOOSE_COMPONENT = \"choose_component\";\nconst CLEAR_COMPONENT = \"clear_component\";\n\nlet allComponents;\nlet modalElement;\nlet modalAction;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n});\n\n$: componentSelected = props._component.length > 0;\n$: shortName = last(props._component.split(\"/\"));\n\nconst chooseComponent = () => {\n modalAction = CHOOSE_COMPONENT;\n showDialog();\n}\n\nconst clearComponent = () => {\n modalAction = CLEAR_COMPONENT;\n showDialog();\n}\n\nconst componentChosen = (component) => {\n const componentInfo = getComponentInfo(allComponents, component.name);\n props = componentInfo.fullProps;\n onValueChanged(props);\n onComponentChosen();\n hideDialog();\n}\n\nconst hideDialog = () => {\n UIkit.modal(modalElement).hide();\n}\n\nconst showDialog = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst confirmClearComponent = () => {\n props = emptyProps();\n onValueChanged(emptyProps());\n hideDialog();\n}\n\n</script>\n\n\n<div class=\"root uk-form-controls\">\n <div class:selectedname={componentSelected}>\n {componentSelected ? shortName : \"(none)\"}\n </div>\n <div>\n {#if !disabled && componentSelected}\n <IconButton icon=\"edit\" \n on:click={onEdit}/>\n\n <IconButton icon=\"trash\" \n on:click={clearComponent} />\n {:else if !disabled && !componentSelected}\n <IconButton icon=\"plus\" \n on:click={chooseComponent} />\n {/if}\n \n </div>\n</div>\n\n<div bind:this={modalElement} uk-modal>\n <div class=\"uk-modal-dialog\">\n\n {#if modalAction === CHOOSE_COMPONENT}\n <div class=\"uk-modal-body\">\n <ComponentSearch onComponentChosen={componentChosen} />\n </div>\n {:else if modalAction === CLEAR_COMPONENT}\n <div class=\"uk-modal-body\">\n Clear this component ?\n </div>\n <div class=\"uk-modal-footer\">\n <ButtonGroup>\n <Button grouped \n on:click={hideDialog} \n color=\"secondary\" >Cancel</Button>\n <Button grouped \n on:click={confirmClearComponent}>OK</Button>\n </ButtonGroup>\n </div>\n {/if}\n\n </div>\n\n</div>\n\n<style>\n\n.root {\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n}\n\n.root > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary50);\n}\n\n.root > div:nth-child(2) {\n grid-column-start: actions;\n}\n\n.selectedname {\n font-weight: bold;\n color: var(--secondary);\n}\n\n</style>","<script>\nimport IconButton from \"../common/IconButton.svelte\";\nimport {\n createArrayElementProps\n} from \"./pagesParsing/createProps\";\nimport PropControl from \"./PropControl.svelte\";\nimport {\n some,\n cloneDeep,\n} from \"lodash/fp\";\nimport { validateProps } from \"./pagesParsing/validateProps\";\n\nexport let parentProps;\nexport let propDef;\nexport let onValueChanged;\nexport let onValidate = () => {};\nexport let onEditComponentProp = () => {};\n\nlet value = [];\nlet elementDefinitionArray;\nlet elementErrors = {};\n\n$: {\n const elArray = [];\n for(let elProp in propDef.elementDefinition) {\n if(elProp === \"_component\") continue;\n elArray.push({\n ...propDef.elementDefinition[elProp],\n ____name: elProp\n });\n }\n elementDefinitionArray = elArray;\n value = parentProps[propDef.____name];\n}\n\nconst addElement = () => {\n const newElement = createArrayElementProps(\n propDef.____name, \n propDef.elementDefinition).props;\n\n value = [...value, newElement];\n onValueChanged(value);\n}\n\nconst validate = (index, elementProps) => {\n elementErrors[index] = validateProps(\n propDef.elementDefinition, elementProps, [], true);\n onValidate(elementErrors[index]);\n return elementErrors[index].length === 0;\n}\n\nconst setProp = (index) => (name, propValue) => {\n const newValue = cloneDeep(value);\n const newProps = cloneDeep(newValue[index]);\n newProps[name] = propValue;\n newValue[index] = newProps;\n value = newValue;\n\n if(validate(index, newProps))\n onValueChanged(newValue);\n \n}\n\nlet fieldHasError = index => propName => \n some(e => e.propName === propName)(elementErrors[index]);\n\nconst onEditComponent = (index, propName) => () => {\n onEditComponentProp(index, propName);\n}\n\n</script>\n\n<div class=\"root\">\n\n\n <div class=\"item-container\">\n {#each value as item, index}\n \n <div class=\"item-inner-container\">\n {#each elementDefinitionArray as propDef}\n <PropControl setProp={setProp(index)}\n fieldHasError={fieldHasError(index)}\n {propDef}\n props={item}\n {index}\n onEditComponent={onEditComponent(index, propDef.____name)}\n disabled={false} />\n {/each}\n </div>\n \n {/each}\n\n <div class=\"addelement-container\"\n on:click={addElement}>\n <IconButton icon=\"plus\" \n size=\"12\"/>\n </div>\n </div>\n</div>\n\n\n<style>\n\n.addelement-container {\n cursor: pointer;\n padding: 3px 0px;\n text-align: center;\n}\n\n.addelement-container:hover {\n background-color: var(--primary25);\n}\n\n\n.item-container {\n padding-left: 3px;\n background: var(--secondary10);\n}\n\n</style>","<script>\nimport {\n isString\n} from \"lodash/fp\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport {\n isBinding, getBinding, setBinding\n} from \"../common/binding\";\n\nexport let value=\"\";\nexport let onChanged= () => {};\nexport let type=\"\";\nexport let options=[];\n\nlet isBound=false;\nlet bindingPath=\"\";\nlet bindingFallbackValue=\"\";\nlet bindingSource=\"store\";\nlet isExpanded = false;\nlet forceIsBound = false;\nlet canOnlyBind = false;\n\n$: {\n canOnlyBind = type === \"state\";\n if(!forceIsBound && canOnlyBind)\n forceIsBound = true;\n\n isBound= forceIsBound || isBinding(value);\n\n if(isBound) {\n const binding = getBinding(value);\n bindingPath= binding.path;\n bindingFallbackValue= binding.fallback;\n bindingSource = binding.source || \"store\";\n } else {\n bindingPath=\"\";\n bindingFallbackValue=\"\";\n bindingSource=\"store\";\n }\n}\n\nconst clearBinding = () => {\n forceIsBound = false;\n onChanged(\"\");\n}\n\nconst bind = (path, fallback, source) => {\n if(!path) {\n clearBinding(\"\");\n return;\n }\n const binding = setBinding({path, fallback, source});\n onChanged(binding);\n}\n\nconst setBindingPath = ev => {\n forceIsBound = canOnlyBind;\n bind(ev.target.value, bindingFallbackValue, bindingSource)\n}\n\nconst setBindingFallback = ev => {\n bind(bindingPath, ev.target.value, bindingSource);\n}\n\nconst setBindingSource = ev => {\n bind(bindingPath, bindingFallbackValue, ev.target.value);\n}\n\nconst makeBinding = () => {\n forceIsBound=true;\n isExpanded=true;\n}\n\n</script>\n\n{#if isBound}\n<div>\n <div class=\"bound-header\">\n <div>{isExpanded ? \"\" : bindingPath}</div>\n <IconButton icon={isExpanded ? \"chevron-up\" : \"chevron-down\"} \n size=\"12\"\n on:click={() => isExpanded=!isExpanded}/>\n {#if !canOnlyBind}\n <IconButton icon=\"trash\" \n size=\"12\"\n on:click={clearBinding}/>\n {/if}\n </div>\n {#if isExpanded}\n <div>\n <div class=\"binding-prop-label\">Binding Path</div>\n <input class=\"uk-input uk-form-small\"\n value={bindingPath}\n on:change={setBindingPath} >\n <div class=\"binding-prop-label\">Fallback Value</div>\n <input class=\"uk-input uk-form-small\"\n value={bindingFallbackValue}\n on:change={setBindingFallback} >\n <div class=\"binding-prop-label\">Binding Source</div>\n <select class=\"uk-select uk-form-small\" \n value={bindingSource} \n on:change={setBindingSource}>\n\n <option>store</option>\n <option>context</option>\n\n </select>\n </div>\n {/if}\n\n</div>\n{:else}\n<div class=\"unbound-container\">\n\n {#if type === \"bool\"}\n\n <div>\n <IconButton icon={value == true ? \"check-square\" : \"square\"}\n size=\"19\"\n on:click={() => value = !value}/>\n </div>\n\n {:else if type === \"options\"}\n\n <select class=\"uk-select uk-form-small\" \n value={value} \n on:change={ev => onChanged(ev.target.checked)}>\n {#each options as option}\n <option value={option}>{option}</option>\n {/each}\n </select>\n\n {:else}\n\n <input class=\"uk-input uk-form-small\"\n on:change={ev => onChanged(ev.target.value)}\n bind:value={value}\n style=\"flex: 1 0 auto;\" > \n\n\n {/if}\n <IconButton icon=\"link\" \n size=\"12\"\n on:click={makeBinding} />\n</div>\n{/if}\n\n\n<style>\n\n.unbound-container {\n display:flex;\n margin: .5rem 0rem .5rem 0rem;\n}\n\n.unbound-container > *:nth-child(1) {\n width:auto;\n flex: 1 0 auto;\n font-size: 0.8rem;\n color: var(--secondary100);\n border-radius: .2rem;\n}\n\n.bound-header {\n display: flex;\n}\n\n.bound-header > div:nth-child(1) {\n flex: 1 0 auto;\n width: 30px;\n color: var(--secondary50);\n padding-left: 5px;\n}\n\n.binding-prop-label {\n color: var(--secondary50);\n}\n\n\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport StateBindingControl from \"./StateBindingControl.svelte\";\r\nimport {\r\n find, map, keys, reduce\r\n} from \"lodash/fp\";\r\nimport { pipe } from \"../common/core\";\r\nimport { EVENT_TYPE_MEMBER_NAME, allHandlers } from \"../common/eventHandlers\";\r\n\r\nexport let event;\r\nexport let onChanged;\r\nexport let onRemoved;\r\n\r\nconst events = allHandlers();\r\n\r\nlet eventType;\r\nlet parameters = [];\r\n\r\n$: {\r\n if(event) {\r\n eventType = event[EVENT_TYPE_MEMBER_NAME];\r\n parameters = pipe(event.parameters, [\r\n keys,\r\n map(k => ({name:k, value:event.parameters[k]}))\r\n ]);\r\n } else {\r\n eventType = \"\";\r\n parameters = [];\r\n }\r\n}\r\n\r\nconst eventChanged = (type, parameters) => {\r\n const paramsAsObject = reduce(\r\n (obj, p) => {\r\n obj[p.name] = p.value;\r\n return obj;\r\n }\r\n , {}\r\n )(parameters)\r\n\r\n const ev = {};\r\n ev[EVENT_TYPE_MEMBER_NAME]=type;\r\n ev.parameters = paramsAsObject;\r\n\r\n onChanged(ev);\r\n}\r\n\r\nconst eventTypeChanged = (ev) => {\r\n const eType = find(e => e.name === ev.target.value)(events);\r\n const emptyParameters = map(p => ({name:p, value:\"\"}))(eType.parameters);\r\n eventChanged(eType.name, emptyParameters);\r\n}\r\n\r\nconst onParameterChanged = index => val => {\r\n const newparameters = [...parameters];\r\n newparameters[index].value = val;\r\n eventChanged(eventType, newparameters);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"type-selector-container\">\r\n <select class=\"type-selector uk-select uk-form-small \" value={eventType} on:change={eventTypeChanged}>\r\n {#each events as ev}\r\n <option value={ev.name}>{ev.name}</option>\r\n {/each}\r\n </select>\r\n\r\n <IconButton icon=\"trash\" \r\n size=\"12\" \r\n on:click={onRemoved}/>\r\n\r\n</div>\r\n\r\n{#if parameters}\r\n{#each parameters as p, index}\r\n\r\n<div>\r\n {p.name} \r\n</div>\r\n<StateBindingControl onChanged={onParameterChanged(index)}\r\n value={p.value} />\r\n\r\n{/each}\r\n{/if}\r\n\r\n<style>\r\n\r\n.type-selector-container {\r\n display: flex;\r\n}\r\n\r\n.type-selector {\r\n border-color: var(--primary50);\r\n border-radius: 2px;\r\n width: 50px;\r\n flex: 1 0 auto;\r\n}\r\n\r\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport EventSelector from \"./EventSelector.svelte\";\r\nimport {\r\n filter\r\n} from \"lodash/fp\";\r\nimport {EVENT_TYPE_MEMBER_NAME} from \"../common/eventHandlers\";\r\nexport let parentProps;\r\nexport let propDef;\r\nexport let onValueChanged;\r\nexport let onValidate = () => {};\r\n\r\nlet events = [];\r\nlet elementErrors = {};\r\n\r\n$: {\r\n events = parentProps[propDef.____name];\r\n}\r\n\r\nconst addHandler = () => {\r\n const newHandler = {parameters:{}};\r\n newHandler[EVENT_TYPE_MEMBER_NAME] = \"\";\r\n events = [...events, newHandler];\r\n onValueChanged(events);\r\n}\r\n\r\nconst onEventHandlerChanged = (oldEvent) => (newEvent) => {\r\n const indexOfOldEvent = events.indexOf(oldEvent);\r\n const newEvents = [...events];\r\n newEvents.splice(\r\n events.indexOf(oldEvent),\r\n 1,\r\n newEvent);\r\n events = newEvents;\r\n onValueChanged(events);\r\n}\r\n\r\nconst removeHandler = (index) => () => {\r\n events = filter(e => e !== events[index])(events);\r\n onValueChanged(events);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"control-container\">\r\n {#each events as ev, index}\r\n\r\n <div class=\"handler-container\">\r\n <EventSelector onChanged={onEventHandlerChanged(ev)}\r\n onRemoved={removeHandler(index)}\r\n event={ev} />\r\n\r\n </div>\r\n\r\n <div class=\"separator\"></div>\r\n {/each}\r\n\r\n <div class=\"addelement-container\"\r\n on:click={addHandler}>\r\n <IconButton icon=\"plus\" \r\n size=\"12\"/>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.addelement-container {\r\n cursor: pointer;\r\n padding: 3px 0px;\r\n text-align: center;\r\n}\r\n\r\n\r\n\r\n.addelement-container:hover {\r\n background-color: var(--primary25);\r\n margin-top: 5px;\r\n}\r\n\r\n\r\n.control-container {\r\n padding-left: 3px;\r\n background: var(--secondary10);\r\n}\r\n\r\n.separator {\r\n width: 60%;\r\n margin: 10px auto;\r\n border-style:solid;\r\n border-width: 1px 0 0 0;\r\n border-color: var(--primary25);\r\n}\r\n\r\n</style>\r\n","<script>\n\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\nimport PropArraySelector from \"./PropArraySelector.svelte\";\nimport EventListSelector from \"./EventListSelector.svelte\";\nimport StateBindingControl from \"./StateBindingControl.svelte\";\n\nexport let errors = [];\nexport let setProp = () => {};\nexport let fieldHasError =() => {};\nexport let propDef = {};\nexport let props = {};\nexport let disabled;\nexport let index;\nexport let onEditComponent = () => {};\n\n$: isOdd = (index % 2 !== 0);\n\nconst setComponentProp = (props) => {\n setProp(propDef.____name, props);\n}\n\n</script>\n\n\n<div class=\"root\" >\n\n {#if propDef.type === \"component\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <ComponentPropSelector label={propDef.____name}\n props={props[propDef.____name]}\n {disabled}\n onEdit={onEditComponent}\n onComponentChosen={onEditComponent}\n onValueChanged={setComponentProp}/>\n\n {:else if propDef.type === \"array\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <PropArraySelector parentProps={props}\n {propDef}\n onValueChanged={setComponentProp}\n onEditComponentProp={onEditComponent} />\n\n {:else if propDef.type === \"event\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <EventListSelector parentProps={props}\n {propDef}\n onValueChanged={setComponentProp} />\n\n {:else}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <StateBindingControl value={props[propDef.____name]}\n type={propDef.type}\n options={propDef.options}\n onChanged={v => setProp(propDef.____name, v)}/>\n\n {/if} \n\n</div>\n\n<style>\n\n.root {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.prop-label {\n font-size: 0.8rem;\n color: var(--secondary100);\n font-weight: bold;\n}\n\n</style>","<script>\n\nimport {\n keys,\n map,\n some,\n includes,\n cloneDeep,\n isEqual,\n sortBy,\n filter,\n difference\n} from \"lodash/fp\";\nimport { pipe } from \"../common/core\";\nimport { \n getComponentInfo ,\n getInstanceProps\n} from \"./pagesParsing/createProps\";\nimport { getExactComponent } from \"./pagesParsing/searchComponents\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport { validateProps } from \"./pagesParsing/validateProps\";\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\nimport PropControl from \"./PropControl.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\n\nexport let shouldValidate = true;\nexport let onValidate = () => {};\nexport let componentInfo;\nexport let instanceProps = null;\nexport let onPropsChanged = () => {};\nexport let onEditComponentProp = () => {};\n\nlet errors = [];\nlet props = {};\nlet propsDefinitions = [];\nlet inheritedPropsDefinitions = [];\nlet inheritedExpanded = false;\nlet isInstance = false;\n\nconst isPropInherited = name => \n includes(name)(componentInfo.inheritedProps);\n\n$: {\n if(componentInfo)\n {\n isInstance = !!instanceProps;\n props = isInstance \n ? getInstanceProps(componentInfo, instanceProps)\n : cloneDeep(componentInfo.fullProps);\n\n propsDefinitions = pipe(componentInfo.propsDefinition, [\n keys,\n filter(k => !isPropInherited(k)),\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\n sortBy(\"____name\")\n ]);\n\n inheritedPropsDefinitions = pipe(componentInfo.propsDefinition, [\n keys,\n filter(k => isPropInherited(k)),\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\n sortBy(\"____name\")\n ]);\n }\n}\n\n\nlet setProp = (name, value) => {\n const newProps = cloneDeep(props);\n\n let finalProps = isInstance ? newProps : cloneDeep(componentInfo.component.props);\n\n if(!isInstance) {\n const nowSet = [];\n for(let p of componentInfo.unsetProps) {\n if(!isEqual(newProps[p])(componentInfo.rootDefaultProps[p])) {\n finalProps[p] = newProps[p];\n nowSet.push(p);\n }\n }\n componentInfo.unsetProps = difference(nowSet)(componentInfo.unsetProps);\n }\n\n newProps[name] = value;\n finalProps[name] = value;\n props = newProps;\n if(validate(finalProps))\n onPropsChanged(finalProps);\n \n}\n \nconst validate = (finalProps) => {\n errors = validateProps(componentInfo.propsDefinition, finalProps, [], false);\n onValidate(errors);\n return errors.length === 0;\n}\n\nconst fieldHasError = (propName) => \n some(e => e.propName === propName)(errors);\n\nconst onEditComponent = (propName) => (arrayIndex, arrayPropName) => {\n onEditComponentProp(propName, arrayIndex, arrayPropName);\n}\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-form-stacked\">\n {#each propsDefinitions as propDef, index}\n \n <PropControl {setProp}\n {fieldHasError}\n {propDef}\n {props}\n {index}\n onEditComponent={onEditComponent(propDef.____name)}\n disabled={false} />\n \n {/each}\n\n {#if inheritedPropsDefinitions.length > 0}\n <div class=\"inherited-title padding\">\n <div>Inherited</div>\n <div>\n <IconButton icon={inheritedExpanded ? \"chevron-down\" : \"chevron-right\"}\n on:click={() => inheritedExpanded = !inheritedExpanded}/>\n </div>\n </div>\n {/if}\n\n {#if inheritedExpanded}\n {#each inheritedPropsDefinitions as propDef, index}\n \n <PropControl {setProp}\n {fieldHasError}\n {propDef}\n {props}\n {index}\n disabled={true} />\n \n {/each}\n {/if}\n </form>\n\n\n \n\n</div>\n\n\n<style>\n\n.root {\n font-size:10pt;\n}\n\n.padding {\n padding: 0 10px;\n}\n\n.inherited-title {\n padding: 1rem 1rem 1rem 1rem;\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary100);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.inherited-title > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary50);\n}\n\n.inherited-title > div:nth-child(2) {\n grid-column-start: actions;\n color: var(--secondary100);\n}\n\n</style>","export { identity as linear } from '../internal';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, cubicOut } from '../easing';\nimport { is_function, assign } from '../internal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __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}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 }) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400 }) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 }) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut }) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => `overflow: hidden;` +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 }) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut }) {\n const len = node.getTotalLength();\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","<script>\n\nimport PropsView from \"./PropsView.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport { getComponentInfo } from \"./pagesParsing/createProps\";\nimport { store } from \"../builderStore\";\nimport { \n cloneDeep,\n isUndefined\n} from \"lodash/fp\";\nimport { fade, slide } from 'svelte/transition';\n\nexport let title = \"\";\nexport let onGoBack = () => {};\nexport let instanceProps = {};\nexport let onPropsChanged = () => {};\n\n\nlet editingSubComponentName;\nlet editingSubComponentProps;\nlet editingSubComponentArrayIndex;\nlet editingSubComponentArrayPropName;\nlet editingSubComponentTitle;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\n$: componentInfo = getComponentInfo(\n allComponents, instanceProps._component);\n\nconst onSubComponentGoBack = () => {\n editingSubComponentName = null;\n editingSubComponentProps = null;\n}\n\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\n editingSubComponentName = propName;\n editingSubComponentTitle = isUndefined(arrayIndex)\n ? propName\n : `${propName}[${arrayIndex}].${arrayPropName}`;\n editingSubComponentProps = isUndefined(arrayIndex)\n ? instanceProps[propName]\n : instanceProps[propName][arrayIndex][arrayPropName];\n editingSubComponentArrayIndex = arrayIndex;\n editingSubComponentArrayPropName = arrayPropName;\n};\n\n\nconst onSubComponentPropsChanged = (subProps) => {\n const newProps = cloneDeep(instanceProps);\n if(isUndefined(editingSubComponentArrayIndex)) {\n newProps[editingSubComponentName] = subProps;\n } else {\n newProps[editingSubComponentName]\n [editingSubComponentArrayIndex]\n [editingSubComponentArrayPropName] = subProps;\n }\n \n instanceProps = newProps;\n onPropsChanged(newProps);\n}\n\n\nconst propsChanged = newProps => {\n instanceProps = newProps;\n onPropsChanged(newProps);\n}\n\n</script>\n\n<div>\n\n <div class=\"title\">\n <IconButton icon=\"chevron-left\"\n on:click={onGoBack}/>\n <span>{title}</span>\n </div>\n\n {#if editingSubComponentName}\n <div in:slide={{delay: 250, duration: 300}}\n out:fade>\n <svelte:self onPropsChanged={onSubComponentPropsChanged}\n onGoBack={onSubComponentGoBack}\n instanceProps={editingSubComponentProps}\n title={editingSubComponentTitle} />\n </div>\n {:else}\n <PropsView {instanceProps}\n {componentInfo}\n onPropsChanged={propsChanged}\n {onEditComponentProp} />\n {/if}\n \n\n \n\n</div>\n\n<style>\n.title {\n padding:3px;\n background-color: white;\n color: var(--secondary100);\n border-style:solid;\n border-width: 1px 0 0 0;\n border-color: var(--lightslate);\n}\n\n.title > span {\n margin-left: 10px;\n }\n</style>","<script>\n\nimport PropsView from \"./PropsView.svelte\";\nimport { store } from \"../builderStore\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport UIkit from \"uikit\";\nimport { pipe } from \"../common/core\";\nimport {\n getComponentInfo\n} from \"./pagesParsing/createProps\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport ComponentInstanceEditor from \"./ComponentInstanceEditor.svelte\";\n\nimport { \n cloneDeep, \n join,\n split,\n map,\n keys,\n isUndefined,\n last\n} from \"lodash/fp\";\nimport { assign } from \"lodash\";\n\nlet component;\nlet name = \"\";\nlet description = \"\";\nlet tagsString = \"\";\nlet nameInvalid = \"\";\nlet componentDetailsExpanded = false;\nlet componentInfo;\nlet modalElement\nlet propsValidationErrors = [];\nlet editingComponentInstance;\nlet editingComponentInstancePropName=\"\";\nlet editingComponentArrayIndex;\nlet editingComponentArrayPropName;\nlet editingComponentInstanceTitle;\n\nlet allComponents;\n\n$: shortName = last(name.split(\"/\"));\n\nstore.subscribe(s => {\n component = s.currentFrontEndItem;\n if(!component) return;\n name = component.name;\n description = component.description;\n tagsString = join(\", \")(component.tags);\n componentInfo = s.currentComponentInfo;\n componentDetailsExpanded = s.currentComponentIsNew;\n allComponents = s.allComponents;\n});\n\nconst save = () => {\n\n if(!validate()) return;\n\n component.name = name;\n component.description = description;\n component.tags = pipe(tagsString, [\n split(\",\"),\n map(s => s.trim())\n ]);\n\n store.saveDerivedComponent(component);\n}\n\nconst deleteComponent = () => {\n showDialog();\n}\n\nconst confirmDeleteComponent = () => {\n store.deleteDerivedComponent(component.name);\n hideDialog();\n}\n\nconst onPropsValidate = result => {\n propsValidationErrors = result;\n}\n\nconst updateComponent = doChange => {\n const newComponent = cloneDeep(component);\n doChange(newComponent);\n component = newComponent;\n componentInfo = getComponentInfo(allComponents, newComponent);\n}\n\nconst onPropsChanged = newProps => {\n updateComponent(newComponent => \n assign(newComponent.props, newProps));\n \n}\n\nconst validate = () => {\n const fieldInvalid = (field, err) => \n errors[field] = err;\n const fieldValid = field => \n errors[field] && delete errors[field];\n\n if(!name) nameInvalid = \"component name i not supplied\";\n else nameInvalid = \"\";\n\n return (!nameInvalid && propsValidationErrors.length === 0);\n}\n\nconst hideDialog = () => {\n UIkit.modal(modalElement).hide();\n}\n\nconst showDialog = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\n\n editingComponentInstance = isUndefined(arrayIndex) \n ? component.props[propName]\n : component.props[propName][arrayIndex][arrayPropName];\n editingComponentInstancePropName = propName;\n editingComponentInstanceTitle = isUndefined(arrayIndex)\n ? propName\n : `${propName}[${arrayIndex}].${arrayPropName}`;\n \n editingComponentArrayIndex = arrayIndex;\n editingComponentArrayPropName = arrayPropName;\n}\n\nconst componentInstanceCancelEdit = () => {\n editingComponentInstance = null;\n editingComponentInstancePropName = \"\";\n}\n\nconst componentInstancePropsChanged = (instanceProps) => {\n updateComponent(newComponent => {\n if(isUndefined(editingComponentArrayIndex)) {\n newComponent.props[editingComponentInstancePropName] = instanceProps;\n } else {\n newComponent.props[editingComponentInstancePropName]\n [editingComponentArrayIndex]\n [editingComponentArrayPropName] = instanceProps;\n }\n });\n}\n\n</script>\n\n<div class=\"root\">\n\n <div class=\"title\">\n <div>{shortName}</div>\n <div>\n <IconButton icon=\"save\" \n on:click={save} \n color=\"var(--secondary100)\"\n hoverColor=\"var(--primary100)\"/>\n <IconButton icon=\"trash\" \n on:click={deleteComponent} \n color=\"var(--secondary100)\"\n hoverColor=\"var(--primary100)\"/>\n </div>\n </div>\n\n {#if editingComponentInstance}\n <ComponentInstanceEditor onGoBack={componentInstanceCancelEdit}\n title={editingComponentInstanceTitle}\n instanceProps={editingComponentInstance}\n onPropsChanged={componentInstancePropsChanged}/>\n {:else}\n <div class=\"component-props-container\">\n\n <div class=\"section-header padding\" on:click={() => componentDetailsExpanded = !componentDetailsExpanded}>\n <span style=\"margin-right: 7px\">Component Details</span>\n <IconButton icon={componentDetailsExpanded ? \"chevron-down\" : \"chevron-right\"}/>\n </div>\n\n {#if componentDetailsExpanded}\n <div class=\"padding\">\n <div class=\"info-text\">\n <Textbox label=\"Name\" \n infoText=\"use forward slash to store in subfolders\"\n bind:text={name}\n disabled={!$store.currentComponentIsNew}\n hasError={!!nameInvalid}/>\n <Textbox label=\"Description\"\n bind:text={description}/>\n <Textbox label=\"Tags\" \n infoText=\"comma separated\"\n bind:text={tagsString}/>\n </div> \n </div>\n {/if}\n\n <div class=\"section-header padding\">\n <span>Properties</span>\n </div>\n\n \n <PropsView onValidate={onPropsValidate}\n {componentInfo}\n {onPropsChanged}\n {onEditComponentProp}/>\n \n\n </div>\n {/if}\n\n</div>\n\n\n<div bind:this={modalElement} uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header\">\n Delete {component.name} ? \n </div>\n\n <div class=\"uk-modal-body\">\n Are you sure you want to delete this component ?\n </div>\n\n <div class=\"uk-modal-footer\">\n <ButtonGroup>\n <Button grouped \n on:click={confirmDeleteComponent}>\n OK\n </Button>\n <Button grouped \n on:click={hideDialog} \n color=\"secondary\" >\n Cancel\n </Button>\n </ButtonGroup>\n </div>\n\n </div>\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.padding {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.info-text {\n color: var(--secondary100);\n font-size: .8rem !important;\n font-weight: bold;\n}\n\n.title {\n padding: 2rem 1rem 1rem 1rem;\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary100);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.title > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary100);\n}\n\n.title > div:nth-child(2) {\n grid-column-start: actions;\n}\n\n.section-header {\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary50);\n font-size: .9rem;\n font-weight: bold;\n vertical-align: middle;\n}\n\n.component-props-container {\n flex: 1 1 auto;\n overflow-y: auto;\n}\n</style>","<script>\nimport UIkit from \"uikit\";\n\nexport let isOpen = false;\nexport let onClosed = () => {};\nexport let id = \"\";\n\nlet ukModal;\nlet listenerAdded = false;\n\n$: if(ukModal && !listenerAdded) {\n listenerAdded = true;\n ukModal.addEventListener(\"hide\", onClosed);\n}\n\n$: {\n if(ukModal) {\n if(isOpen) {\n UIkit.modal(ukModal).show();\n } else {\n UIkit.modal(ukModal).hide();\n }\n }\n}\n\n</script>\n\n<div bind:this={ukModal} uk-modal {id}>\n <div class=\"uk-modal-dialog uk-modal-body\" uk-overflow-auto>\n <slot />\n </div>\n</div>\n\n\n<style>\n\n.uk-modal-dialog {\n border-radius: .3rem;\n}\n\n</style>","<script>\n\nimport ComponentSearch from \"./ComponentSearch.svelte\";\nimport { store } from \"../builderStore\";\nimport PropsView from \"./PropsView.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport { pipe } from \"../common/core\";\nimport UIkit from \"uikit\";\nimport {\n getNewComponentInfo\n} from \"./pagesParsing/createProps\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\n\nimport { \n cloneDeep, \n join,\n split,\n map,\n keys,\n isUndefined\n} from \"lodash/fp\";\nimport { assign } from \"lodash\";\n\n\n\nlet modalElement;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\nexport const close = () => {\n UIkit.modal(modalElement).hide();\n}\n\nexport const show = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst onComponentChosen = (c) => {\n store.createDerivedComponent(c.name);\n close();\n}\n\n</script>\n\n<div bind:this={modalElement} id=\"new-component-modal\" uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header\">\n <h1>New Component</h1>\n </div>\n\n <div class=\"uk-modal-body\">\n <ComponentSearch onComponentChosen={onComponentChosen} />\n </div>\n </div>\n</div>\n\n<style>\nh1 {\n font-size:1.2em;\n}\n\n</style>","import {\n split,\n last\n} from \"lodash/fp\";\n\nimport { pipe } from \"../../common/core\";\n\nexport const splitName = fullname => {\n const componentName = pipe(fullname, [\n split(\"/\"),\n last\n ]);\n\n const libName =fullname.substring(\n 0, fullname.length - componentName.length - 1);\n\n return {libName, componentName}; \n}","<script>\nimport { store } from \"../builderStore\";\nimport { makeLibraryUrl } from \"../builderStore/loadComponentLibraries\";\nimport {\n last, split, map, join\n} from \"lodash/fp\";\nimport { pipe } from \"../common/core\";\nimport { splitName } from \"./pagesParsing/splitRootComponentName\"\nimport { afterUpdate } from 'svelte';\nimport { getRootComponent } from \"./pagesParsing/getRootComponent\";\nimport { buildPropsHierarchy } from \"./pagesParsing/buildPropsHierarchy\";\n\n\nlet component;\nlet stylesheetLinks = \"\";\nlet rootComponentName = \"\";\nlet libraries;\nlet allComponents;\nlet appDefinition = {};\n\nstore.subscribe(s => {\n const {componentName, libName} = splitName(\n s.currentComponentInfo.rootComponent.name);\n\n rootComponentName = componentName;\n component = s.libraries[libName][componentName];\n stylesheetLinks = pipe(s.pages.stylesheets, [\n map(s => `<link rel=\"stylesheet\" href=\"${s}\"/>`),\n join(\"\\n\")\n ]);\n appDefinition = {\n componentLibraries: s.loadLibraryUrls(),\n props: buildPropsHierarchy(s.allComponents, s.currentFrontEndItem)\n };\n libraries = s.libraries;\n allComponents = s.allComponents;\n});\n\n\n\n</script>\n\n<div class=\"component-preview\" >\n <div class=\"component-container\">\n <iframe style=\"height: 100%; width: 100%\"\n title=\"componentPreview\"\n srcdoc={\n`<html>\n \n<head>\n ${stylesheetLinks}\n <script>\n window[\"##BUDIBASE_APPDEFINITION##\"] = ${JSON.stringify(appDefinition)};\n import('./budibase-client.esm.mjs')\n .then(module => {\n module.loadBudibase();\n }) \n </script>\n</head>\n<body>\n</body>\n</html>`}>\n </iframe>\n </div>\n</div>\n\n<style>\n.component-preview {\n display: grid;\n grid-template-rows: [top] 1fr [middle] auto [bottom] 1fr;\n grid-template-columns: [left] 1fr [middle] auto [right] 1fr;\n grid-column-start: preview;\n height:100%;\n}\n\n.component-container {\n grid-row-start: middle;\n grid-column-start: middle;\n}\n\n</style>","import { splitName } from \"./splitRootComponentName\";\nimport {\n find,\n filter\n} from \"lodash/fp\";\nimport { isRootComponent } from \"./searchComponents\";\n\nexport const libraryDependencies = (allComponents, lib) => {\n\n const componentDependsOnLibrary = comp => {\n if(isRootComponent(comp)) {\n const {libName} = splitName(component.name);\n return (libName === lib);\n }\n return componentDependsOnLibrary(\n find(c => c.name === comp.inherits)(allComponents)\n );\n }\n\n return filter(c => !isRootComponent(c) \n && componentDependsOnLibrary(c))(\n allComponents\n );\n}","<script>\n\nimport { store } from \"../builderStore\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport { libraryDependencies } from \"./pagesParsing/findDependencies\";\nimport UIkit from \"uikit\";\n\nlet addNewLib = \"\";\nlet addNewStylesheet = \"\";\nlet addComponentError = \"\";\nlet modalElement;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\nconst removeLibrary = lib => {\n const dependencies = libraryDependencies(allComponents, lib);\n if(dependencies.length > 0) return;\n store.removeComponentLibrary(lib);\n}\n\nconst addLib = () => {\n store.addComponentLibrary(addNewLib)\n .then(() => {\n addNewLib = \"\";\n }); \n}\n\nconst removeStylesheet = stylesheet => {\n store.removeStylesheet(stylesheet);\n}\n\nconst addStylesheet = () => {\n if(addNewStylesheet)\n store.addStylesheet(addNewStylesheet);\n}\n\nexport const close = () => {\n UIkit.modal(modalElement).hide();\n}\n\nexport const show = () => {\n UIkit.modal(modalElement).show();\n}\n\n</script>\n\n<div bind:this={modalElement} id=\"new-component-modal\" uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header header\">\n <div>Settings</div>\n <div>\n <IconButton icon=\"x\"\n on:click={close}/>\n </div>\n </div>\n\n <div class=\"uk-modal-body uk-form-horizontal\">\n\n <div class=\"section-container\">\n <p>Component Libraries\n <span>\n <input bind:value={addNewLib} /> \n <Button color=\"primary-outline\"\n on:click={addLib}>Add</Button>\n </span>\n </p>\n {#each $store.pages.componentLibraries as lib}\n <div>\n <span class=\"row-text\">{lib}</span>\n <IconButton icon=\"x\" \n on:click={() => removeLibrary(lib)}/>\n </div>\n {/each}\n </div>\n \n\n <div class=\"section-container\">\n <p>Stylesheets\n <span>\n <input bind:value={addNewStylesheet} /> \n <Button color=\"primary-outline\"\n on:click={addStylesheet} >Add</Button>\n </span>\n </p>\n {#each $store.pages.stylesheets as stylesheet}\n <div>\n <span class=\"row-text\">{stylesheet}</span>\n <IconButton icon=\"x\" \n on:click={() => removeStylesheet(stylesheet)}/>\n </div>\n {/each}\n </div>\n\n \n </div>\n </div>\n</div>\n\n<style>\n\n.section-container {\n padding: 15px;\n border-style: dotted;\n border-width: 1px;\n border-color: var(--lightslate);\n border-radius: 2px;\n}\n\n.section-container:nth-child(1) {\n margin-bottom: 15px;\n}\n\n.row-text {\n margin-right: 15px;\n color: var(--primary100);\n}\n\ninput {\n margin-right: 15px;\n}\n\np > span {\n margin-left: 30px;\n}\n\n.header {\n display: grid;\n grid-template-columns: [title] 1fr [icon] auto;\n}\n\n.header > div:nth-child(1) {\n grid-column-start: title;\n}\n\n.header > div:nth-child(2) {\n grid-column-start: icon;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport { store } from \"../builderStore\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport { pipe } from \"../common/core\";\nimport {\n filter, find, concat\n} from \"lodash/fp\";\n\nlet entryComponent;\nlet title = \"\";\nlet components = [];\n\nconst notSeletedComponent = {name:\"(none selected)\"};\n\nstore.subscribe(s => {\n title = s.currentFrontEndItem.index.title;\n components = pipe(s.allComponents, [\n filter(s => !isRootComponent(s)),\n concat([notSeletedComponent])\n ]);\n entryComponent = find(c => c.name === s.currentFrontEndItem.appBody)(components);\n if(!entryComponent) entryComponent = notSeletedComponent;\n});\n\nconst save = () => {\n if(!title || !entryComponent || entryComponent === notSeletedComponent) return;\n const page = {\n index: {\n title\n },\n appBody: entryComponent.name,\n }\n store.savePage(page);\n}\n\n</script>\n\n<div class=\"root\">\n\n <h3>{$store.currentPageName}</h3>\n\n <form class=\"uk-form-horizontal\">\n <Textbox bind:text={title} label=\"Title\" hasError={!title}/>\n <div class=\"help-text\">The title of your page, displayed in the bowser tab</div>\n <Dropdown label=\"App Entry Component\"\n options={components}\n bind:selected={entryComponent}\n textMember={(v) => v.name} />\n\n <div class=\"help-text\">The component that will be loaded into the body of the page</div>\n <div style=\"margin-top: 20px\"></div>\n <Button on:click={save}>Save</Button>\n </form>\n\n</div>\n\n<style>\n.root {\n padding: 15px;\n}\n.help-text {\n color: var(--slate);\n font-size: 10pt;\n}\n</style>","<script>\n\nimport ComponentsHierarchy from \"./ComponentsHierarchy.svelte\";\nimport PagesList from \"./PagesList.svelte\"\nimport EditComponent from \"./EditComponent.svelte\";\nimport { store } from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport { isComponent } from \"./pagesParsing/searchComponents\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport NewComponent from \"./NewComponent.svelte\";\nimport CurrentItemPreview from \"./CurrentItemPreview.svelte\";\nimport SettingsView from \"./SettingsView.svelte\";\nimport PageView from \"./PageView.svelte\";\n\nlet newComponentPicker; \nconst newComponent = () => {\n newComponentPicker.show();\n}\n\nlet settingsView;\nconst settings = () => {\n settingsView.show();\n}\n\n</script>\n\n<div class=\"root\">\n \n <div class=\"ui-nav\">\n\n <div class=\"components-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"sidebar\",\"18\")}</div>\n <span class=\"components-nav-header\">Components</span>\n <div>\n <IconButton icon=\"settings\" \n size=\"14px\"\n on:click={settings}/>\n <IconButton icon=\"plus\" \n on:click={newComponent}/>\n </div>\n </div>\n <div class=\"nav-items-container\">\n <ComponentsHierarchy components={$store.derivedComponents}/>\n </div>\n </div>\n\n <div class=\"pages-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"grid\",\"18\")}</div>\n <span>Pages</span>\n </div>\n <div class=\"nav-items-container\">\n <PagesList />\n </div>\n </div>\n\n </div>\n\n <div>\n {#if $store.currentFrontEndItem}\n {#if isComponent($store.currentFrontEndItem)}\n <CurrentItemPreview />\n {:else}\n <PageView />\n {/if}\n {/if} \n </div>\n\n {#if $store.currentFrontEndItem && isComponent($store.currentFrontEndItem)}\n <div class=\"properties-pane\">\n <EditComponent />\n </div>\n {/if}\n\n</div>\n\n\n<NewComponent bind:this={newComponentPicker}/>\n<SettingsView bind:this={settingsView} />\n\n\n<style>\n\n.root {\n display: grid;\n grid-template-columns: [uiNav] 250px [preview] auto [properties] 300px;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n}\n\n.ui-nav {\n grid-column-start: uiNav;\n background-color: var(--secondary5);\n height: 100%;\n}\n\n.properties-pane {\n grid-column-start: properties;\n background-color: var(--secondary5);\n height: 100%;\n overflow-y: hidden;\n}\n\n.pages-list-container {\n padding-top: 2rem;\n}\n\n.components-nav-header {\n font-size: .9rem;\n}\n\n.nav-group-header {\n font-size: .9rem;\n padding-left: 1rem;\n}\n\n.nav-items-container {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.nav-group-header {\n display:grid;\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\n padding: 2rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n}\n\n.nav-group-header>div:nth-child(1) {\n padding: 0rem .5rem 0rem 0rem;\n vertical-align: bottom;\n grid-column-start: icon;\n margin-right: 5px;\n}\n\n.nav-group-header>span:nth-child(2) {\n margin-left:5px;\n vertical-align: bottom;\n grid-column-start: title;\n margin-top:auto;\n}\n\n.nav-group-header>div:nth-child(3) {\n vertical-align: bottom;\n grid-column-start: button;\n cursor: pointer;\n color: var(--primary75);\n}\n\n.nav-group-header>div:nth-child(3):hover {\n color: var(--primary75); \n}\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport {cloneDeep} from \"lodash/fp\";\nimport getIcon from \"../common/icon\";\nexport let level = 0;\nexport let node;\nexport let type;\n\nlet navActive = \"\";\n$:icon = type===\"index\" ? \"list\" : \"file\";\n\nstore.subscribe(s => {\n if(s.currentNode)\n navActive = (s.activeNav === \"database\" && node.nodeId === s.currentNode.nodeId \n ? \"active\" : \"\")\n});\n\n</script>\n\n<div class=\"root\">\n <div class=\"title {navActive}\" on:click={() => store.selectExistingNode(node.nodeId)} style=\"padding-left: {20 + (level * 20)}px\">\n {@html getIcon(icon, 12)} <span style=\"margin-left: 1rem\">{node.name}</span>\n </div>\n {#if node.children}\n {#each node.children as child}\n <svelte:self node={child} \n level={level+1}\n type=\"record\"/>\n {/each}\n {/if}\n {#if node.indexes}\n {#each node.indexes as index}\n <svelte:self node={index} \n level={level+1}\n type=\"index\"/>\n {/each}\n {/if}\n</div>\n\n\n<style>\n\n.root { \n display: block;\n font-size: .9rem;\n width: 100%;\n cursor: pointer;\n color: var(--secondary50);\n font-weight: 500;\n}\n\n.title {\n padding-top: .5rem;\n padding-right: .5rem;\n}\n\n.title:hover {\n background-color: var(--secondary10);\n}\n\n.active {\n background-color: var(--primary10);\n}\n\n</style>","<script>\n\nimport getIcon from \"./icon\";\nexport let iconName;\nexport let actions = []; // [ {label: \"Action Name\", onclick: () => {...} } ]\nlet isDroppedDown = false;\n\n</script>\n\n\n<div class=\"root\" on:click={() => isDroppedDown = !isDroppedDown}>\n {@html getIcon(iconName)}\n \n <div class=\"dropdown-background\" on:click|stopPropagation={() => isDroppedDown = false} style=\"display: {isDroppedDown ? 'block' : 'none'}\"></div>\n\n <div class=\"dropdown-content\" style=\"display: {isDroppedDown ? 'inline-block' : 'none'}\">\n {#each actions as action}\n <div class=\"action-row\" on:click={action.onclick}>\n {action.label}\n </div>\n {/each}\n </div>\n \n</div>\n\n\n<style>\n\n.dropdown-background {\n position: fixed;\n top:0;\n left:0;\n width:100vw;\n height:100vh;\n}\n\n.root {\n cursor: pointer;\n z-index: 1;\n}\n\n.dropdown-content {\n position: absolute;\n background-color: var(--white);\n min-width: 160px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n font-weight: normal;\n border-style: solid;\n border-width: 1px;\n border-color: var(--secondary10);\n}\n\n.dropdown-content:not(:focus) {\n display: none;\n}\n\n.action-row {\n padding: 7px 10px;\n cursor:pointer;\n}\n\n.action-row:hover {\n background-color: var(--primary100);\n color:var(--white);\n}\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\n\nexport let name = \"\";\nexport let label = \"\";\n\nlet navActive = \"\";\n\nstore.subscribe(db => {\n navActive = (db.activeNav === name ? \"active\" : \"\")\n});\n\nconst setActive = () => \n store.setActiveNav(name);\n\n</script>\n\n<div class=\"nav-item {navActive}\" on:click={setActive}>\n {label}\n</div>\n\n\n<style>\n\n.nav-item {\n padding: 1.5rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n cursor: pointer;\n flex: 0 0 auto;\n}\n\n.nav-item:hover {\n background-color: var(--primary10);\n}\n\n.active {\n background-color: var(--primary10);\n}\n\n</style>","<script>\n\nimport { store } from \"../builderStore\";\nimport HierarchyRow from \"./HierarchyRow.svelte\";\nimport DropdownButton from \"../common/DropdownButton.svelte\";\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\nimport NavItem from \"./NavItem.svelte\";\nimport getIcon from \"../common/icon\";\n\n\nconst defaultNewChildActions = [\n {\n label:\"New Root Index\", \n onclick: store.newRootIndex\n }, \n {\n label:\"New Root Record\", \n onclick: store.newRootRecord\n }\n];\n\nlet newChildActions = defaultNewChildActions;\n\nconst setActiveNav = (name) => () => {\n store.setActiveNav(name);\n}\n\n\nstore.subscribe(db => {\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\n newChildActions = defaultNewChildActions;\n } else {\n newChildActions = [\n {label:\"New Root Record\", \n onclick: store.newRootRecord},\n {label: `New Child Record of ${db.currentNode.name}`, \n onclick: store.newChildRecord},\n {label:\"New Root Index\", \n onclick: store.newRootIndex},\n {label: `New Index on ${db.currentNode.name}`, \n onclick: store.newChildIndex}\n ];\n }\n});\n\n</script>\n\n\n<div class=\"items-root\">\n <div class=\"hierarchy\">\n <div class=\"components-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"database\",\"18\")}</div>\n <div class=\"hierarchy-title\">Database</div>\n <DropdownButton iconName=\"plus\" actions={newChildActions} />\n </div>\n </div>\n\n <div class=\"hierarchy-items-container\">\n {#each $store.hierarchy.children as record}\n <HierarchyRow node={record}\n type=\"record\" />\n {/each}\n\n {#each $store.hierarchy.indexes as index}\n <HierarchyRow node={index}\n type=\"index\" />\n {/each}\n </div>\n </div>\n\n <NavItem name=\"actions\" label=\"Actions & Triggers\"/>\n <NavItem name=\"access levels\" label=\"User Levels\"/>\n\n</div>\n\n\n<style>\n\n\n.items-root {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n height: 100%;\n background-color: var(--secondary5);\n}\n\n.nav-group-header {\n display:grid;\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\n padding: 2rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n}\n\n.nav-group-header>div:nth-child(1) {\n padding: 0rem .7rem 0rem 0rem;\n vertical-align: bottom;\n grid-column-start: icon;\n margin-right: 5px;\n}\n\n.nav-group-header>div:nth-child(2) {\n margin-left:5px;\n vertical-align: bottom;\n grid-column-start: title;\n margin-top:auto;\n}\n\n.nav-group-header>div:nth-child(3) {\n vertical-align: bottom;\n grid-column-start: button;\n cursor: pointer;\n color: var(--primary75);\n}\n\n.nav-group-header>div:nth-child(3):hover {\n color: var(--primary75); \n}\n\n.hierarchy-title {\n flex: auto 1 1;\n}\n\n\n.hierarchy {\n display:flex;\n flex-direction: column;\n flex: 1 0 auto;\n height: 100px;\n}\n\n.hierarchy-items-container {\n flex: 1 1 auto;\n overflow-y:auto;\n}\n\n\n</style>","<script>\n\nexport let value;\nexport let label;\n\nconst inputChanged = ev => {\n try {\n value = Number(ev.target.value);\n } catch(_) {\n value = null;\n }\n}\n\nlet numberText = value === null || value === undefined\n ? \"\" : value.toString();\n\n\n</script>\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input\" value={value} on:change={inputChanged} >\n </div>\n</div>\n\n","<script>\nimport {join} from \"lodash/fp\";\n\nexport let values;\nexport let label;\n\nconst inputChanged = ev => {\n try {\n values = ev.target.value.split(\"\\n\");\n } catch(_) {\n values = [];\n }\n}\n\n$: valuesText = join(\"\\n\")(values);\n\n\n</script>\n\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <textarea value={valuesText} on:change={inputChanged} ></textarea>\n </div>\n</div>\n\n<style>\n\ntextarea {\n width:300px;\n height:200px;\n}\n\n</style>","<script>\nexport let errors = [];\n\n$:hasErrors = errors.length > 0;\n</script>\n\n{#if hasErrors}\n<div class=\"error-container\">\n {#each errors as error}\n <div class=\"error-row\">{error.field ? `${error.field}: ` : \"\"}{error.error}</div>\n {/each}\n</div>\n{/if}\n\n<style>\n\n.error-container {\n padding:10px;\n border-style: solid;\n border-color: var(--deletion100);\n border-radius: var(--borderradiusall);\n background: var(--deletion75);\n}\n\n.error-row {\n padding: 5px 0px;\n}\n\n</style>","/* flatpickr v4.6.2, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n 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 };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","<script>\n\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { onMount } from 'svelte';\n\nexport let value;\nexport let label;\nexport let width = \"medium\";\nexport let size = \"small\";\n\nlet input;\nlet fpInstance;\n\n$: if (fpInstance) fpInstance.setDate(value);\n\nonMount(() => {\n fpInstance = flatpickr(input, {});\n\n fpInstance.config.onChange.push(selectedDates => {\n if(selectedDates.length > 0)\n value = new Date(selectedDates[0]);\n });\n\n return fpInstance;\n})\n\n</script>\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\" bind:this={input} >\n </div>\n</div>\n\n","<script>\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport NumberBox from \"../common/NumberBox.svelte\";\nimport ValuesList from \"../common/ValuesList.svelte\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport DatePicker from \"../common/DatePicker.svelte\";\nimport {cloneDeep, assign, keys, \n isNumber, includes, map, isBoolean} from \"lodash/fp\";\nimport {allTypes, validate, getPotentialReferenceIndexes,\n getDefaultTypeOptions, getNode,\n getPotentialReverseReferenceIndexes} from \"../common/core\";\n\nexport let field;\nexport let allFields;\nexport let onFinished = () => {};\nexport let store;\n\nlet errors = [];\nlet clonedField = cloneDeep(field);\n\n$: isNew = !!field && field.name.length === 0;\n\n$: possibleReferenceIndexes = getPotentialReferenceIndexes(\n store.hierarchy, store.currentNode\n);\n\n$: selectedReverseRefIndex = \n !clonedField.typeOptions.indexNodeKey \n ? \"\"\n : getNode(store.hierarchy, clonedField.typeOptions.indexNodeKey);\n\n$: possibleReverseReferenceIndexes = \n !selectedReverseRefIndex \n ? []\n : getPotentialReverseReferenceIndexes(\n store.hierarchy, selectedReverseRefIndex);\n\nconst typeChanged = (ev) => \n clonedField.typeOptions = getDefaultTypeOptions(ev.detail);\n\n\nconst save = () => {\n\n errors = validate.field(allFields)(clonedField);\n if(errors.length > 0) return;\n field.typeOptions = cloneDeep(clonedField.typeOptions);\n onFinished(\n assign(field)(clonedField)\n );\n}\n\n</script>\n\n<div class=\"root\">\n\n <ErrorsBox errors={errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Dropdown label=\"Type\" bind:selected={clonedField.type} options={keys(allTypes)} on:change={typeChanged} />\n\n {#if isNew}\n <Textbox label=\"Field Name\" bind:text={clonedField.name} />\n {:else}\n <div style=\"font-weight: bold\">{clonedField.name}</div>\n {/if}\n\n <Textbox label=\"Label\" bind:text={clonedField.label} />\n \n {#if clonedField.type === \"string\"}\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\n <ValuesList label=\"Values (options)\" bind:values={clonedField.typeOptions.values} />\n <Checkbox label=\"Declared Values Only\" bind:checked={clonedField.typeOptions.allowDeclaredValuesOnly} />\n {:else if clonedField.type === \"bool\"}\n <Checkbox label=\"Allow Null\" bind:checked={clonedField.typeOptions.allowNulls} />\n {:else if clonedField.type === \"datetime\"}\n <DatePicker label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\n <DatePicker label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\n {:else if clonedField.type === \"number\"}\n <NumberBox label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\n <NumberBox label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\n <NumberBox label=\"Decimal Places\" bind:value={clonedField.typeOptions.decimalPlaces} />\n {:else if clonedField.type === \"reference\"}\n <Dropdown label=\"Lookup Index\" \n options={possibleReferenceIndexes} \n valueMember={n => n.nodeKey()}\n textMember={n => n.name}\n bind:selected={clonedField.typeOptions.indexNodeKey} />\n\n <Dropdown label=\"Reverse Reference Index\" \n options={possibleReverseReferenceIndexes} \n multiple=true\n valueMember={n => n.nodeKey()}\n textMember={n => n.name}\n bind:selected={clonedField.typeOptions.reverseIndexNodeKeys} />\n\n <Textbox label=\"Display Value\" bind:text={clonedField.typeOptions.displayValue} />\n\n {:else if clonedField.type.startsWith(\"array\")}\n <NumberBox label=\"Min Length\" bind:value={clonedField.typeOptions.minLength} />\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\n {/if}\n\n </form>\n\n <ButtonGroup style=\"float: right;\">\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={() => onFinished(false)}>Cancel</Button>\n </ButtonGroup>\n\n</div>\n\n<style>\n\n\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport getIcon from \"../common/icon\";\nimport FieldView from \"./FieldView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport {map, join, filter, some, \n find, keys, isDate} from \"lodash/fp\";\nimport { store } from \"../builderStore\";\nimport {common, hierarchy as h} from \"../../../core/src\";\nimport {templateApi, pipe, validate} from \"../common/core\";\n\nlet record;\nlet getIndexAllowedRecords;\nlet editingField = false;\nlet fieldToEdit;\nlet isNewField = false;\nlet newField;\nlet editField;\nlet deleteField;\nlet onFinishedFieldEdit;\nlet editIndex;\n\nstore.subscribe($store => {\n record = $store.currentNode;\n const flattened = h.getFlattenedHierarchy($store.hierarchy);\n getIndexAllowedRecords = index => \n pipe(index.allowedRecordNodeIds, [\n filter(id => some(n => n.nodeId === id)(flattened)),\n map(id => find(n => n.nodeId === id)\n (flattened).name),\n join(\", \")\n ]);\n\n newField = () => {\n isNewField = true;\n fieldToEdit = templateApi($store.hierarchy).getNewField(\"string\");\n editingField = true;\n }\n\n onFinishedFieldEdit = (field) => {\n if(field) {\n store.saveField(field);\n }\n editingField = false;\n }\n\n editField = (field) => {\n isNewField = false;\n fieldToEdit = field;\n editingField = true;\n }\n\n deleteField = (field) => {\n store.deleteField(field);\n }\n\n editIndex = index => {\n store.selectExistingNode(index.nodeId);\n }\n\n})\n\nlet getTypeOptionsValueText = value => {\n if(value === Number.MAX_SAFE_INTEGER\n || value === Number.MIN_SAFE_INTEGER\n || new Date(value).getTime() === new Date(8640000000000000).getTime()\n || new Date(value).getTime() === new Date(-8640000000000000).getTime()) return \"(any)\";\n \n if(value === null) return \"(not set)\";\n return value;\n}\n\nlet getTypeOptions = typeOptions => \n pipe(typeOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${getTypeOptionsValueText(typeOptions[k])}`),\n join(\"<br>\")\n ]);\n\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-form-horizontal\">\n <h3 class=\"settings-title\">\n Settings \n </h3>\n \n <Textbox label=\"Name:\" bind:text={record.name} />\n {#if !record.isSingle}\n <Textbox label=\"Collection Name:\" bind:text={record.collectionName} />\n <Textbox label=\"Shard Factor:\" bind:text={record.allidsShardFactor} />\n {/if}\n <div class=\"recordkey\">{record.nodeKey()}</div>\n\n </form>\n <h3 class=\"title\">\n Fields <span class=\"add-field-button\" on:click={newField}>{@html getIcon(\"plus\")}</span>\n </h3>\n\n {#if record.fields.length > 0}\n <table class=\"fields-table uk-table\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Type</th>\n <th>Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each record.fields as field}\n <tr>\n <td >\n <div class=\"field-label\">{field.label}</div>\n <div style=\"font-size: 0.8em; color: var(--slate)\">{field.name}</div>\n </td>\n <td >{field.type}</td>\n <td >{@html getTypeOptions(field.typeOptions)}</td>\n <td>\n <span class=\"edit-button\" on:click={() => editField(field)}>{@html getIcon(\"edit\")}</span>\n <span class=\"edit-button\" on:click={() => deleteField(field)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n </table>\n {:else}\n (no fields added)\n {/if}\n\n {#if editingField}\n <Modal bind:isOpen={editingField}>\n <FieldView field={fieldToEdit} \n onFinished={onFinishedFieldEdit}\n allFields={record.fields} \n store={$store}/>\n </Modal>\n {/if}\n\n <h3 class=\"title\">\n Indexes \n </h3>\n\n {#each record.indexes as index}\n <div class=\"index-container\">\n <div class=\"index-name\">\n {index.name}\n <span style=\"margin-left: 7px\" on:click={() => editIndex(index)}>{@html getIcon(\"edit\")}</span>\n </div>\n <div class=\"index-field-row\">\n <span class=\"index-label\">records indexed: </span> \n <span>{getIndexAllowedRecords(index)}</span>\n <span class=\"index-label\" style=\"margin-left: 15px\">type:</span> \n <span>{index.indexType}</span>\n </div>\n <div class=\"index-field-row\">\n <span class=\"index-label\">map:</span>\n <code class=\"index-mapfilter\">{index.map}</code>\n </div>\n {#if index.filter}\n <div class=\"index-field-row\">\n <span class=\"index-label\">filter:</span>\n <code class=\"index-mapfilter\">{index.filter}</code>\n </div>\n {/if}\n </div>\n {:else}\n <div class=\"no-indexes\">\n No indexes added.\n </div>\n {/each}\n\n</div>\n\n\n<style>\n\n.root {\n height: 100%;\n padding: 2rem;\n}\n\n.settings-title {\n font-weight: 700;\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.recordkey {\n font-size: 14px;\n font-weight: 600;\n color: var(--primary100);\n}\n\n.fields-table {\n margin: 1rem 1rem 0rem 0rem;\n border-collapse:collapse;\n}\n\n.add-field-button {\n cursor:pointer;\n}\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\n.edit-button:hover {\n cursor:pointer;\n color: var(--secondary75);\n}\n\nth {\n text-align: left; \n}\n\ntd {\n padding: 1rem 5rem 1rem 0rem;\n margin:0;\n font-size: 14px;\n font-weight: 500;\n\n}\n\n.field-label {\n font-size: 14px;\n font-weight: 500;\n}\n\nthead > tr {\n border-width: 0px 0px 1px 0px;\n border-style: solid;\n border-color: var(--secondary75);\n margin-bottom: 20px;\n}\n\ntbody > tr {\n border-width: 0px 0px 1px 0px;\n border-style: solid;\n border-color: var(--primary10);\n}\n\ntbody > tr:hover {\n background-color: var(--primary10);\n}\n\ntbody > tr:hover .edit-button {\n color: var(--secondary75);\n}\n\n.index-container {\n border-style: solid;\n border-width: 0 0 1px 0;\n border-color: var(--secondary25);\n padding: 10px;\n margin-bottom: 5px;\n}\n\n.index-label {\n color: var(--slate);\n}\n\n.index-name {\n font-weight: bold;\n color: var(--primary100);\n}\n\n.index-container code {\n margin: 0;\n display: inline;\n background-color: var(--primary10);\n color: var(--secondary100);\n padding:3px;\n}\n\n.index-field-row {\n margin: 1rem 0rem 0rem 0rem;\n}\n\n.no-indexes {\n margin: 1rem 0rem 0rem 0rem;\n font-family: var(--fontnormal);\n font-size: 14px;\n}\n</style>","<script>\n// todo: use https://ace.c9.io\nexport let text = \"\";\nexport let label = \"\";\n</script>\n\n<div>{label}</div>\n<textarea class=\"uk-textarea\" bind:value={text}></textarea>\n\n<style>\n\ntextarea {\n padding:3px;\n margin-top:5px;\n margin-bottom:10px;\n background: var(--lightslate);\n color: var(--white);\n font-family: 'Courier New', Courier, monospace;\n width:95%;\n height:100px;\n border-radius: 5px;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport CodeArea from \"../common/CodeArea.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport {store} from \"../builderStore\";\nimport {filter, some, map} from \"lodash/fp\";\nimport {hierarchy as hierarchyFunctions, common} from \"../../../core/src\";\n\nconst pipe = common.$;\n\nlet index;\nlet indexableRecords = [];\n\nstore.subscribe($store => {\n index = $store.currentNode;\n indexableRecords = pipe($store.hierarchy,[\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isDecendant(index.parent())),\n filter(hierarchyFunctions.isRecord),\n map(n => ({\n node:n,\n isallowed: some(id => n.nodeId === id)(index.allowedRecordNodeIds)\n }))\n ]);\n});\n\nconst toggleAllowedRecord = record => {\n if(record.isallowed) {\n index.allowedRecordNodeIds = filter(id => id !== record.node.nodeId)\n (index.allowedRecordNodeIds);\n } else {\n index.allowedRecordNodeIds.push(record.node.nodeId);\n }\n};\n\n</script>\n\n<form class=\"uk-form-horizontal root\">\n <Textbox bind:text={index.name} label=\"Name\"/>\n \n <div class=\"allowed-records\">\n <div>Records to Index</div>\n {#each indexableRecords as rec}\n <input type=\"checkbox\" checked={rec.isallowed} on:change={() => toggleAllowedRecord(rec)}/>\n <span>{rec.node.name}</span>\n {/each}\n </div>\n\n\n <Dropdown label=\"Index Type\" bind:selected={index.indexType} options={[\"ancestor\", \"reference\"]} />\n\n <CodeArea bind:text={index.map} label=\"Map (javascript)\"/>\n <CodeArea bind:text={index.filter} label=\"Filter (javascript expression)\"/>\n <CodeArea bind:text={index.getShardName} label=\"Shard Name (javascript expression)\"/>\n\n \n</form>\n\n<style>\n\n.root {\n height: 100%;\n padding: 15px;\n}\n\n.allowed-records {\n margin: 20px 0px;\n}\n\n.allowed-records > span {\n margin-right:30px;\n}\n\n</style>","<script>\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport {store} from \"../builderStore\";\nimport Modal from \"../common/Modal.svelte\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\n\nexport let left;\nlet confirmDelete = false;\nconst openConfirmDelete = () => {\n confirmDelete = true;\n}\n\nconst deleteCurrentNode = () => {\n confirmDelete = false;\n store.deleteCurrentNode();\n}\n\n</script>\n\n<div class=\"root\" style=\"left: {left}\">\n\n <ButtonGroup>\n <Button color=\"secondary\" grouped on:click={store.saveCurrentNode}>\n {#if $store.currentNodeIsNew}\n Create\n {:else}\n Update\n {/if}\n </Button>\n\n {#if !$store.currentNodeIsNew}\n <Button color=\"tertiary\" grouped on:click={openConfirmDelete}>\n Delete\n </Button>\n {/if}\n </ButtonGroup>\n\n {#if !!$store.errors && $store.errors.length > 0}\n <div style=\"width: 500px\">\n <ErrorsBox errors={$store.errors}/>\n </div>\n {/if}\n \n <Modal bind:isOpen={confirmDelete}>\n <div style=\"margin: 10px 0px 20px 0px\">Are you sure you want to delete {$store.currentNode.name} ?</div>\n <div style=\"float:right\">\n <Button color=\"primary\" on:click={deleteCurrentNode}>Yes</Button>\n <Button color=\"secondary\" on:click={() => confirmDelete = false}>No</Button>\n </div>\n </Modal>\n</div>\n\n<style>\n\n.root {\n padding: 1.5rem;\n width: 100%;\n align-items: right;\n }\n\n</style>","<script>\n\nimport HierarchyRow from \"./HierarchyRow.svelte\";\nimport RecordView from \"./RecordView.svelte\";\nimport IndexView from \"./IndexView.svelte\";\nimport ActionsHeader from \"./ActionsHeader.svelte\";\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport DropdownButton from \"../common/DropdownButton.svelte\";\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\n\nconst hierarchyWidth = \"200px\";\n\nconst defaultNewIndexActions = [{\n label:\"New Root Index\", \n onclick: store.newRootIndex\n}];\n\nconst defaultNewRecordActions = [{\n label:\"New Root Record\", \n onclick: store.newRootRecord\n}];\n\nlet newIndexActions = defaultNewIndexActions;\nlet newRecordActions = defaultNewRecordActions;\n\nstore.subscribe(db => {\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\n newRecordActions = defaultNewRecordActions;\n newIndexActions = defaultNewIndexActions;\n } else {\n newRecordActions = [\n ...defaultNewRecordActions,\n {label: `New Child Record of ${db.currentNode.name}`, \n onclick: store.newChildRecord}\n ];\n\n newIndexActions = [\n ...defaultNewIndexActions,\n {label: `New Index on ${db.currentNode.name}`, \n onclick: store.newChildIndex}\n ];\n }\n});\n\n\n</script>\n\n<div class=\"root\">\n <div class=\"actions-header\">\n {#if $store.currentNode}\n <ActionsHeader left={hierarchyWidth}/>\n {/if}\n </div>\n <div class=\"node-view\">\n {#if !$store.currentNode}\n <h1 style=\"margin-left: 100px\">:)</h1>\n {:else if $store.currentNode.type === \"record\"}\n <RecordView />\n {:else}\n <IndexView />\n {/if}\n </div>\n</div>\n\n\n<style>\n.root {\n height: 100%;\n position: relative;\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport {cloneDeep, filter, keys,\nmap, isUndefined} from \"lodash/fp\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport {validateActions, pipe} from \"../common/core\";\nimport getIcon from \"../common/icon\";\n\nexport let action;\nexport let onFinished = (action) => {};\nexport let allActions;\nexport let isNew = true;\n\nlet optKey = \"\";\nlet optValue = \"\";\n\nlet clonedAction = cloneDeep(action); \nlet initialOptions = pipe(action.initialOptions, [\n keys,\n map(k => ({key:k, value:action.initialOptions[k]}))\n]);\nlet errors = [];\n\nconst addNewOption = () => {\n\n if(optKey && optValue && isUndefined(clonedAction.initialOptions[optKey])) {\n clonedAction.initialOptions[optKey] = optValue;\n initialOptions = [...initialOptions, {\n key:optKey, value: optValue\n }];\n optKey = \"\";\n optValue = \"\";\n }\n}\n\nconst removeOption = (opt) => {\n if(opt) {\n delete clonedAction.initialOptions[opt.key]\n initialOptions = pipe(initialOptions, [\n filter(o => o.key !== opt.key)\n ]);\n }\n}\n\nconst save = () => {\n\n const newActionsList = [\n ...pipe(allActions ,[filter(a => a !== action)]),\n clonedAction]\n\n errors = pipe(newActionsList ,[\n validateActions,\n map(e => e.error)\n ]);\n\n if(errors.length === 0)\n onFinished(clonedAction);\n}\n\nconst cancel = () => {\n onFinished();\n}\n\n</script>\n\n<div class=\"root\">\n\n <ErrorsBox {errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Textbox label=\"Name\" bind:text={clonedAction.name} />\n <Textbox label=\"Behaviour Source\" bind:text={clonedAction.behaviourSource} />\n <Textbox label=\"Behaviour\" bind:text={clonedAction.behaviourName} />\n\n </form>\n\n <div class=\" uk-form-stacked\" style=\"margin-bottom: 20px\">\n <label class=\"uk-form-label\">Default Options</label>\n <div class=\"uk-grid-small\" uk-grid>\n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"key\" bind:value={optKey} > \n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"value\" bind:value={optValue} > \n <Button color=\"primary-outline uk-width-1-4\" on:click={addNewOption}>Add</Button>\n </div>\n <div style=\"margin-top: 10px\">\n {#each initialOptions as option}\n <span class=\"option-container\">{option.key} : {option.value} <span style=\"font-size:10pt; cursor: pointer\" on:click={() => removeOption(option)}>{@html getIcon(\"trash-2\")}</span></span>\n {/each}\n </div>\n </div>\n\n <ButtonGroup>\n <Button color=\"secondary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\n </ButtonGroup>\n\n \n</div>\n\n\n<style>\n\n.root {\n padding: 2rem;\n border-radius: 2rem;\n}\n\n.uk-grid-small {\n padding: 1rem;\n}\n\n.option-container {\n border-style: dotted;\n border-width: 1px;\n border-color: var(--primary75);\n padding: 3px;\n margin-right: 5px;\n}\n\n</style>","<script>\n\nimport getIcon from \"../common/icon\";\nimport {store} from \"../builderStore\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport ActionView from \"./ActionView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport {pipe} from \"../common/core\";\nimport {keys, map, join} from \"lodash/fp\";\n\nexport let editingActionIsNew = false;\nexport let editingAction = null;\nexport let onActionEdit = (action) => {};\nexport let onActionDelete = (action) => {};\nexport let onActionSave = (action) => {};\nexport let onActionCancel = () => {};\n\n$: isEditing = (editingAction !== null); \n\nlet actionsArray = [];\nstore.subscribe(s => {\n actionsArray = pipe(s.actions, [\n keys,\n map(k => s.actions[k])\n ]);\n});\n\nlet getDefaultOptionsHtml = defaultOptions => \n pipe(defaultOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.stringify(defaultOptions[k])}`),\n join(\"<br>\")\n ]);\n\n\nlet actionEditingFinished = (action) => {\n \n if(action) {\n onActionSave(action)\n } else {\n onActionCancel();\n }\n}\n\n</script>\n\n<h3 class=\"title\">Actions</h3>\n\n{#if actionsArray}\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\n <thead>\n <tr>\n <th >Description</th>\n <th>Behaviour Source</th>\n <th>Behaviour Name</th>\n <th>Default Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each actionsArray as action}\n <tr>\n <td class=\"table-content\">{action.name}</td>\n <td class=\"table-content\">{action.behaviourSource}</td>\n <td class=\"table-content\">{action.behaviourName}</td>\n <td class=\"table-content\">{@html getDefaultOptionsHtml(action.initialOptions)}</td>\n <td class=\"edit-button\">\n <span on:click={() => onActionEdit(action)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onActionDelete(action)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no actions added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <ActionView action={editingAction}\n allActions={$store.actions}\n onFinished={actionEditingFinished}\n isNew={editingActionIsNew}/>\n {/if} \n</Modal>\n\n\n<style>\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\ntr:hover .edit-button {\n color: var(--secondary75);\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.table-content {\n font-weight: 500;\n font-size: .9rem;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport CodeArea from \"../common/CodeArea.svelte\";\nimport {cloneDeep, filter, keys, some,\nmap, isUndefined} from \"lodash/fp\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport {validateTriggers, pipe, events} from \"../common/core\";\nimport getIcon from \"../common/icon\";\n\nexport let trigger;\nexport let onFinished = (action) => {};\nexport let allTriggers;\nexport let allActions;\nexport let isNew = true;\n\nlet clonedTrigger = cloneDeep(trigger); \nlet errors = [];\n$: actionNames = map(a => a.name)(allActions);\n\nlet cancel = () => onFinished();\nlet save = () => {\n const newTriggersList = [\n ...pipe(allTriggers ,[filter(t => t !== trigger)]),\n clonedTrigger]\n\n errors = validateTriggers(newTriggersList, allActions);\n\n const test = map(t =>(!t.actionName || some(a => a.name === t.actionName)(allActions)))(newTriggersList)\n\n if(errors.length === 0)\n onFinished(clonedTrigger);\n}\n\n</script>\n\n<div>\n\n <ErrorsBox {errors} style=\"margin-bottom:20px\"/>\n\n <form class=\"uk-form-horizontal\">\n \n <Dropdown label=\"Event\" \n options={[\"\",...events]}\n bind:selected={clonedTrigger.eventName} />\n <Dropdown label=\"Action\" \n options={[\"\",...actionNames]}\n bind:selected={clonedTrigger.actionName} />\n <CodeArea label=\"Condition (javascript)\"\n bind:text={clonedTrigger.condition} />\n <CodeArea label=\"Action Options Creator (javascript)\"\n bind:text={clonedTrigger.optionsCreator} />\n\n </form>\n\n <ButtonGroup>\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\n </ButtonGroup>\n\n</div>\n\n<style>\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport Button from \"../common/Button.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport TriggerView from \"./TriggerView.svelte\";\n\n\nexport let editingTrigger = null;\nexport let editingTriggerIsNew = true;\nexport let onTriggerEdit = (trigger) => {};\nexport let onTriggerDelete = (trigger) => {};\nexport let onTriggerSave = (trigger) => {};\nexport let onTriggerCancel = () => {};\n\n$: isEditing = (editingTrigger !== null); \n\nlet triggerEditingFinished = (trigger) => {\n \n if(trigger) {\n onTriggerSave(trigger)\n } else {\n onTriggerCancel();\n }\n}\n\n</script>\n\n<h3 class=\"title\">Triggers</h3>\n\n{#if $store.triggers}\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\n <thead>\n <tr>\n <th>Event</th>\n <th>Action</th>\n <th>Condition</th>\n <th>Create Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each $store.triggers as trigger}\n <tr>\n <td class=\"table-content\">{trigger.eventName}</td>\n <td class=\"table-content\">{trigger.actionName}</td>\n <td class=\"table-content\">{trigger.condition}</td>\n <td class=\"table-content\">{trigger.optionsCreator}</td>\n <td class=\"edit-button\">\n <span on:click={() => onTriggerEdit(trigger)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onTriggerDelete(trigger)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no triggers added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <TriggerView trigger={editingTrigger}\n allActions={$store.actions}\n allTriggers={$store.triggers}\n onFinished={triggerEditingFinished}\n isNew={editingTriggerIsNew}/>\n {/if} \n</Modal>\n\n<style>\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.table-content {\n font-weight: 500;\n font-size: .9rem;\n}\n\ntr:hover .edit-button {\n color: var(--secondary75);\n}\n\n</style>","<script>\n\nimport getIcon from \"../common/icon\";\nimport {store} from \"../builderStore\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Actions from \"./Actions.svelte\";\nimport Triggers from \"./Triggers.svelte\";\nimport {getNewAction, getNewTrigger} from \"../common/core\";\n\nlet editingAction = null;\nlet editingActionIsNew = true;\nlet editingTrigger = null;\nlet editingTriggerIsNew = true;\n\nlet getDefaultOptionsHtml = defaultOptions => \n pipe(defaultOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.parse(typeOptions[k])}`),\n join(\"<br>\")\n ]);\n\nlet onActionEdit = (action) => {\n editingAction = action;\n editingActionIsNew = false;\n}\n\nlet newAction = () => {\n editingAction = getNewAction();\n editingActionIsNew = true;\n}\n\nlet onActionDelete = (action) => {\n store.deleteAction(action);\n}\n\nlet deleteTrigger = () => {}\n\nlet editTrigger = (trigger) => {\n editingTrigger = trigger;\n editingTriggerIsNew = false;\n}\n\nlet newTrigger = () => {\n editingTrigger = getNewTrigger();\n editingTriggerIsNew = true;\n}\n\nlet onActionSave = action => {\n store.saveAction(\n action, \n editingActionIsNew, \n editingAction);\n\n editingAction = null;\n}\n\nlet onActionCancel = () => {\n editingAction = null;\n}\n\nlet onTriggerSave = trigger => {\n store.saveTrigger(\n trigger, \n editingTriggerIsNew, \n editingTrigger);\n\n editingTrigger = null;\n}\n\nlet onTriggerCancel = () => {\n editingTrigger = null;\n}\n\nlet onTriggerEdit = (trigger) => {\n editingTrigger = trigger;\n editingTriggerIsNew = false;\n}\n\n\nlet onTriggerDelete = (trigger) => {\n store.deleteTrigger(trigger);\n}\n\n</script>\n\n<div class=\"root\">\n <div class=\"actions-header\">\n <ButtonGroup>\n <Button color=\"secondary\" \n grouped\n on:click={newAction}>Create New Action</Button>\n <Button color=\"tertiary\" \n grouped\n on:click={newTrigger}>Create New Trigger</Button>\n </ButtonGroup>\n </div>\n\n <div class=\"node-view\">\n <Actions {editingActionIsNew} {editingAction} \n {onActionEdit} {onActionDelete} {onActionSave}\n {onActionCancel} />\n\n <Triggers {editingTriggerIsNew} {editingTrigger} \n {onTriggerEdit} {onTriggerDelete} {onTriggerSave}\n {onTriggerCancel} />\n </div>\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n position: relative;\n padding: 1.5rem;\n\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n</style>","<script>\n\nimport {cloneDeep, map, some, filter} from \"lodash/fp\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport {validateAccessLevels} from \"../common/core\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\n\nexport let level;\nexport let allPermissions;\nexport let onFinished;\nexport let isNew;\nexport let allLevels;\nexport let hierarchy;\nexport let actions;\n\nlet errors = [];\nlet clonedLevel = cloneDeep(level);\n\nconst matchPermissions = (p1, p2) => \n p1.type === p2.type\n && \n ((!p2.nodeKey && !p1.nodeKey)\n || p2.nodeKey === p1.nodeKey);\n\nconst hasPermission = hasPerm => \n some(p => matchPermissions(p, hasPerm))\n (clonedLevel.permissions);\n\n$: permissionMatrix = \n map(p => ({permission:p, hasPermission: hasPermission(p)}))\n (allPermissions)\n\nconst getPermissionName = perm => \n perm.nodeKey\n ? `${perm.type} - ${perm.nodeKey}`\n : perm.type;\n\nconst save = () => {\n\n const newLevels = \n isNew \n ? [...allLevels, clonedLevel]\n : [...filter(l => l.name !== level.name)(allLevels), clonedLevel];\n\n errors = validateAccessLevels(\n hierarchy,\n actions,\n newLevels\n );\n\n if(errors.length > 0) return;\n\n onFinished(clonedLevel);\n}\n\nconst permissionChanged = perm => ev => {\n const hasPermission = ev.target.checked;\n\n if(hasPermission) {\n clonedLevel.permissions.push(perm);\n } else {\n clonedLevel.permissions = filter(p => !matchPermissions(p, perm));\n }\n}\n\n</script>\n\n<div>\n\n <ErrorsBox {errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Textbox label=\"Name\" bind:text={clonedLevel.name} />\n\n {#each permissionMatrix as permission}\n <div>\n <Checkbox label={getPermissionName(permission.permission)} \n checked={permission.hasPermission} \n on:change={permissionChanged(permission.permission)} />\n </div>\n {/each}\n\n </form>\n\n <ButtonGroup style=\"margin-top: 10px\">\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"secondary\" grouped on:click={() => onFinished()}>Cancel</Button>\n </ButtonGroup>\n\n\n</div>\n\n<style>\n\n</style>","<script>\n\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport {store} from \"../builderStore\";\nimport {generateFullPermissions, getNewAccessLevel} from \"../common/core\";\nimport getIcon from \"../common/icon\";\nimport AccessLevelView from \"./AccessLevelView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\n\nlet editingLevel = null;\nlet editingLevelIsNew = false;\n$: isEditing = (editingLevel !== null); \n\nlet allPermissions = [];\nstore.subscribe(db => {\n allPermissions = generateFullPermissions(db.hierarchy, db.actions);\n})\n\nlet onLevelEdit = (level) => {\n editingLevel = level;\n editingLevelIsNew = false;\n};\n\nlet onLevelCancel = () => {\n editingAction = null;\n};\n\nlet onLevelDelete = (level) => {\n store.deleteLevel(level);\n};\n\n\nlet createNewLevel = () => {\n editingLevelIsNew = true;\n editingLevel = getNewAccessLevel();\n}\n\nlet onEditingFinished = (level) => {\n if(level) {\n store.saveLevel(level, editingLevelIsNew, editingLevel);\n }\n editingLevel = null;\n}\n\nconst getPermissionsString = perms => {\n return `${perms.length} / ${allPermissions.length}`;\n}\n\n</script>\n\n<div class=\"root\">\n\n<ButtonGroup>\n <Button grouped color=\"secondary\" on:click={createNewLevel}>Create New Access Level</Button>\n</ButtonGroup>\n\n{#if $store.accessLevels}\n<table class=\"fields-table uk-table uk-table-small\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Permissions</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each $store.accessLevels as level}\n <tr>\n <td >{level.name}</td>\n <td >{getPermissionsString(level.permissions)}</td>\n <td class=\"edit-button\">\n <span on:click={() => onLevelEdit(level)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onLevelDelete(level)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no actions added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <AccessLevelView level={editingLevel}\n allPermissions={allPermissions}\n onFinished={onEditingFinished}\n isNew={editingLevelIsNew}\n allLevels={$store.accessLevels}\n hierarchy={$store.hierarchy}\n actions={$store.actions} />\n {/if} \n</Modal>\n\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n position: relative;\n padding: 1.5rem;\n\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n\n</style>","<script>\n\nimport BackendNav from \"./nav/BackendNav.svelte\";\nimport Database from \"./database/DatabaseRoot.svelte\" ;\nimport UserInterface from \"./userInterface/UserInterfaceRoot.svelte\" ;\nimport ActionsAndTriggers from \"./actionsAndTriggers/ActionsAndTriggersRoot.svelte\" ;\nimport AccessLevels from \"./accessLevels/AccessLevelsRoot.svelte\" ;\nimport ComingSoon from \"./common/ComingSoon.svelte\";\n\nimport {store} from \"./builderStore\";\n\nexport let navWidth = \"50px\";\n\n\n</script>\n\n<div class=\"root\">\n <div class=\"nav\">\n <BackendNav />\n </div>\n <div class=\"content\" \n style=\"width: calc(100% - {navWidth}); left: {navWidth}\"> \n {#if $store.activeNav === \"database\"}\n <Database />\n {:else if $store.activeNav === \"actions\"}\n <ActionsAndTriggers />\n {:else if $store.activeNav === \"access levels\"}\n <AccessLevels />\n {/if}\n </div>\n</div>\n\n\n\n<style>\n\n.root {\n height: 100%;\n display: flex;\n}\n\n\n.content {\n flex: 1 1 auto;\n height: 100%;\n background-color: var(--white);\n margin:0;\n}\n\n.nav {\n flex: 0 1 auto;\n width: 300px;\n height: 100%;\n}\n\n</style>","<script>\n\nimport IconButton from \"./common/IconButton.svelte\";\nimport { store } from \"./builderStore\";\nimport UserInterfaceRoot from \"./userInterface/UserInterfaceRoot.svelte\";\nimport BackendRoot from \"./BackendRoot.svelte\";\nimport { fade } from \"svelte/transition\";\n\n</script>\n\n<div class=\"root\">\n\n <div class=\"top-nav\">\n <IconButton icon=\"home\" \n color=\"var(--slate)\"\n hoverColor=\"var(--secondary75)\"/>\n <span class:active={$store.isBackend}\n class=\"topnavitem\"\n on:click={store.showBackend}>\n Backend\n </span>\n <span class:active={!$store.isBackend}\n class=\"topnavitem\"\n on:click={store.showFrontend}>\n Frontend\n </span>\n </div>\n\n <div class=\"content\">\n {#if $store.isBackend}\n <div in:fade out:fade>\n <BackendRoot />\n </div>\n {:else}\n <div in:fade out:fade>\n <UserInterfaceRoot />\n </div>\n {/if}\n </div>\n \n</div>\n\n<style>\n\n.root {\n height:100%;\n width:100%;\n display: flex;\n flex-direction: column;\n}\n\n.top-nav {\n flex: 0 0 auto;\n height: 25px;\n background: white;\n padding: 5px;\n width: 100%;\n}\n\n.content {\n flex: 1 1 auto;\n width: 100%;\n height: 100px;\n}\n\n.content > div {\n height:100%;\n width:100%;\n}\n\n.topnavitem {\n cursor: pointer;\n color: var(--secondary50);\n padding: 0px 15px;\n font-weight: 600;\n font-size: .9rem;\n}\n\n.topnavitem:hover {\n color: var(--secondary75);\n font-weight: 600;\n\n}\n\n.active {\n color: var(--primary100);\n font-weight: 900;\n}\n\n\n</style>","<script>\n\nimport IconButton from \"./common/IconButton.svelte\";\nimport { store } from \"./builderStore\";\nimport UserInterfaceRoot from \"./userInterface/UserInterfaceRoot.svelte\";\nimport { fade } from \"svelte/transition\";\n\n</script>\n\n<div class=\"root\">\n <div class=\"content uk-container\">\n\n <h1>Settings</h1>\n\n <label>\n <input type=\"checkbox\" \n class=\"uk-checkbox\"\n bind:checked={$store.useAnalytics}>\n Send analytics\n </label>\n\n </div>\n</div>\n\n<style>\n\n</style>","<script>\n\t\n\timport NoPackage from \"./NoPackage.svelte\";\n\timport PackageRoot from \"./PackageRoot.svelte\";\n\timport Settings from \"./Settings.svelte\";\n\timport {store, initialise} from \"./builderStore\";\n\timport { onMount } from 'svelte';\n\timport IconButton from \"./common/IconButton.svelte\";\n\n\tlet init = initialise();\n\n</script>\n\n<main>\n\n\t{#await init}\n\t\n\t\t<h1>loading</h1>\n\n\t{:then result}\n\t\t{#if $store.showSettings}\n\t\t\t<Settings />\n\t\t{:else}\n\t\t\t{#if $store.hasAppPackage}\n\t\t\t<PackageRoot />\n\n\t\t\t{:else}\n\n\t\t\t<NoPackage />\n\t\t\t{/if}\n\t\t{/if}\n\n\t{:catch err}\n\t\t<h1 style=\"color:red\">{err}</h1>\n\t{/await}\n\n\t<div class=\"settings\">\n\t\t<IconButton icon=\"settings\"\n on:click={store.showSettings}/>\n\t</div>\n\n\t{#if $store.useAnalytics}\n\t\t<iframe src=\"https://marblekirby.github.io/bb-analytics.html\" width=\"0\" height=\"0\" style=\"visibility:hidden;display:none\"/>\n\t{/if}\n</main>\n\n<style>\n\tmain {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tfont-family: \"Roboto\", Helvetica, Arial, sans-serif;\n\t}\n\n\t.settings {\n\t\tposition: absolute;\n\t\tbottom: 25px;\n\t\tright: 25px;\n\t}\n</style>","/*! UIkit 3.2.0 | http://www.getuikit.com | (c) 2014 - 2019 YOOtheme | MIT License */\n\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"uikit\",e):(t=t||self).UIkit=e()}(this,function(){\"use strict\";var e=Object.prototype,n=e.hasOwnProperty;function c(t,e){return n.call(t,e)}var i={},r=/([a-z\\d])([A-Z])/g;function d(t){return t in i||(i[t]=t.replace(r,\"$1-$2\").toLowerCase()),i[t]}var o=/-(\\w)/g;function f(t){return t.replace(o,s)}function s(t,e){return e?e.toUpperCase():\"\"}function p(t){return t.length?s(0,t.charAt(0))+t.slice(1):\"\"}var t=String.prototype,a=t.startsWith||function(t){return 0===this.lastIndexOf(t,0)};function w(t,e){return a.call(t,e)}var h=t.endsWith||function(t){return this.substr(-t.length)===t};function u(t,e){return h.call(t,e)}function l(t,e){return~this.indexOf(t,e)}var m=Array.prototype,g=t.includes||l,v=m.includes||l;function b(t,e){return t&&(O(t)?g:v).call(t,e)}var y=m.findIndex||function(t){for(var e=arguments,n=0;n<this.length;n++)if(t.call(e[1],this[n],n,this))return n;return-1};function x(t,e){return y.call(t,e)}var k=Array.isArray;function $(t){return\"function\"==typeof t}function I(t){return null!==t&&\"object\"==typeof t}function S(t){return I(t)&&Object.getPrototypeOf(t)===e}function T(t){return I(t)&&t===t.window}function E(t){return I(t)&&9===t.nodeType}function C(t){return I(t)&&!!t.jquery}function A(t){return t instanceof Node||I(t)&&1<=t.nodeType}var _=e.toString;function N(t){return _.call(t).match(/^\\[object (NodeList|HTMLCollection)\\]$/)}function M(t){return\"boolean\"==typeof t}function O(t){return\"string\"==typeof t}function D(t){return\"number\"==typeof t}function z(t){return D(t)||O(t)&&!isNaN(t-parseFloat(t))}function B(t){return!(k(t)?t.length:I(t)&&Object.keys(t).length)}function P(t){return void 0===t}function H(t){return M(t)?t:\"true\"===t||\"1\"===t||\"\"===t||\"false\"!==t&&\"0\"!==t&&t}function L(t){var e=Number(t);return!isNaN(e)&&e}function F(t){return parseFloat(t)||0}function j(t){return A(t)||T(t)||E(t)?t:N(t)||C(t)?t[0]:k(t)?j(t[0]):null}function W(t){return A(t)?[t]:N(t)?m.slice.call(t):k(t)?t.map(j).filter(Boolean):C(t)?t.toArray():[]}function V(t){return k(t)?t:O(t)?t.split(/,(?![^(]*\\))/).map(function(t){return z(t)?L(t):H(t.trim())}):[t]}function R(t){return t?u(t,\"ms\")?F(t):1e3*F(t):0}function Y(t,n){return t===n||I(t)&&I(n)&&Object.keys(t).length===Object.keys(n).length&&K(t,function(t,e){return t===n[e]})}function q(t,e,n){return t.replace(new RegExp(e+\"|\"+n,\"mg\"),function(t){return t===e?n:e})}var U=Object.assign||function(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];t=Object(t);for(var i=0;i<e.length;i++){var r=e[i];if(null!==r)for(var o in r)c(r,o)&&(t[o]=r[o])}return t};function X(t){return t[t.length-1]}function K(t,e){for(var n in t)if(!1===e(t[n],n))return!1;return!0}function G(t,r){return t.sort(function(t,e){var n=t[r];void 0===n&&(n=0);var i=e[r];return void 0===i&&(i=0),i<n?1:n<i?-1:0})}function J(t,n){var i=new Set;return t.filter(function(t){var e=t[n];return!i.has(e)&&(i.add(e)||!0)})}function Z(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),Math.min(Math.max(L(t)||0,e),n)}function Q(){}function tt(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}function et(t,e){return t.x<=e.right&&t.x>=e.left&&t.y<=e.bottom&&t.y>=e.top}var nt={ratio:function(t,e,n){var i,r=\"width\"===e?\"height\":\"width\";return(i={})[r]=t[e]?Math.round(n*t[r]/t[e]):t[r],i[e]=n,i},contain:function(n,i){var r=this;return K(n=U({},n),function(t,e){return n=n[e]>i[e]?r.ratio(n,e,i[e]):n}),n},cover:function(n,i){var r=this;return K(n=this.contain(n,i),function(t,e){return n=n[e]<i[e]?r.ratio(n,e,i[e]):n}),n}};function it(t,e,n){if(I(e))for(var i in e)it(t,i,e[i]);else{if(P(n))return(t=j(t))&&t.getAttribute(e);W(t).forEach(function(t){$(n)&&(n=n.call(t,it(t,e))),null===n?ot(t,e):t.setAttribute(e,n)})}}function rt(t,e){return W(t).some(function(t){return t.hasAttribute(e)})}function ot(t,e){t=W(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.hasAttribute(e)&&t.removeAttribute(e)})})}function st(t,e){for(var n=0,i=[e,\"data-\"+e];n<i.length;n++)if(rt(t,i[n]))return it(t,i[n])}var at=/msie|trident/i.test(window.navigator.userAgent),ht=\"rtl\"===it(document.documentElement,\"dir\"),ct=\"ontouchstart\"in window,ut=window.PointerEvent,lt=ct||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,dt=ut?\"pointerdown\":ct?\"touchstart\":\"mousedown\",ft=ut?\"pointermove\":ct?\"touchmove\":\"mousemove\",pt=ut?\"pointerup\":ct?\"touchend\":\"mouseup\",mt=ut?\"pointerenter\":ct?\"\":\"mouseenter\",gt=ut?\"pointerleave\":ct?\"\":\"mouseleave\",vt=ut?\"pointercancel\":\"touchcancel\";function wt(t,e){return j(t)||xt(t,yt(t,e))}function bt(t,e){var n=W(t);return n.length&&n||kt(t,yt(t,e))}function yt(t,e){return void 0===e&&(e=document),Tt(t)||E(e)?e:e.ownerDocument}function xt(t,e){return j($t(t,e,\"querySelector\"))}function kt(t,e){return W($t(t,e,\"querySelectorAll\"))}function $t(t,s,e){if(void 0===s&&(s=document),!t||!O(t))return null;var a;Tt(t=t.replace(St,\"$1 *\"))&&(a=[],t=function(t){return t.match(Et).map(function(t){return t.replace(/,$/,\"\").trim()})}(t).map(function(t,e){var n=s;if(\"!\"===t[0]){var i=t.substr(1).trim().split(\" \");n=Mt(s.parentNode,i[0]),t=i.slice(1).join(\" \").trim()}if(\"-\"===t[0]){var r=t.substr(1).trim().split(\" \"),o=(n||s).previousElementSibling;n=_t(o,t.substr(1))?o:null,t=r.slice(1).join(\" \")}return n?(n.id||(n.id=\"uk-\"+Date.now()+e,a.push(function(){return ot(n,\"id\")})),\"#\"+zt(n.id)+\" \"+t):null}).filter(Boolean).join(\",\"),s=document);try{return s[e](t)}catch(t){return null}finally{a&&a.forEach(function(t){return t()})}}var It=/(^|[^\\\\],)\\s*[!>+~-]/,St=/([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;function Tt(t){return O(t)&&t.match(It)}var Et=/.*?[^\\\\](?:,|$)/g;var Ct=Element.prototype,At=Ct.matches||Ct.webkitMatchesSelector||Ct.msMatchesSelector;function _t(t,e){return W(t).some(function(t){return At.call(t,e)})}var Nt=Ct.closest||function(t){var e=this;do{if(_t(e,t))return e;e=e.parentNode}while(e&&1===e.nodeType)};function Mt(t,e){return w(e,\">\")&&(e=e.slice(1)),A(t)?Nt.call(t,e):W(t).map(function(t){return Mt(t,e)}).filter(Boolean)}function Ot(t,e){var n=[];for(t=j(t);(t=t.parentNode)&&1===t.nodeType;)_t(t,e)&&n.push(t);return n}var Dt=window.CSS&&CSS.escape||function(t){return t.replace(/([^\\x7f-\\uFFFF\\w-])/g,function(t){return\"\\\\\"+t})};function zt(t){return O(t)?Dt.call(null,t):\"\"}var Bt={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function Pt(t){return W(t).some(function(t){return Bt[t.tagName.toLowerCase()]})}function Ht(t){return W(t).some(function(t){return t.offsetWidth||t.offsetHeight||t.getClientRects().length})}var Lt=\"input,select,textarea,button\";function Ft(t){return W(t).some(function(t){return _t(t,Lt)})}function jt(t,e){return W(t).filter(function(t){return _t(t,e)})}function Wt(t,e){return O(e)?_t(t,e)||Mt(t,e):t===e||(E(e)?e.documentElement:j(e)).contains(j(t))}function Vt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Xt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4];return i=Zt(i),1<s.length&&(s=function(e){return function(t){return k(t.detail)?e.apply(void 0,[t].concat(t.detail)):e(t)}}(s)),o&&(s=function(t,i,r){var o=this;return function(n){t.forEach(function(t){var e=\">\"===i[0]?kt(i,t).reverse().filter(function(t){return Wt(n.target,t)})[0]:Mt(n.target,i);e&&(n.delegate=t,n.current=e,r.call(o,n))})}}(i,o,s)),a&&a.self&&(s=function(e){return function(t){if(t.target===t.currentTarget||t.target===t.current)return e.call(null,t)}}(s)),a=Kt(a),r.split(\" \").forEach(function(e){return i.forEach(function(t){return t.addEventListener(e,s,a)})}),function(){return Rt(i,r,s,a)}}function Rt(t,e,n,i){void 0===i&&(i=!1),i=Kt(i),t=Zt(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.removeEventListener(e,n,i)})})}function Yt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Xt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4],h=n[5],c=Vt(i,r,o,function(t){var e=!h||h(t);e&&(c(),s(t,e))},a);return c}function qt(t,n,i){return Zt(t).reduce(function(t,e){return t&&e.dispatchEvent(Ut(n,!0,!0,i))},!0)}function Ut(t,e,n,i){if(void 0===e&&(e=!0),void 0===n&&(n=!1),O(t)){var r=document.createEvent(\"CustomEvent\");r.initCustomEvent(t,e,n,i),t=r}return t}function Xt(t){return $(t[2])&&t.splice(2,0,!1),t}function Kt(t){return t&&at&&!M(t)?!!t.capture:t}function Gt(t){return t&&\"addEventListener\"in t}function Jt(t){return Gt(t)?t:j(t)}function Zt(t){return k(t)?t.map(Jt).filter(Boolean):O(t)?kt(t):Gt(t)?[t]:W(t)}function Qt(t){return\"touch\"===t.pointerType||!!t.touches}function te(t,e){void 0===e&&(e=\"client\");var n=t.touches,i=t.changedTouches,r=n&&n[0]||i&&i[0]||t;return{x:r[e+\"X\"],y:r[e+\"Y\"]}}function ee(){var n=this;this.promise=new ne(function(t,e){n.reject=e,n.resolve=t})}var ne=\"Promise\"in window?window.Promise:oe,ie=2,re=\"setImmediate\"in window?setImmediate:setTimeout;function oe(t){this.state=ie,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}oe.reject=function(n){return new oe(function(t,e){e(n)})},oe.resolve=function(n){return new oe(function(t,e){t(n)})},oe.all=function(s){return new oe(function(n,t){var i=[],r=0;function e(e){return function(t){i[e]=t,(r+=1)===s.length&&n(i)}}0===s.length&&n(i);for(var o=0;o<s.length;o+=1)oe.resolve(s[o]).then(e(o),t)})},oe.race=function(i){return new oe(function(t,e){for(var n=0;n<i.length;n+=1)oe.resolve(i[n]).then(t,e)})};var se=oe.prototype;function ae(s,a){return new ne(function(t,e){var n=U({data:null,method:\"GET\",headers:{},xhr:new XMLHttpRequest,beforeSend:Q,responseType:\"\"},a);n.beforeSend(n);var i=n.xhr;for(var r in n)if(r in i)try{i[r]=n[r]}catch(t){}for(var o in i.open(n.method.toUpperCase(),s),n.headers)i.setRequestHeader(o,n.headers[o]);Vt(i,\"load\",function(){0===i.status||200<=i.status&&i.status<300||304===i.status?t(i):e(U(Error(i.statusText),{xhr:i,status:i.status}))}),Vt(i,\"error\",function(){return e(U(Error(\"Network Error\"),{xhr:i}))}),Vt(i,\"timeout\",function(){return e(U(Error(\"Network Timeout\"),{xhr:i}))}),i.send(n.data)})}function he(i,r,o){return new ne(function(t,e){var n=new Image;n.onerror=e,n.onload=function(){return t(n)},o&&(n.sizes=o),r&&(n.srcset=r),n.src=i})}function ce(t){if(\"loading\"===document.readyState)var e=Vt(document,\"DOMContentLoaded\",function(){e(),t()});else t()}function ue(t,e){return e?W(t).indexOf(j(e)):W((t=j(t))&&t.parentNode.children).indexOf(t)}function le(t,e,n,i){void 0===n&&(n=0),void 0===i&&(i=!1);var r=(e=W(e)).length;return t=z(t)?L(t):\"next\"===t?n+1:\"previous\"===t?n-1:ue(e,t),i?Z(t,0,r-1):(t%=r)<0?t+r:t}function de(t){return(t=Te(t)).innerHTML=\"\",t}function fe(t,e){return t=Te(t),P(e)?t.innerHTML:pe(t.hasChildNodes()?de(t):t,e)}function pe(e,t){return e=Te(e),ve(t,function(t){return e.appendChild(t)})}function me(e,t){return e=Te(e),ve(t,function(t){return e.parentNode.insertBefore(t,e)})}function ge(e,t){return e=Te(e),ve(t,function(t){return e.nextSibling?me(e.nextSibling,t):pe(e.parentNode,t)})}function ve(t,e){return(t=O(t)?Ie(t):t)?\"length\"in t?W(t).map(e):e(t):null}function we(t){W(t).map(function(t){return t.parentNode&&t.parentNode.removeChild(t)})}function be(t,e){for(e=j(me(t,e));e.firstChild;)e=e.firstChild;return pe(e,t),e}function ye(t,e){return W(W(t).map(function(t){return t.hasChildNodes?be(W(t.childNodes),e):pe(t,e)}))}function xe(t){W(t).map(function(t){return t.parentNode}).filter(function(t,e,n){return n.indexOf(t)===e}).forEach(function(t){me(t,t.childNodes),we(t)})}se.resolve=function(t){var e=this;if(e.state===ie){if(t===e)throw new TypeError(\"Promise settled with itself.\");var n=!1;try{var i=t&&t.then;if(null!==t&&I(t)&&$(i))return void i.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},se.reject=function(t){var e=this;if(e.state===ie){if(t===e)throw new TypeError(\"Promise settled with itself.\");e.state=1,e.value=t,e.notify()}},se.notify=function(){var o=this;re(function(){if(o.state!==ie)for(;o.deferred.length;){var t=o.deferred.shift(),e=t[0],n=t[1],i=t[2],r=t[3];try{0===o.state?$(e)?i(e.call(void 0,o.value)):i(o.value):1===o.state&&($(n)?i(n.call(void 0,o.value)):r(o.value))}catch(t){r(t)}}})},se.then=function(n,i){var r=this;return new oe(function(t,e){r.deferred.push([n,i,t,e]),r.notify()})},se.catch=function(t){return this.then(void 0,t)};var ke=/^\\s*<(\\w+|!)[^>]*>/,$e=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;function Ie(t){var e=$e.exec(t);if(e)return document.createElement(e[1]);var n=document.createElement(\"div\");return ke.test(t)?n.insertAdjacentHTML(\"beforeend\",t.trim()):n.textContent=t,1<n.childNodes.length?W(n.childNodes):n.firstChild}function Se(t,e){if(t&&1===t.nodeType)for(e(t),t=t.firstElementChild;t;)Se(t,e),t=t.nextElementSibling}function Te(t,e){return O(t)?Ce(t)?j(Ie(t)):xt(t,e):j(t)}function Ee(t,e){return O(t)?Ce(t)?W(Ie(t)):kt(t,e):W(t)}function Ce(t){return\"<\"===t[0]||t.match(/^\\s*</)}function Ae(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];ze(t,e,\"add\")}function _e(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];ze(t,e,\"remove\")}function Ne(t,e){it(t,\"class\",function(t){return(t||\"\").replace(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"g\"),\"\")})}function Me(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];e[0]&&_e(t,e[0]),e[1]&&Ae(t,e[1])}function Oe(t,e){return e&&W(t).some(function(t){return t.classList.contains(e.split(\" \")[0])})}function De(t){for(var i=[],e=arguments.length-1;0<e--;)i[e]=arguments[e+1];if(i.length){var r=O(X(i=Be(i)))?[]:i.pop();i=i.filter(Boolean),W(t).forEach(function(t){for(var e=t.classList,n=0;n<i.length;n++)Pe.Force?e.toggle.apply(e,[i[n]].concat(r)):e[(P(r)?!e.contains(i[n]):r)?\"add\":\"remove\"](i[n])})}}function ze(t,n,i){(n=Be(n).filter(Boolean)).length&&W(t).forEach(function(t){var e=t.classList;Pe.Multiple?e[i].apply(e,n):n.forEach(function(t){return e[i](t)})})}function Be(t){return t.reduce(function(t,e){return t.concat.call(t,O(e)&&b(e,\" \")?e.trim().split(\" \"):e)},[])}var Pe={get Multiple(){return this.get(\"_multiple\")},get Force(){return this.get(\"_force\")},get:function(t){if(!c(this,t)){var e=document.createElement(\"_\").classList;e.add(\"a\",\"b\"),e.toggle(\"c\",!1),this._multiple=e.contains(\"b\"),this._force=!e.contains(\"c\")}return this[t]}},He={\"animation-iteration-count\":!0,\"column-count\":!0,\"fill-opacity\":!0,\"flex-grow\":!0,\"flex-shrink\":!0,\"font-weight\":!0,\"line-height\":!0,opacity:!0,order:!0,orphans:!0,\"stroke-dasharray\":!0,\"stroke-dashoffset\":!0,widows:!0,\"z-index\":!0,zoom:!0};function Le(t,e,r){return W(t).map(function(n){if(O(e)){if(e=Ye(e),P(r))return je(n,e);r||D(r)?n.style[e]=z(r)&&!He[e]?r+\"px\":r:n.style.removeProperty(e)}else{if(k(e)){var i=Fe(n);return e.reduce(function(t,e){return t[e]=i[Ye(e)],t},{})}I(e)&&K(e,function(t,e){return Le(n,e,t)})}return n})[0]}function Fe(t,e){return(t=j(t)).ownerDocument.defaultView.getComputedStyle(t,e)}function je(t,e,n){return Fe(t,n)[e]}var We={};function Ve(t){var e=document.documentElement;if(!at)return Fe(e).getPropertyValue(\"--uk-\"+t);if(!(t in We)){var n=pe(e,document.createElement(\"div\"));Ae(n,\"uk-\"+t),We[t]=je(n,\"content\",\":before\").replace(/^[\"'](.*)[\"']$/,\"$1\"),we(n)}return We[t]}var Re={};function Ye(t){var e=Re[t];return e=e||(Re[t]=function(t){t=d(t);var e=document.documentElement.style;if(t in e)return t;var n,i=qe.length;for(;i--;)if((n=\"-\"+qe[i]+\"-\"+t)in e)return n}(t)||t)}var qe=[\"webkit\",\"moz\",\"ms\"];function Ue(t,s,a,h){return void 0===a&&(a=400),void 0===h&&(h=\"linear\"),ne.all(W(t).map(function(o){return new ne(function(n,i){for(var t in s){var e=Le(o,t);\"\"===e&&Le(o,t,e)}var r=setTimeout(function(){return qt(o,\"transitionend\")},a);Yt(o,\"transitionend transitioncanceled\",function(t){var e=t.type;clearTimeout(r),_e(o,\"uk-transition\"),Le(o,{\"transition-property\":\"\",\"transition-duration\":\"\",\"transition-timing-function\":\"\"}),\"transitioncanceled\"===e?i():n()},{self:!0}),Ae(o,\"uk-transition\"),Le(o,U({\"transition-property\":Object.keys(s).map(Ye).join(\",\"),\"transition-duration\":a+\"ms\",\"transition-timing-function\":h},s))})}))}var Xe={start:Ue,stop:function(t){return qt(t,\"transitionend\"),ne.resolve()},cancel:function(t){qt(t,\"transitioncanceled\")},inProgress:function(t){return Oe(t,\"uk-transition\")}},Ke=\"uk-animation-\",Ge=\"uk-cancel-animation\";function Je(t,e,n,a,h){var c=arguments;return void 0===n&&(n=200),ne.all(W(t).map(function(s){return new ne(function(i,r){if(Oe(s,Ge))requestAnimationFrame(function(){return ne.resolve().then(function(){return Je.apply(void 0,c).then(i,r)})});else{var t=e+\" \"+Ke+(h?\"leave\":\"enter\");w(e,Ke)&&(a&&(t+=\" uk-transform-origin-\"+a),h&&(t+=\" \"+Ke+\"reverse\")),o(),Yt(s,\"animationend animationcancel\",function(t){var e=t.type,n=!1;\"animationcancel\"===e?(r(),o()):(i(),ne.resolve().then(function(){n=!0,o()})),requestAnimationFrame(function(){n||(Ae(s,Ge),requestAnimationFrame(function(){return _e(s,Ge)}))})},{self:!0}),Le(s,\"animationDuration\",n+\"ms\"),Ae(s,t)}function o(){Le(s,\"animationDuration\",\"\"),Ne(s,Ke+\"\\\\S*\")}})}))}var Ze=new RegExp(Ke+\"(enter|leave)\"),Qe={in:function(t,e,n,i){return Je(t,e,n,i,!1)},out:function(t,e,n,i){return Je(t,e,n,i,!0)},inProgress:function(t){return Ze.test(it(t,\"class\"))},cancel:function(t){qt(t,\"animationcancel\")}},tn={width:[\"x\",\"left\",\"right\"],height:[\"y\",\"top\",\"bottom\"]};function en(t,e,u,l,d,n,i,r){u=ln(u),l=ln(l);var f={element:u,target:l};if(!t||!e)return f;var p=rn(t),m=rn(e),g=m;if(un(g,u,p,-1),un(g,l,m,1),d=dn(d,p.width,p.height),n=dn(n,m.width,m.height),d.x+=n.x,d.y+=n.y,g.left+=d.x,g.top+=d.y,i){var o=[rn(yn(t))];r&&o.unshift(rn(r)),K(tn,function(t,s){var a=t[0],h=t[1],c=t[2];!0!==i&&!b(i,a)||o.some(function(i){var t=u[a]===h?-p[s]:u[a]===c?p[s]:0,e=l[a]===h?m[s]:l[a]===c?-m[s]:0;if(g[h]<i[h]||g[h]+p[s]>i[c]){var n=p[s]/2,r=\"center\"===l[a]?-m[s]/2:0;return\"center\"===u[a]&&(o(n,r)||o(-n,-r))||o(t,e)}function o(e,t){var n=g[h]+e+t-2*d[a];if(n>=i[h]&&n+p[s]<=i[c])return g[h]=n,[\"element\",\"target\"].forEach(function(t){f[t][a]=e?f[t][a]===tn[s][1]?tn[s][2]:tn[s][1]:f[t][a]}),!0}})})}return nn(t,g),f}function nn(n,i){if(n=j(n),!i)return rn(n);var r=nn(n),o=Le(n,\"position\");[\"left\",\"top\"].forEach(function(t){if(t in i){var e=Le(n,t);Le(n,t,i[t]-r[t]+F(\"absolute\"===o&&\"auto\"===e?on(n)[t]:e))}})}function rn(t){if(!(t=j(t)))return{};var e,n,i=yn(t),r=i.pageYOffset,o=i.pageXOffset;if(T(t)){var s=t.innerHeight,a=t.innerWidth;return{top:r,left:o,height:s,width:a,bottom:r+s,right:o+a}}Ht(t)||\"none\"!==Le(t,\"display\")||(e=it(t,\"style\"),n=it(t,\"hidden\"),it(t,{style:(e||\"\")+\";display:block !important;\",hidden:null}));var h=t.getBoundingClientRect();return P(e)||it(t,{style:e,hidden:n}),{height:h.height,width:h.width,top:h.top+r,left:h.left+o,bottom:h.bottom+r,right:h.right+o}}function on(i){var r=(i=j(i)).offsetParent||function(t){return xn(t).documentElement}(i),o=nn(r),t=[\"top\",\"left\"].reduce(function(t,e){var n=p(e);return t[e]-=o[e]+F(Le(i,\"margin\"+n))+F(Le(r,\"border\"+n+\"Width\")),t},nn(i));return{top:t.top,left:t.left}}var sn=hn(\"height\"),an=hn(\"width\");function hn(i){var r=p(i);return function(t,e){if(t=j(t),P(e)){if(T(t))return t[\"inner\"+r];if(E(t)){var n=t.documentElement;return Math.max(n[\"offset\"+r],n[\"scroll\"+r])}return(e=\"auto\"===(e=Le(t,i))?t[\"offset\"+r]:F(e)||0)-cn(i,t)}Le(t,i,e||0===e?+e+cn(i,t)+\"px\":\"\")}}function cn(t,n,e){return void 0===e&&(e=\"border-box\"),Le(n,\"boxSizing\")===e?tn[t].slice(1).map(p).reduce(function(t,e){return t+F(Le(n,\"padding\"+e))+F(Le(n,\"border\"+e+\"Width\"))},0):0}function un(o,s,a,h){K(tn,function(t,e){var n=t[0],i=t[1],r=t[2];s[n]===r?o[i]+=a[e]*h:\"center\"===s[n]&&(o[i]+=a[e]*h/2)})}function ln(t){var e=/left|center|right/,n=/top|center|bottom/;return 1===(t=(t||\"\").split(\" \")).length&&(t=e.test(t[0])?t.concat([\"center\"]):n.test(t[0])?[\"center\"].concat(t):[\"center\",\"center\"]),{x:e.test(t[0])?t[0]:\"center\",y:n.test(t[1])?t[1]:\"center\"}}function dn(t,e,n){var i=(t||\"\").split(\" \"),r=i[0],o=i[1];return{x:r?F(r)*(u(r,\"%\")?e/100:1):0,y:o?F(o)*(u(o,\"%\")?n/100:1):0}}function fn(t){switch(t){case\"left\":return\"right\";case\"right\":return\"left\";case\"top\":return\"bottom\";case\"bottom\":return\"top\";default:return t}}function pn(t,e,n){if(void 0===e&&(e=0),void 0===n&&(n=0),!Ht(t))return!1;var i=yn(t=j(t)),r=t.getBoundingClientRect(),o={top:-e,left:-n,bottom:e+sn(i),right:n+an(i)};return tt(r,o)||et({x:r.left,y:r.top},o)}function mn(t,e){if(void 0===e&&(e=0),!Ht(t))return 0;var n=yn(t=j(t)),i=xn(t),r=t.offsetHeight+e,o=vn(t)[0],s=sn(n),a=s+Math.min(0,o-s),h=Math.max(0,s-(sn(i)+e-(o+r)));return Z((a+n.pageYOffset-o)/((a+(r-(h<s?h:0)))/100)/100)}function gn(t,e){if(T(t=j(t))||E(t)){var n=yn(t);(0,n.scrollTo)(n.pageXOffset,e)}else t.scrollTop=e}function vn(t){var e=[0,0];do{if(e[0]+=t.offsetTop,e[1]+=t.offsetLeft,\"fixed\"===Le(t,\"position\")){var n=yn(t);return e[0]+=n.pageYOffset,e[1]+=n.pageXOffset,e}}while(t=t.offsetParent);return e}function wn(t,e,n){return void 0===e&&(e=\"width\"),void 0===n&&(n=window),z(t)?+t:u(t,\"vh\")?bn(sn(yn(n)),t):u(t,\"vw\")?bn(an(yn(n)),t):u(t,\"%\")?bn(rn(n)[e],t):F(t)}function bn(t,e){return t*F(e)/100}function yn(t){return T(t)?t:xn(t).defaultView}function xn(t){return j(t).ownerDocument}var kn={reads:[],writes:[],read:function(t){return this.reads.push(t),In(),t},write:function(t){return this.writes.push(t),In(),t},clear:function(t){return Tn(this.reads,t)||Tn(this.writes,t)},flush:$n};function $n(){Sn(kn.reads),Sn(kn.writes.splice(0,kn.writes.length)),kn.scheduled=!1,(kn.reads.length||kn.writes.length)&&In(!0)}function In(t){void 0===t&&(t=!1),kn.scheduled||(kn.scheduled=!0,t?ne.resolve().then($n):requestAnimationFrame($n))}function Sn(t){for(var e;e=t.shift();)e()}function Tn(t,e){var n=t.indexOf(e);return!!~n&&!!t.splice(n,1)}function En(){}function Cn(t,e){return(e.y-t.y)/(e.x-t.x)}En.prototype={positions:[],position:null,init:function(){var i=this;this.positions=[],this.position=null;var r=!1;this.unbind=Vt(document,\"mousemove\",function(n){r||(setTimeout(function(){var t=Date.now(),e=i.positions.length;e&&100<t-i.positions[e-1].time&&i.positions.splice(0,e),i.positions.push({time:t,x:n.pageX,y:n.pageY}),5<i.positions.length&&i.positions.shift(),r=!1},5),r=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(t){if(this.positions.length<2)return!1;var e=nn(t),n=X(this.positions),i=this.positions[0];if(e.left<=n.x&&n.x<=e.right&&e.top<=n.y&&n.y<=e.bottom)return!1;var r=[[{x:e.left,y:e.top},{x:e.right,y:e.bottom}],[{x:e.right,y:e.top},{x:e.left,y:e.bottom}]];return e.right<=n.x||(e.left>=n.x?(r[0].reverse(),r[1].reverse()):e.bottom<=n.y?r[0].reverse():e.top>=n.y&&r[1].reverse()),!!r.reduce(function(t,e){return t+(Cn(i,e[0])<Cn(n,e[0])&&Cn(i,e[1])>Cn(n,e[1]))},0)}};var An={};function _n(t,e,n){return An.computed($(t)?t.call(n,n):t,$(e)?e.call(n,n):e)}function Nn(t,e){return t=t&&!k(t)?[t]:t,e?t?t.concat(e):k(e)?e:[e]:t}function Mn(e,n,i){var r={};if($(n)&&(n=n.options),n.extends&&(e=Mn(e,n.extends,i)),n.mixins)for(var t=0,o=n.mixins.length;t<o;t++)e=Mn(e,n.mixins[t],i);for(var s in e)h(s);for(var a in n)c(e,a)||h(a);function h(t){r[t]=(An[t]||function(t,e){return P(e)?t:e})(e[t],n[t],i)}return r}function On(t,e){var n;void 0===e&&(e=[]);try{return t?w(t,\"{\")?JSON.parse(t):e.length&&!b(t,\":\")?((n={})[e[0]]=t,n):t.split(\";\").reduce(function(t,e){var n=e.split(/:(.*)/),i=n[0],r=n[1];return i&&!P(r)&&(t[i.trim()]=r.trim()),t},{}):{}}catch(t){return{}}}An.events=An.created=An.beforeConnect=An.connected=An.beforeDisconnect=An.disconnected=An.destroy=Nn,An.args=function(t,e){return!1!==e&&Nn(e||t)},An.update=function(t,e){return G(Nn(t,$(e)?{read:e}:e),\"order\")},An.props=function(t,e){return k(e)&&(e=e.reduce(function(t,e){return t[e]=String,t},{})),An.methods(t,e)},An.computed=An.methods=function(t,e){return e?t?U({},t,e):e:t},An.data=function(e,n,t){return t?_n(e,n,t):n?e?function(t){return _n(e,n,t)}:n:e};function Dn(t){this.id=++zn,this.el=j(t)}var zn=0;function Bn(t,e){try{t.contentWindow.postMessage(JSON.stringify(U({event:\"command\"},e)),\"*\")}catch(t){}}Dn.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Dn.prototype.isHTML5=function(){return\"VIDEO\"===this.el.tagName},Dn.prototype.isIFrame=function(){return\"IFRAME\"===this.el.tagName},Dn.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/)},Dn.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\\.com\\/video\\/.*/)},Dn.prototype.enableApi=function(){var e=this;if(this.ready)return this.ready;var n,i=this.isYoutube(),r=this.isVimeo();return i||r?this.ready=new ne(function(t){Yt(e.el,\"load\",function(){if(i){var t=function(){return Bn(e.el,{event:\"listening\",id:e.id})};n=setInterval(t,100),t()}}),function(i){return new ne(function(n){Yt(window,\"message\",function(t,e){return n(e)},!1,function(t){var e=t.data;if(e&&O(e)){try{e=JSON.parse(e)}catch(t){return}return e&&i(e)}})})}(function(t){return i&&t.id===e.id&&\"onReady\"===t.event||r&&Number(t.player_id)===e.id}).then(function(){t(),n&&clearInterval(n)}),it(e.el,\"src\",e.el.src+(b(e.el.src,\"?\")?\"&\":\"?\")+(i?\"enablejsapi=1\":\"api=1&player_id=\"+e.id))}):ne.resolve()},Dn.prototype.play=function(){var t=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return Bn(t.el,{func:\"playVideo\",method:\"play\"})});else if(this.isHTML5())try{var e=this.el.play();e&&e.catch(Q)}catch(t){}},Dn.prototype.pause=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"pauseVideo\",method:\"pause\"})}):this.isHTML5()&&this.el.pause())},Dn.prototype.mute=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"mute\",method:\"setVolume\",value:0})}):this.isHTML5()&&(this.el.muted=!0,it(this.el,\"muted\",\"\")))};var Pn=\"IntersectionObserver\"in window?window.IntersectionObserver:function(){function t(e,t){var n=this;void 0===t&&(t={});var i=t.rootMargin;void 0===i&&(i=\"0 0\"),this.targets=[];var r,o=(i||\"0 0\").split(\" \").map(F),s=o[0],a=o[1];this.offsetTop=s,this.offsetLeft=a,this.apply=function(){r=r||requestAnimationFrame(function(){return setTimeout(function(){var t=n.takeRecords();t.length&&e(t,n),r=!1})})},this.off=Vt(window,\"scroll resize load\",this.apply,{passive:!0,capture:!0})}return t.prototype.takeRecords=function(){var n=this;return this.targets.filter(function(t){var e=pn(t.target,n.offsetTop,n.offsetLeft);if(null===t.isIntersecting||e^t.isIntersecting)return t.isIntersecting=e,!0})},t.prototype.observe=function(t){this.targets.push({target:t,isIntersecting:null}),this.apply()},t.prototype.disconnect=function(){this.targets=[],this.off()},t}();function Hn(t){return!(!w(t,\"uk-\")&&!w(t,\"data-uk-\"))&&f(t.replace(\"data-uk-\",\"\").replace(\"uk-\",\"\"))}function Ln(t){this._init(t)}var Fn,jn,Wn,Vn,Rn,Yn,qn,Un,Xn;function Kn(t,e){if(t)for(var n in t)t[n]._connected&&t[n]._callUpdate(e)}function Gn(t,e){var n={},i=t.args;void 0===i&&(i=[]);var r=t.props;void 0===r&&(r={});var o=t.el;if(!r)return n;for(var s in r){var a=d(s),h=st(o,a);if(!P(h)){if(h=r[s]===Boolean&&\"\"===h||ti(r[s],h),\"target\"===a&&(!h||w(h,\"_\")))continue;n[s]=h}}var c=On(st(o,e),i);for(var u in c){var l=f(u);void 0!==r[l]&&(n[l]=ti(r[l],c[u]))}return n}function Jn(i,r,o){Object.defineProperty(i,r,{enumerable:!0,get:function(){var t=i._computeds,e=i.$props,n=i.$el;return c(t,r)||(t[r]=(o.get||o).call(i,e,n)),t[r]},set:function(t){var e=i._computeds;e[r]=o.set?o.set.call(i,t):t,P(e[r])&&delete e[r]}})}function Zn(e,n,i){S(n)||(n={name:i,handler:n});var t=n.name,r=n.el,o=n.handler,s=n.capture,a=n.passive,h=n.delegate,c=n.filter,u=n.self;r=$(r)?r.call(e):r||e.$el,k(r)?r.forEach(function(t){return Zn(e,U({},n,{el:t}),i)}):!r||c&&!c.call(e)||e._events.push(Vt(r,t,h?O(h)?h:h.call(e):null,O(o)?e[o]:o.bind(e),{passive:a,capture:s,self:u}))}function Qn(t,e){return t.every(function(t){return!t||!c(t,e)})}function ti(t,e){return t===Boolean?H(e):t===Number?L(e):\"list\"===t?V(e):t?t(e):e}Ln.util=Object.freeze({ajax:ae,getImage:he,transition:Ue,Transition:Xe,animate:Je,Animation:Qe,attr:it,hasAttr:rt,removeAttr:ot,data:st,addClass:Ae,removeClass:_e,removeClasses:Ne,replaceClass:Me,hasClass:Oe,toggleClass:De,positionAt:en,offset:nn,position:on,height:sn,width:an,boxModelAdjust:cn,flipPosition:fn,isInView:pn,scrolledOver:mn,scrollTop:gn,offsetPosition:vn,toPx:wn,ready:ce,index:ue,getIndex:le,empty:de,html:fe,prepend:function(e,t){return(e=Te(e)).hasChildNodes()?ve(t,function(t){return e.insertBefore(t,e.firstChild)}):pe(e,t)},append:pe,before:me,after:ge,remove:we,wrapAll:be,wrapInner:ye,unwrap:xe,fragment:Ie,apply:Se,$:Te,$$:Ee,isIE:at,isRtl:ht,hasTouch:lt,pointerDown:dt,pointerMove:ft,pointerUp:pt,pointerEnter:mt,pointerLeave:gt,pointerCancel:vt,on:Vt,off:Rt,once:Yt,trigger:qt,createEvent:Ut,toEventTargets:Zt,isTouch:Qt,getEventPos:te,fastdom:kn,isVoidElement:Pt,isVisible:Ht,selInput:Lt,isInput:Ft,filter:jt,within:Wt,hasOwn:c,hyphenate:d,camelize:f,ucfirst:p,startsWith:w,endsWith:u,includes:b,findIndex:x,isArray:k,isFunction:$,isObject:I,isPlainObject:S,isWindow:T,isDocument:E,isJQuery:C,isNode:A,isNodeCollection:N,isBoolean:M,isString:O,isNumber:D,isNumeric:z,isEmpty:B,isUndefined:P,toBoolean:H,toNumber:L,toFloat:F,toNode:j,toNodes:W,toList:V,toMs:R,isEqual:Y,swap:q,assign:U,last:X,each:K,sortBy:G,uniqueBy:J,clamp:Z,noop:Q,intersectRect:tt,pointInRect:et,Dimensions:nt,MouseTracker:En,mergeOptions:Mn,parseOptions:On,Player:Dn,Promise:ne,Deferred:ee,IntersectionObserver:Pn,query:wt,queryAll:bt,find:xt,findAll:kt,matches:_t,closest:Mt,parents:Ot,escape:zt,css:Le,getStyles:Fe,getStyle:je,getCssVar:Ve,propName:Ye}),Ln.data=\"__uikit__\",Ln.prefix=\"uk-\",Ln.options={},Wn=(Fn=Ln).data,Fn.use=function(t){if(!t.installed)return t.call(null,this),t.installed=!0,this},Fn.mixin=function(t,e){(e=(O(e)?Fn.component(e):e)||this).options=Mn(e.options,t)},Fn.extend=function(t){function e(t){this._init(t)}return t=t||{},((e.prototype=Object.create(this.prototype)).constructor=e).options=Mn(this.options,t),e.super=this,e.extend=this.extend,e},Fn.update=function(t,e){(function t(e,n){e&&e!==document.body&&e.parentNode&&(t(e.parentNode,n),n(e.parentNode))})(t=t?j(t):document.body,function(t){return Kn(t[Wn],e)}),Se(t,function(t){return Kn(t[Wn],e)})},Object.defineProperty(Fn,\"container\",{get:function(){return jn||document.body},set:function(t){jn=Te(t)}}),(Vn=Ln).prototype._callHook=function(t){var e=this,n=this.$options[t];n&&n.forEach(function(t){return t.call(e)})},Vn.prototype._callConnected=function(){this._connected||(this._data={},this._computeds={},this._initProps(),this._callHook(\"beforeConnect\"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook(\"connected\"),this._callUpdate())},Vn.prototype._callDisconnected=function(){this._connected&&(this._callHook(\"beforeDisconnect\"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook(\"disconnected\"),this._connected=!1)},Vn.prototype._callUpdate=function(t){var o=this;void 0===t&&(t=\"update\");var s=t.type||t;b([\"update\",\"resize\"],s)&&this._callWatches();var e=this.$options.update,n=this._frames,a=n.reads,h=n.writes;e&&e.forEach(function(t,e){var n=t.read,i=t.write,r=t.events;\"update\"!==s&&!b(r,s)||(n&&!b(kn.reads,a[e])&&(a[e]=kn.read(function(){var t=o._connected&&n.call(o,o._data,s);!1===t&&i?kn.clear(h[e]):S(t)&&U(o._data,t)})),i&&!b(kn.writes,h[e])&&(h[e]=kn.write(function(){return o._connected&&i.call(o,o._data,s)})))})},Yn=0,(Rn=Ln).prototype._init=function(t){(t=t||{}).data=function(t,e){var n=t.data,i=(t.el,e.args),r=e.props;if(void 0===r&&(r={}),n=k(n)?B(i)?void 0:n.slice(0,i.length).reduce(function(t,e,n){return S(e)?U(t,e):t[i[n]]=e,t},{}):n)for(var o in n)P(n[o])?delete n[o]:n[o]=r[o]?ti(r[o],n[o]):n[o];return n}(t,this.constructor.options),this.$options=Mn(this.constructor.options,t,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=Yn++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook(\"created\"),t.el&&this.$mount(t.el)},Rn.prototype._initData=function(){var t=this.$options.data;for(var e in void 0===t&&(t={}),t)this.$props[e]=this[e]=t[e]},Rn.prototype._initMethods=function(){var t=this.$options.methods;if(t)for(var e in t)this[e]=t[e].bind(this)},Rn.prototype._initComputeds=function(){var t=this.$options.computed;if(this._computeds={},t)for(var e in t)Jn(this,e,t[e])},Rn.prototype._callWatches=function(){var t=this.$options.computed,e=this._computeds;for(var n in e){var i=e[n];delete e[n],t[n].watch&&!Y(i,this[n])&&t[n].watch.call(this,this[n],i)}},Rn.prototype._initProps=function(t){var e;for(e in t=t||Gn(this.$options,this.$name))P(t[e])||(this.$props[e]=t[e]);var n=[this.$options.computed,this.$options.methods];for(e in this.$props)e in t&&Qn(n,e)&&(this[e]=this.$props[e])},Rn.prototype._initEvents=function(){var n=this,t=this.$options.events;t&&t.forEach(function(t){if(c(t,\"handler\"))Zn(n,t);else for(var e in t)Zn(n,t[e],e)})},Rn.prototype._unbindEvents=function(){this._events.forEach(function(t){return t()}),this._events=[]},Rn.prototype._initObserver=function(){var n=this,t=this.$options,i=t.attrs,e=t.props,r=t.el;if(!this._observer&&e&&!1!==i){i=k(i)?i:Object.keys(e),this._observer=new MutationObserver(function(){var e=Gn(n.$options,n.$name);i.some(function(t){return!P(e[t])&&e[t]!==n.$props[t]})&&n.$reset()});var o=i.map(function(t){return d(t)}).concat(this.$name);this._observer.observe(r,{attributes:!0,attributeFilter:o.concat(o.map(function(t){return\"data-\"+t}))})}},Un=(qn=Ln).data,Xn={},qn.component=function(s,t){if(!t)return S(Xn[s])&&(Xn[s]=qn.extend(Xn[s])),Xn[s];qn[s]=function(t,n){for(var e=arguments.length,i=Array(e);e--;)i[e]=arguments[e];var r=qn.component(s);return S(t)?new r({data:t}):r.options.functional?new r({data:[].concat(i)}):t&&t.nodeType?o(t):Ee(t).map(o)[0];function o(t){var e=qn.getComponent(t,s);if(e){if(!n)return e;e.$destroy()}return new r({el:t,data:n})}};var e=S(t)?U({},t):t.options;if(e.name=s,e.install&&e.install(qn,e,s),qn._initialized&&!e.functional){var n=d(s);kn.read(function(){return qn[s](\"[uk-\"+n+\"],[data-uk-\"+n+\"]\")})}return Xn[s]=S(t)?e:t},qn.getComponents=function(t){return t&&t[Un]||{}},qn.getComponent=function(t,e){return qn.getComponents(t)[e]},qn.connect=function(t){if(t[Un])for(var e in t[Un])t[Un][e]._callConnected();for(var n=0;n<t.attributes.length;n++){var i=Hn(t.attributes[n].name);i&&i in Xn&&qn[i](t)}},qn.disconnect=function(t){for(var e in t[Un])t[Un][e]._callDisconnected()},function(i){var r=i.data;i.prototype.$mount=function(t){var e=this.$options.name;t[r]||(t[r]={}),t[r][e]||((t[r][e]=this).$el=this.$options.el=this.$options.el||t,Wt(t,document)&&this._callConnected())},i.prototype.$emit=function(t){this._callUpdate(t)},i.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},i.prototype.$destroy=function(t){void 0===t&&(t=!1);var e=this.$options,n=e.el,i=e.name;n&&this._callDisconnected(),this._callHook(\"destroy\"),n&&n[r]&&(delete n[r][i],B(n[r])||delete n[r],t&&we(this.$el))},i.prototype.$create=function(t,e,n){return i[t](e,n)},i.prototype.$update=i.update,i.prototype.$getComponent=i.getComponent;var e={};Object.defineProperties(i.prototype,{$container:Object.getOwnPropertyDescriptor(i,\"container\"),$name:{get:function(){var t=this.$options.name;return e[t]||(e[t]=i.prefix+d(t)),e[t]}}})}(Ln);var ei={connected:function(){Oe(this.$el,this.$name)||Ae(this.$el,this.$name)}},ni={props:{cls:Boolean,animation:\"list\",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:\"linear\",queued:!1,initProps:{overflow:\"\",height:\"\",paddingTop:\"\",paddingBottom:\"\",marginTop:\"\",marginBottom:\"\"},hideProps:{overflow:\"hidden\",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(t){return!!t.animation[0]},hasTransition:function(t){var e=t.animation;return this.hasAnimation&&!0===e[0]}},methods:{toggleElement:function(c,u,l){var d=this;return new ne(function(t){c=W(c);function e(t){return ne.all(t.map(function(t){return d._toggleElement(t,u,l)}))}var n,i=c.filter(function(t){return d.isToggled(t)}),r=c.filter(function(t){return!b(i,t)});if(d.queued&&P(l)&&P(u)&&d.hasAnimation&&!(c.length<2)){var o=document.body,s=o.scrollTop,a=i[0],h=Qe.inProgress(a)&&Oe(a,\"uk-animation-leave\")||Xe.inProgress(a)&&\"0px\"===a.style.height;n=e(i),h||(n=n.then(function(){var t=e(r);return o.scrollTop=s,t}))}else n=e(r.concat(i));n.then(t,Q)})},toggleNow:function(e,n){var i=this;return new ne(function(t){return ne.all(W(e).map(function(t){return i._toggleElement(t,n,!1)})).then(t,Q)})},isToggled:function(t){var e=W(t||this.$el);return this.cls?Oe(e,this.cls.split(\" \")[0]):!rt(e,\"hidden\")},updateAria:function(t){!1===this.cls&&it(t,\"aria-hidden\",!this.isToggled(t))},_toggleElement:function(t,e,n){var i=this;if(e=M(e)?e:Qe.inProgress(t)?Oe(t,\"uk-animation-leave\"):Xe.inProgress(t)?\"0px\"===t.style.height:!this.isToggled(t),!qt(t,\"before\"+(e?\"show\":\"hide\"),[this]))return ne.reject();var r=($(n)?n:!1!==n&&this.hasAnimation?this.hasTransition?function(t){var s=t.isToggled,a=t.duration,h=t.initProps,c=t.hideProps,u=t.transition,l=t._toggle;return function(t,e){var n=Xe.inProgress(t),i=t.hasChildNodes?F(Le(t.firstElementChild,\"marginTop\"))+F(Le(t.lastElementChild,\"marginBottom\")):0,r=Ht(t)?sn(t)+(n?0:i):0;Xe.cancel(t),s(t)||l(t,!0),sn(t,\"\"),kn.flush();var o=sn(t)+(n?0:i);return sn(t,r),(e?Xe.start(t,U({},h,{overflow:\"hidden\",height:o}),Math.round(a*(1-r/o)),u):Xe.start(t,c,Math.round(a*(r/o)),u).then(function(){return l(t,!1)})).then(function(){return Le(t,h)})}}(this):function(t){var n=t.animation,i=t.duration,r=t.origin,o=t._toggle;return function(t,e){return Qe.cancel(t),e?(o(t,!0),Qe.in(t,n[0],i,r)):Qe.out(t,n[1]||n[0],i,r).then(function(){return o(t,!1)})}}(this):this._toggle)(t,e);qt(t,e?\"show\":\"hide\",[this]);function o(){qt(t,e?\"shown\":\"hidden\",[i]),i.$update(t)}return r?r.then(o):ne.resolve(o())},_toggle:function(t,e){var n;t&&(e=Boolean(e),this.cls?(n=b(this.cls,\" \")||e!==Oe(t,this.cls))&&De(t,this.cls,b(this.cls,\" \")?void 0:e):(n=e===rt(t,\"hidden\"))&&it(t,\"hidden\",e?null:\"\"),Ee(\"[autofocus]\",t).some(function(t){return Ht(t)?t.focus()||!0:t.blur()}),this.updateAria(t),n&&this.$update(t))}}};var ii={mixins:[ei,ni],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:\"> *\",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:\"uk-open\",toggle:\"> .uk-accordion-title\",content:\"> .uk-accordion-content\",transition:\"ease\"},computed:{items:function(t,e){return Ee(t.targets,e)}},events:[{name:\"click\",delegate:function(){return this.targets+\" \"+this.$props.toggle},handler:function(t){t.preventDefault(),this.toggle(ue(Ee(this.targets+\" \"+this.$props.toggle,this.$el),t.current))}}],connected:function(){if(!1!==this.active){var t=this.items[Number(this.active)];t&&!Oe(t,this.clsOpen)&&this.toggle(t,!1)}},update:function(){var e=this;this.items.forEach(function(t){return e._toggle(Te(e.content,t),Oe(t,e.clsOpen))});var t=!this.collapsible&&!Oe(this.items,this.clsOpen)&&this.items[0];t&&this.toggle(t,!1)},methods:{toggle:function(r,o){var s=this,t=le(r,this.items),a=jt(this.items,\".\"+this.clsOpen);(r=this.items[t])&&[r].concat(!this.multiple&&!b(a,r)&&a||[]).forEach(function(t){var e=t===r,n=e&&!Oe(t,s.clsOpen);if(n||!e||s.collapsible||!(a.length<2)){De(t,s.clsOpen,n);var i=t._wrapper?t._wrapper.firstElementChild:Te(s.content,t);t._wrapper||(t._wrapper=be(i,\"<div>\"),it(t._wrapper,\"hidden\",n?\"\":null)),s._toggle(i,!0),s.toggleElement(t._wrapper,n,o).then(function(){Oe(t,s.clsOpen)===n&&(n||s._toggle(i,!1),t._wrapper=null,xe(i))})}})}}},ri={mixins:[ei,ni],args:\"animation\",props:{close:String},data:{animation:[!0],selClose:\".uk-alert-close\",duration:150,hideProps:U({opacity:0},ni.data.hideProps)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.close()}}],methods:{close:function(){var t=this;this.toggleElement(this.$el).then(function(){return t.$destroy(!0)})}}};function oi(r){ce(function(){var n;r.update(),Vt(window,\"load resize\",function(){return r.update(null,\"resize\")}),Vt(document,\"loadedmetadata load\",function(t){var e=t.target;return r.update(e,\"resize\")},!0),Vt(window,\"scroll\",function(t){if(!n){n=!0,kn.write(function(){return n=!1});var e=t.target;r.update(1!==e.nodeType?document.body:e,t.type)}},{passive:!0,capture:!0});var e,i=0;Vt(document,\"animationstart\",function(t){var e=t.target;(Le(e,\"animationName\")||\"\").match(/^uk-.*(left|right)/)&&(i++,Le(document.body,\"overflowX\",\"hidden\"),setTimeout(function(){--i||Le(document.body,\"overflowX\",\"\")},R(Le(e,\"animationDuration\"))+100))},!0),Vt(document,dt,function(t){if(e&&e(),Qt(t)){var r=te(t),o=\"tagName\"in t.target?t.target:t.target.parentNode;e=Yt(document,pt+\" \"+vt,function(t){var e=te(t),n=e.x,i=e.y;(o&&n&&100<Math.abs(r.x-n)||i&&100<Math.abs(r.y-i))&&setTimeout(function(){qt(o,\"swipe\"),qt(o,\"swipe\"+function(t,e,n,i){return Math.abs(t-n)>=Math.abs(e-i)?0<t-n?\"Left\":\"Right\":0<e-i?\"Up\":\"Down\"}(r.x,r.y,n,i))})}),\"touchstart\"===dt&&(Le(document.body,\"cursor\",\"pointer\"),Yt(document,pt+\" \"+vt,function(){return setTimeout(function(){return Le(document.body,\"cursor\",\"\")},50)}))}},{passive:!0})})}var si,ai={args:\"autoplay\",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(t){return\"inview\"===t.autoplay}},connected:function(){this.inView&&!rt(this.$el,\"preload\")&&(this.$el.preload=\"none\"),this.player=new Dn(this.$el),this.automute&&this.player.mute()},update:{read:function(){return!!this.player&&{visible:Ht(this.$el)&&\"hidden\"!==Le(this.$el,\"visibility\"),inView:this.inView&&pn(this.$el)}},write:function(t){var e=t.visible,n=t.inView;!e||this.inView&&!n?this.player.pause():(!0===this.autoplay||this.inView&&n)&&this.player.play()},events:[\"resize\",\"scroll\"]}},hi={mixins:[ei,ai],props:{width:Number,height:Number},data:{automute:!0},update:{read:function(){var t=this.$el,e=t.parentNode,n=e.offsetHeight,i=e.offsetWidth,r=nt.cover({width:this.width||t.naturalWidth||t.videoWidth||t.clientWidth,height:this.height||t.naturalHeight||t.videoHeight||t.clientHeight},{width:i+(i%2?1:0),height:n+(n%2?1:0)});return!(!r.width||!r.height)&&r},write:function(t){var e=t.height,n=t.width;Le(this.$el,{height:e,width:n})},events:[\"resize\"]}},ci={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:\"bottom-\"+(ht?\"right\":\"left\"),flip:!0,offset:!1,clsPos:\"\"},computed:{pos:function(t){var e=t.pos;return(e+(b(e,\"-\")?\"\":\"-center\")).split(\"-\")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(t,e,n){var i;Ne(t,this.clsPos+\"-(top|bottom|left|right)(-[a-z]+)?\"),Le(t,{top:\"\",left:\"\"});var r=this.offset,o=this.getAxis();z(r)||(r=(i=Te(r))?nn(i)[\"x\"===o?\"left\":\"top\"]-nn(e)[\"x\"===o?\"right\":\"bottom\"]:0);var s=en(t,e,\"x\"===o?fn(this.dir)+\" \"+this.align:this.align+\" \"+fn(this.dir),\"x\"===o?this.dir+\" \"+this.align:this.align+\" \"+this.dir,\"x\"===o?\"\"+(\"left\"===this.dir?-r:r):\" \"+(\"top\"===this.dir?-r:r),null,this.flip,n).target,a=s.x,h=s.y;this.dir=\"x\"===o?a:h,this.align=\"x\"===o?h:a,De(t,this.clsPos+\"-\"+this.dir+\"-\"+this.align,!1===this.offset)},getAxis:function(){return\"top\"===this.dir||\"bottom\"===this.dir?\"y\":\"x\"}}},ui={mixins:[ci,ni],args:\"pos\",props:{mode:\"list\",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:[\"click\",\"hover\"],toggle:\"- *\",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:[\"uk-animation-fade\"],cls:\"uk-open\"},computed:{boundary:function(t,e){return wt(t.boundary,e)},clsDrop:function(t){return t.clsDrop||\"uk-\"+this.$options.name},clsPos:function(){return this.clsDrop}},created:function(){this.tracker=new En},connected:function(){Ae(this.$el,this.clsDrop);var t=this.$props.toggle;this.toggle=t&&this.$create(\"toggle\",wt(t,this.$el),{target:this.$el,mode:this.mode}),this.toggle||qt(this.$el,\"updatearia\")},events:[{name:\"click\",delegate:function(){return\".\"+this.clsDrop+\"-close\"},handler:function(t){t.preventDefault(),this.hide(!1)}},{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.defaultPrevented,n=t.current.hash;e||!n||Wt(n,this.$el)||this.hide(!1)}},{name:\"beforescroll\",handler:function(){this.hide(!1)}},{name:\"toggle\",self:!0,handler:function(t,e){t.preventDefault(),this.isToggled()?this.hide(!1):this.show(e,!1)}},{name:mt,filter:function(){return b(this.mode,\"hover\")},handler:function(t){Qt(t)||(si&&si!==this&&si.toggle&&b(si.toggle.mode,\"hover\")&&!Wt(t.target,si.toggle.$el)&&!et({x:t.pageX,y:t.pageY},nn(si.$el))&&si.hide(!1),t.preventDefault(),this.show(this.toggle))}},{name:\"toggleshow\",handler:function(t,e){e&&!b(e.target,this.$el)||(t.preventDefault(),this.show(e||this.toggle))}},{name:\"togglehide \"+gt,handler:function(t,e){Qt(t)||e&&!b(e.target,this.$el)||(t.preventDefault(),this.toggle&&b(this.toggle.mode,\"hover\")&&this.hide())}},{name:\"beforeshow\",self:!0,handler:function(){this.clearTimers(),Qe.cancel(this.$el),this.position()}},{name:\"show\",self:!0,handler:function(){var i=this;this.tracker.init(),qt(this.$el,\"updatearia\");var t=li(document,\"click\",function(t){var e=t.defaultPrevented,n=t.target;e||Wt(n,i.$el)||i.toggle&&Wt(n,i.toggle.$el)||i.hide(!1)});Yt(this.$el,\"hide\",t,{self:!0})}},{name:\"beforehide\",self:!0,handler:function(){this.clearTimers()}},{name:\"hide\",handler:function(t){var e=t.target;this.$el===e?(si=this.isActive()?null:si,qt(this.$el,\"updatearia\"),this.tracker.cancel()):si=null===si&&Wt(e,this.$el)&&this.isToggled()?this:si}},{name:\"updatearia\",self:!0,handler:function(t,e){t.preventDefault(),this.updateAria(this.$el),(e||this.toggle)&&(it((e||this.toggle).$el,\"aria-expanded\",this.isToggled()),De(this.toggle.$el,this.cls,this.isToggled()))}}],update:{write:function(){this.isToggled()&&!Qe.inProgress(this.$el)&&this.position()},events:[\"resize\"]},methods:{show:function(e,n){var i=this;void 0===n&&(n=!0);function r(){return!i.isToggled()&&i.toggleElement(i.$el,!0)}function t(){if(i.toggle=e||i.toggle,i.clearTimers(),!i.isActive())if(n&&si&&si!==i&&si.isDelaying)i.showTimer=setTimeout(i.show,10);else{if(i.isParentOf(si)){if(!si.hideTimer)return;si.hide(!1)}else if(i.isChildOf(si))si.clearTimers();else if(si&&!i.isChildOf(si)&&!i.isParentOf(si))for(var t;si&&si!==t&&!i.isChildOf(si);)(t=si).hide(!1);n&&i.delayShow?i.showTimer=setTimeout(r,i.delayShow):r(),si=i}}e&&this.toggle&&e.$el!==this.toggle.$el?(Yt(this.$el,\"hide\",t),this.hide(!1)):t()},hide:function(t){var e=this;void 0===t&&(t=!0);function n(){return e.toggleNow(e.$el,!1)}this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),t&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):t&&this.delayHide?this.hideTimer=setTimeout(n,this.delayHide):n()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return si===this},isChildOf:function(t){return t&&t!==this&&Wt(this.$el,t.$el)},isParentOf:function(t){return t&&t!==this&&Wt(t.$el,this.$el)},position:function(){Ne(this.$el,this.clsDrop+\"-(stack|boundary)\"),Le(this.$el,{top:\"\",left:\"\",display:\"block\"}),De(this.$el,this.clsDrop+\"-boundary\",this.boundaryAlign);var t=nn(this.boundary),e=this.boundaryAlign?t:nn(this.toggle.$el);if(\"justify\"===this.align){var n=\"y\"===this.getAxis()?\"width\":\"height\";Le(this.$el,n,e[n])}else this.$el.offsetWidth>Math.max(t.right-e.left,e.right-t.left)&&Ae(this.$el,this.clsDrop+\"-stack\");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),Le(this.$el,\"display\",\"\")}}};function li(t,e,n){var i=Yt(t,e,function(){return i=Vt(t,e,n)},!0);return function(){return i()}}var di={extends:ui},fi={mixins:[ei],args:\"target\",props:{target:Boolean},data:{target:!1},computed:{input:function(t,e){return Te(Lt,e)},state:function(){return this.input.nextElementSibling},target:function(t,e){var n=t.target;return n&&(!0===n&&this.input.parentNode===e&&this.input.nextElementSibling||wt(n,e))}},update:function(){var t=this.target,e=this.input;if(t){var n,i=Ft(t)?\"value\":\"textContent\",r=t[i],o=e.files&&e.files[0]?e.files[0].name:_t(e,\"select\")&&(n=Ee(\"option\",e).filter(function(t){return t.selected})[0])?n.textContent:e.value;r!==o&&(t[i]=o)}},events:[{name:\"change\",handler:function(){this.$emit()}},{name:\"reset\",el:function(){return Mt(this.$el,\"form\")},handler:function(){this.$emit()}}]},pi={update:{read:function(t){var e=pn(this.$el);if(!e||t.isInView===e)return!1;t.isInView=e},write:function(){this.$el.src=this.$el.src},events:[\"scroll\",\"resize\"]}},mi={props:{margin:String,firstColumn:Boolean},data:{margin:\"uk-margin-small-top\",firstColumn:\"uk-first-column\"},update:{read:function(t){var e=this.$el.children;if(!e.length||!Ht(this.$el))return t.rows=[[]];t.rows=gi(e),t.stacks=!t.rows.some(function(t){return 1<t.length})},write:function(t){var i=this;t.rows.forEach(function(t,n){return t.forEach(function(t,e){De(t,i.margin,0!==n),De(t,i.firstColumn,0===e)})})},events:[\"resize\"]}};function gi(t){for(var e=[[]],n=0;n<t.length;n++){var i=t[n],r=vi(i);if(r.height)for(var o=e.length-1;0<=o;o--){var s=e[o];if(!s[0]){s.push(i);break}var a=void 0;if(a=s[0].offsetParent===i.offsetParent?vi(s[0]):(r=vi(i,!0),vi(s[0],!0)),r.top>=a.bottom-1&&r.top!==a.top){e.push([i]);break}if(r.bottom>a.top){if(r.left<a.left&&!ht){s.unshift(i);break}s.push(i);break}if(0===o){e.unshift([i]);break}}}return e}function vi(t,e){var n;void 0===e&&(e=!1);var i=t.offsetTop,r=t.offsetLeft,o=t.offsetHeight;return e&&(i=(n=vn(t))[0],r=n[1]),{top:i,left:r,height:o,bottom:i+o}}var wi={extends:mi,mixins:[ei],name:\"grid\",props:{masonry:Boolean,parallax:Number},data:{margin:\"uk-grid-margin\",clsStack:\"uk-grid-stack\",masonry:!1,parallax:0},computed:{length:function(t,e){return e.children.length},parallax:function(t){var e=t.parallax;return e&&this.length?Math.abs(e):\"\"}},connected:function(){this.masonry&&Ae(this.$el,\"uk-flex-top uk-flex-wrap-top\")},update:[{read:function(t){var r=t.rows;(this.masonry||this.parallax)&&(r=r.map(function(t){return G(t,\"offsetLeft\")}),ht&&r.map(function(t){return t.reverse()}));var e=r.some(function(t){return t.some(Xe.inProgress)}),n=!1,i=\"\";if(this.masonry&&this.length){var o=0;n=r.reduce(function(n,t,i){return n[i]=t.map(function(t,e){return 0===i?0:F(n[i-1][e])+(o-F(r[i-1][e]&&r[i-1][e].offsetHeight))}),o=t.reduce(function(t,e){return Math.max(t,e.offsetHeight)},0),n},[]),i=function(t){return Math.max.apply(Math,t.reduce(function(n,t){return t.forEach(function(t,e){return n[e]=(n[e]||0)+t.offsetHeight}),n},[]))}(r)+function(t,e){var n=W(t.children),i=n.filter(function(t){return Oe(t,e)})[0];return F(i?Le(i,\"marginTop\"):Le(n[0],\"paddingLeft\"))}(this.$el,this.margin)*(r.length-1)}return{padding:this.parallax&&function(t,e,n){for(var i=0,r=0,o=0,s=e.length-1;0<=s;s--)for(var a=i;a<e[s].length;a++){var h=e[s][a],c=h.offsetTop+sn(h)+(n&&-n[s][a]);r=Math.max(r,c),o=Math.max(o,c+(a%2?t:t/8)),i++}return o-r}(this.parallax,r,n),rows:r,translates:n,height:!e&&i}},write:function(t){var e=t.stacks,n=t.height,i=t.padding;De(this.$el,this.clsStack,e),Le(this.$el,\"paddingBottom\",i),!1!==n&&Le(this.$el,\"height\",n)},events:[\"resize\"]},{read:function(t){var e=t.height;return{scrolled:!!this.parallax&&mn(this.$el,e?e-sn(this.$el):0)*this.parallax}},write:function(t){var e=t.rows,i=t.scrolled,r=t.translates;!1===i&&!r||e.forEach(function(t,n){return t.forEach(function(t,e){return Le(t,\"transform\",i||r?\"translateY(\"+((r&&-r[n][e])+(i?e%2?i:i/8:0))+\"px)\":\"\")})})},events:[\"scroll\",\"resize\"]}]};var bi=at?{props:{selMinHeight:String},data:{selMinHeight:!1,forceHeight:!1},computed:{elements:function(t,e){var n=t.selMinHeight;return n?Ee(n,e):[e]}},update:[{read:function(){Le(this.elements,\"height\",\"\")},order:-5,events:[\"resize\"]},{write:function(){var n=this;this.elements.forEach(function(t){var e=F(Le(t,\"minHeight\"));e&&(n.forceHeight||Math.round(e+cn(\"height\",t,\"content-box\"))>=t.offsetHeight)&&Le(t,\"height\",e)})},order:5,events:[\"resize\"]}]}:{},yi={mixins:[bi],args:\"target\",props:{target:String,row:Boolean},data:{target:\"> *\",row:!0,forceHeight:!0},computed:{elements:function(t,e){return Ee(t.target,e)}},update:{read:function(){return{rows:(this.row?gi(this.elements):[this.elements]).map(xi)}},write:function(t){t.rows.forEach(function(t){var n=t.heights;return t.elements.forEach(function(t,e){return Le(t,\"minHeight\",n[e])})})},events:[\"resize\"]}};function xi(t){var e;if(t.length<2)return{heights:[\"\"],elements:t};var n=ki(t),i=n.heights,r=n.max,o=t.some(function(t){return t.style.minHeight}),s=t.some(function(t,e){return!t.style.minHeight&&i[e]<r});return o&&s&&(Le(t,\"minHeight\",\"\"),e=ki(t),i=e.heights,r=e.max),{heights:i=t.map(function(t,e){return i[e]===r&&F(t.style.minHeight).toFixed(2)!==r.toFixed(2)?\"\":r}),elements:t}}function ki(t){var e=t.map(function(t){return nn(t).height-cn(\"height\",t,\"content-box\")});return{heights:e,max:Math.max.apply(null,e)}}var $i={mixins:[bi],props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{read:function(t){var e=t.minHeight;if(!Ht(this.$el))return!1;var n=\"\",i=cn(\"height\",this.$el,\"content-box\");if(this.expand){if(this.$el.dataset.heightExpand=\"\",Te(\"[data-height-expand]\")!==this.$el)return!1;n=sn(window)-(Ii(document.documentElement)-Ii(this.$el))-i||\"\"}else{if(n=\"calc(100vh\",this.offsetTop){var r=nn(this.$el).top;n+=0<r&&r<sn(window)/2?\" - \"+r+\"px\":\"\"}!0===this.offsetBottom?n+=\" - \"+Ii(this.$el.nextElementSibling)+\"px\":z(this.offsetBottom)?n+=\" - \"+this.offsetBottom+\"vh\":this.offsetBottom&&u(this.offsetBottom,\"px\")?n+=\" - \"+F(this.offsetBottom)+\"px\":O(this.offsetBottom)&&(n+=\" - \"+Ii(wt(this.offsetBottom,this.$el))+\"px\"),n+=(i?\" - \"+i+\"px\":\"\")+\")\"}return{minHeight:n,prev:e}},write:function(t){var e=t.minHeight,n=t.prev;Le(this.$el,{minHeight:e}),e!==n&&this.$update(this.$el,\"resize\"),this.minHeight&&F(Le(this.$el,\"minHeight\"))<this.minHeight&&Le(this.$el,\"minHeight\",this.minHeight)},events:[\"resize\"]}};function Ii(t){return t&&nn(t).height||0}var Si={args:\"src\",props:{id:Boolean,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String,strokeAnimation:Boolean,focusable:Boolean,attributes:\"list\"},data:{ratio:1,include:[\"style\",\"class\",\"focusable\"],class:\"\",strokeAnimation:!1},beforeConnect:function(){var t,e=this;if(this.class+=\" uk-svg\",!this.icon&&b(this.src,\"#\")){var n=this.src.split(\"#\");1<n.length&&(t=n,this.src=t[0],this.icon=t[1])}this.svg=this.getSvg().then(function(t){return e.applyAttributes(t),e.svgEl=function(t,e){{if(Pt(e)||\"CANVAS\"===e.tagName){it(e,\"hidden\",!0);var n=e.nextElementSibling;return _i(t,n)?n:ge(e,t)}var i=e.lastElementChild;return _i(t,i)?i:pe(e,t)}}(t,e.$el)},Q)},disconnected:function(){var e=this;Pt(this.$el)&&it(this.$el,\"hidden\",null),this.svg&&this.svg.then(function(t){return(!e._connected||t!==e.svgEl)&&we(t)},Q),this.svg=this.svgEl=null},update:{read:function(){return!!(this.strokeAnimation&&this.svgEl&&Ht(this.svgEl))},write:function(){!function(t){var e=Ai(t);e&&t.style.setProperty(\"--uk-animation-stroke\",e)}(this.svgEl)},type:[\"resize\"]},methods:{getSvg:function(){var e=this;return function(n){if(Ti[n])return Ti[n];return Ti[n]=new ne(function(e,t){n?w(n,\"data:\")?e(decodeURIComponent(n.split(\",\")[1])):ae(n).then(function(t){return e(t.response)},function(){return t(\"SVG not found.\")}):t()})}(this.src).then(function(t){return function(t,e){e&&b(t,\"<symbol\")&&(t=function(t,e){if(!Ci[t]){var n;for(Ci[t]={};n=Ei.exec(t);)Ci[t][n[3]]='<svg xmlns=\"http://www.w3.org/2000/svg\"'+n[1]+\"svg>\";Ei.lastIndex=0}return Ci[t][e]}(t,e)||t);return(t=Te(t.substr(t.indexOf(\"<svg\"))))&&t.hasChildNodes()&&t}(t,e.icon)||ne.reject(\"SVG not found.\")})},applyAttributes:function(n){var i=this;for(var t in this.$options.props)this[t]&&b(this.include,t)&&it(n,t,this[t]);for(var e in this.attributes){var r=this.attributes[e].split(\":\",2),o=r[0],s=r[1];it(n,o,s)}this.id||ot(n,\"id\");var a=[\"width\",\"height\"],h=[this.width,this.height];h.some(function(t){return t})||(h=a.map(function(t){return it(n,t)}));var c=it(n,\"viewBox\");c&&!h.some(function(t){return t})&&(h=c.split(\" \").slice(2)),h.forEach(function(t,e){(t=(0|t)*i.ratio)&&it(n,a[e],t),t&&!h[1^e]&&ot(n,a[1^e])}),it(n,\"data-svg\",this.icon||this.src)}}},Ti={};var Ei=/<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g,Ci={};function Ai(t){return Math.ceil(Math.max.apply(Math,Ee(\"[stroke]\",t).map(function(t){return t.getTotalLength&&t.getTotalLength()||0}).concat([0])))}function _i(t,e){return it(t,\"data-svg\")===it(e,\"data-svg\")}var Ni={},Mi={spinner:'<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>',totop:'<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>',marker:'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>',\"close-icon\":'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>',\"close-large\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>',\"navbar-toggle-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>',\"overlay-icon\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>',\"pagination-next\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>',\"pagination-previous\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>',\"search-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>',\"search-large\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>',\"search-navbar\":'<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>',\"slidenav-next\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>',\"slidenav-next-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>',\"slidenav-previous\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>',\"slidenav-previous-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>'},Oi={install:function(r){r.icon.add=function(t,e){var n,i=O(t)?((n={})[t]=e,n):t;K(i,function(t,e){Mi[e]=t,delete Ni[e]}),r._initialized&&Se(document.body,function(t){return K(r.getComponents(t),function(t){t.$options.isIcon&&t.icon in i&&t.$reset()})})}},extends:Si,args:\"icon\",props:[\"icon\"],data:{include:[\"focusable\"]},isIcon:!0,beforeConnect:function(){Ae(this.$el,\"uk-icon\")},methods:{getSvg:function(){var t=function(t){if(!Mi[t])return null;Ni[t]||(Ni[t]=Te(Mi[t].trim()));return Ni[t].cloneNode(!0)}(function(t){return ht?q(q(t,\"left\",\"right\"),\"previous\",\"next\"):t}(this.icon));return t?ne.resolve(t):ne.reject(\"Icon not found.\")}}},Di={args:!1,extends:Oi,data:function(t){return{icon:d(t.constructor.options.name)}},beforeConnect:function(){Ae(this.$el,this.$name)}},zi={extends:Di,beforeConnect:function(){Ae(this.$el,\"uk-slidenav\")},computed:{icon:function(t,e){var n=t.icon;return Oe(e,\"uk-slidenav-large\")?n+\"-large\":n}}},Bi={extends:Di,computed:{icon:function(t,e){var n=t.icon;return Oe(e,\"uk-search-icon\")&&Ot(e,\".uk-search-large\").length?\"search-large\":Ot(e,\".uk-search-navbar\").length?\"search-navbar\":n}}},Pi={extends:Di,computed:{icon:function(){return\"close-\"+(Oe(this.$el,\"uk-close-large\")?\"large\":\"icon\")}}},Hi={extends:Di,connected:function(){var e=this;this.svg.then(function(t){return 1!==e.ratio&&Le(Te(\"circle\",t),\"strokeWidth\",1/e.ratio)},Q)}};var Li={args:\"dataSrc\",props:{dataSrc:String,dataSrcset:Boolean,sizes:String,width:Number,height:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:\"\",dataSrcset:!1,sizes:!1,width:!1,height:!1,offsetTop:\"50vh\",offsetLeft:0,target:!1},computed:{cacheKey:function(t){var e=t.dataSrc;return this.$name+\".\"+e},width:function(t){var e=t.width,n=t.dataWidth;return e||n},height:function(t){var e=t.height,n=t.dataHeight;return e||n},sizes:function(t){var e=t.sizes,n=t.dataSizes;return e||n},isImg:function(t,e){return qi(e)},target:{get:function(t){var e=t.target;return[this.$el].concat(bt(e,this.$el))},watch:function(){this.observe()}},offsetTop:function(t){return wn(t.offsetTop,\"height\")},offsetLeft:function(t){return wn(t.offsetLeft,\"width\")}},connected:function(){Xi[this.cacheKey]?Fi(this.$el,Xi[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&Fi(this.$el,function(t,e,n){var i;n&&(i=nt.ratio({width:t,height:e},\"width\",wn(Wi(n))),t=i.width,e=i.height);return'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"'+t+'\" height=\"'+e+'\"></svg>'}(this.width,this.height,this.sizes)),this.observer=new Pn(this.load,{rootMargin:this.offsetTop+\"px \"+this.offsetLeft+\"px\"}),requestAnimationFrame(this.observe)},disconnected:function(){this.observer.disconnect()},update:{read:function(t){var e=this,n=t.image;if(n||\"complete\"!==document.readyState||this.load(this.observer.takeRecords()),this.isImg)return!1;n&&n.then(function(t){return t&&\"\"!==t.currentSrc&&Fi(e.$el,Ui(t))})},write:function(t){if(this.dataSrcset&&1!==window.devicePixelRatio){var e=Le(this.$el,\"backgroundSize\");!e.match(/^(auto\\s?)+$/)&&F(e)!==t.bgSize||(t.bgSize=function(t,e){var n=wn(Wi(e)),i=(t.match(Yi)||[]).map(F).sort(function(t,e){return t-e});return i.filter(function(t){return n<=t})[0]||i.pop()||\"\"}(this.dataSrcset,this.sizes),Le(this.$el,\"backgroundSize\",t.bgSize+\"px\"))}},events:[\"resize\"]},methods:{load:function(t){var e=this;t.some(function(t){return P(t.isIntersecting)||t.isIntersecting})&&(this._data.image=he(this.dataSrc,this.dataSrcset,this.sizes).then(function(t){return Fi(e.$el,Ui(t),t.srcset,t.sizes),Xi[e.cacheKey]=Ui(t),t},Q),this.observer.disconnect())},observe:function(){var e=this;!this._data.image&&this._connected&&this.target.forEach(function(t){return e.observer.observe(t)})}}};function Fi(t,e,n,i){if(qi(t))i&&(t.sizes=i),n&&(t.srcset=n),e&&(t.src=e);else if(e){!b(t.style.backgroundImage,e)&&(Le(t,\"backgroundImage\",\"url(\"+zt(e)+\")\"),qt(t,Ut(\"load\",!1)))}}var ji=/\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;function Wi(t){var e,n;for(ji.lastIndex=0;e=ji.exec(t);)if(!e[1]||window.matchMedia(e[1]).matches){e=w(n=e[2],\"calc\")?n.substring(5,n.length-1).replace(Vi,function(t){return wn(t)}).replace(/ /g,\"\").match(Ri).reduce(function(t,e){return t+ +e},0):n;break}return e||\"100vw\"}var Vi=/\\d+(?:\\w+|%)/g,Ri=/[+-]?(\\d+)/g;var Yi=/\\s+\\d+w\\s*(?:,|$)/g;function qi(t){return\"IMG\"===t.tagName}function Ui(t){return t.currentSrc||t.src}var Xi,Ki=\"__test__\";try{(Xi=window.sessionStorage||{})[Ki]=1,delete Xi[Ki]}catch(t){Xi={}}var Gi={props:{media:Boolean},data:{media:!1},computed:{matchMedia:function(){var t=function(t){if(O(t)){if(\"@\"===t[0])t=F(Ve(\"breakpoint-\"+t.substr(1)));else if(isNaN(t))return t}return!(!t||isNaN(t))&&\"(min-width: \"+t+\"px)\"}(this.media);return!t||window.matchMedia(t).matches}}};var Ji={mixins:[ei,Gi],props:{fill:String},data:{fill:\"\",clsWrapper:\"uk-leader-fill\",clsHide:\"uk-leader-hide\",attrFill:\"data-fill\"},computed:{fill:function(t){return t.fill||Ve(\"leader-fill-content\")}},connected:function(){var t;t=ye(this.$el,'<span class=\"'+this.clsWrapper+'\">'),this.wrapper=t[0]},disconnected:function(){xe(this.wrapper.childNodes)},update:{read:function(t){var e=t.changed,n=t.width,i=n;return{width:n=Math.floor(this.$el.offsetWidth/2),fill:this.fill,changed:e||i!==n,hide:!this.matchMedia}},write:function(t){De(this.wrapper,this.clsHide,t.hide),t.changed&&(t.changed=!1,it(this.wrapper,this.attrFill,new Array(t.width).join(t.fill)))},events:[\"resize\"]}},Zi={props:{container:Boolean},data:{container:!0},computed:{container:function(t){var e=t.container;return!0===e&&this.$container||e&&Te(e)}}},Qi=[],tr={mixins:[ei,Zi,ni],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:\"uk-open\",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(t,e){return Te(t.selPanel,e)},transitionElement:function(){return this.panel},bgClose:function(t){return t.bgClose&&this.panel}},beforeDisconnect:function(){this.isToggled()&&this.toggleNow(this.$el,!1)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.hide()}},{name:\"toggle\",self:!0,handler:function(t){t.defaultPrevented||(t.preventDefault(),this.toggle())}},{name:\"beforeshow\",self:!0,handler:function(t){if(b(Qi,this))return!1;!this.stack&&Qi.length?(ne.all(Qi.map(function(t){return t.hide()})).then(this.show),t.preventDefault()):Qi.push(this)}},{name:\"show\",self:!0,handler:function(){var r=this;an(window)-an(document)&&this.overlay&&Le(document.body,\"overflowY\",\"scroll\"),Ae(document.documentElement,this.clsPage),this.bgClose&&Yt(this.$el,\"hide\",li(document,\"click\",function(t){var e=t.defaultPrevented,n=t.target,i=X(Qi);e||i!==r||i.overlay&&!Wt(n,i.$el)||Wt(n,i.panel)||i.hide()}),{self:!0}),this.escClose&&Yt(this.$el,\"hide\",Vt(document,\"keydown\",function(t){var e=X(Qi);27===t.keyCode&&e===r&&(t.preventDefault(),e.hide())}),{self:!0})}},{name:\"hidden\",self:!0,handler:function(){var e=this;Qi.splice(Qi.indexOf(this),1),Qi.length||Le(document.body,\"overflowY\",\"\"),Qi.some(function(t){return t.clsPage===e.clsPage})||_e(document.documentElement,this.clsPage)}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){var e=this;return this.container&&this.$el.parentNode!==this.container?(pe(this.container,this.$el),new ne(function(t){return requestAnimationFrame(function(){return e.show().then(t)})})):this.toggleElement(this.$el,!0,er(this))},hide:function(){return this.toggleElement(this.$el,!1,er(this))}}};function er(t){var s=t.transitionElement,a=t._toggle;return function(r,o){return new ne(function(n,i){return Yt(r,\"show hide\",function(){r._reject&&r._reject(),r._reject=i,a(r,o);var t=Yt(s,\"transitionstart\",function(){Yt(s,\"transitionend transitioncancel\",n,{self:!0}),clearTimeout(e)},{self:!0}),e=setTimeout(function(){t(),n()},R(Le(s,\"transitionDuration\")))})})}}var nr={install:function(a){a.modal.dialog=function(t,e){var n=a.modal(' <div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">'+t+\"</div> </div> \",e);return n.show(),Vt(n.$el,\"hidden\",function(){return ne.resolve(function(){return n.$destroy(!0)})},{self:!0}),n},a.modal.alert=function(e,n){return n=U({bgClose:!1,escClose:!1,labels:a.modal.labels},n),new ne(function(t){return Vt(a.modal.dialog(' <div class=\"uk-modal-body\">'+(O(e)?e:fe(e))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>'+n.labels.ok+\"</button> </div> \",n).$el,\"hide\",t)})},a.modal.confirm=function(r,o){return o=U({bgClose:!1,escClose:!0,labels:a.modal.labels},o),new ne(function(e,t){var n=a.modal.dialog(' <form> <div class=\"uk-modal-body\">'+(O(r)?r:fe(r))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+o.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\" autofocus>'+o.labels.ok+\"</button> </div> </form> \",o),i=!1;Vt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(),i=!0,n.hide()}),Vt(n.$el,\"hide\",function(){i||t()})})},a.modal.prompt=function(t,o,s){return s=U({bgClose:!1,escClose:!0,labels:a.modal.labels},s),new ne(function(e){var n=a.modal.dialog(' <form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>'+(O(t)?t:fe(t))+'</label> <input class=\"uk-input\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+s.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\">'+s.labels.ok+\"</button> </div> </form> \",s),i=Te(\"input\",n.$el);i.value=o;var r=!1;Vt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(i.value),r=!0,n.hide()}),Vt(n.$el,\"hide\",function(){r||e(null)})})},a.modal.labels={ok:\"Ok\",cancel:\"Cancel\"}},mixins:[tr],data:{clsPage:\"uk-modal-page\",selPanel:\".uk-modal-dialog\",selClose:\".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full\"},events:[{name:\"show\",self:!0,handler:function(){Oe(this.panel,\"uk-margin-auto-vertical\")?Ae(this.$el,\"uk-flex\"):Le(this.$el,\"display\",\"block\"),sn(this.$el)}},{name:\"hidden\",self:!0,handler:function(){Le(this.$el,\"display\",\"\"),_e(this.$el,\"uk-flex\")}}]};var ir={extends:ii,data:{targets:\"> .uk-parent\",toggle:\"> a\",content:\"> ul\"}},rr={mixins:[ei,bi],props:{dropdown:String,mode:\"list\",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:\".uk-navbar-nav > li\",align:ht?\"right\":\"left\",clsDrop:\"uk-navbar-dropdown\",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:\"x\",boundary:!0,dropbar:!1,dropbarMode:\"slide\",dropbarAnchor:!1,duration:200,forceHeight:!0,selMinHeight:\".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle\"},computed:{boundary:function(t,e){var n=t.boundary,i=t.boundaryAlign;return!0===n||i?e:n},dropbarAnchor:function(t,e){return wt(t.dropbarAnchor,e)},pos:function(t){return\"bottom-\"+t.align},dropdowns:function(t,e){return Ee(t.dropdown+\" .\"+t.clsDrop,e)}},beforeConnect:function(){var t=this.$props.dropbar;this.dropbar=t&&(wt(t,this.$el)||Te(\"+ .uk-navbar-dropbar\",this.$el)||Te(\"<div></div>\")),this.dropbar&&(Ae(this.dropbar,\"uk-navbar-dropbar\"),\"slide\"===this.dropbarMode&&Ae(this.dropbar,\"uk-navbar-dropbar-slide\"))},disconnected:function(){this.dropbar&&we(this.dropbar)},update:function(){var e=this;this.$create(\"drop\",this.dropdowns.filter(function(t){return!e.getDropdown(t)}),U({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:\"mouseover\",delegate:function(){return this.dropdown},handler:function(t){var e=t.current,n=this.getActive();n&&n.toggle&&!Wt(n.toggle.$el,e)&&!n.tracker.movesTo(n.$el)&&n.hide(!1)}},{name:\"mouseleave\",el:function(){return this.dropbar},handler:function(){var t=this.getActive();t&&!this.dropdowns.some(function(t){return _t(t,\":hover\")})&&t.hide()}},{name:\"beforeshow\",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||ge(this.dropbarAnchor||this.$el,this.dropbar)}},{name:\"show\",capture:!0,filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=e.dir;this.clsDrop&&Ae(n,this.clsDrop+\"-dropbar\"),\"bottom\"===i&&this.transitionTo(n.offsetHeight+F(Le(n,\"marginTop\"))+F(Le(n,\"marginBottom\")),n)}},{name:\"beforehide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();_t(this.dropbar,\":hover\")&&i&&i.$el===n&&t.preventDefault()}},{name:\"hide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();(!i||i&&i.$el===n)&&this.transitionTo(0)}}],methods:{getActive:function(){var t=this.dropdowns.map(this.getDropdown).filter(function(t){return t&&t.isActive()})[0];return t&&b(t.mode,\"hover\")&&Wt(t.toggle.$el,this.$el)&&t},transitionTo:function(t,e){var n=this,i=this.dropbar,r=Ht(i)?sn(i):0;return Le(e=r<t&&e,\"clip\",\"rect(0,\"+e.offsetWidth+\"px,\"+r+\"px,0)\"),sn(i,r),Xe.cancel([e,i]),ne.all([Xe.start(i,{height:t},this.duration),Xe.start(e,{clip:\"rect(0,\"+e.offsetWidth+\"px,\"+t+\"px,0)\"},this.duration)]).catch(Q).then(function(){Le(e,{clip:\"\"}),n.$update(i)})},getDropdown:function(t){return this.$getComponent(t,\"drop\")||this.$getComponent(t,\"dropdown\")}}},or={mixins:[tr],args:\"mode\",props:{mode:String,flip:Boolean,overlay:Boolean},data:{mode:\"slide\",flip:!1,overlay:!1,clsPage:\"uk-offcanvas-page\",clsContainer:\"uk-offcanvas-container\",selPanel:\".uk-offcanvas-bar\",clsFlip:\"uk-offcanvas-flip\",clsContainerAnimation:\"uk-offcanvas-container-animation\",clsSidebarAnimation:\"uk-offcanvas-bar-animation\",clsMode:\"uk-offcanvas\",clsOverlay:\"uk-offcanvas-overlay\",selClose:\".uk-offcanvas-close\",container:!1},computed:{clsFlip:function(t){var e=t.flip,n=t.clsFlip;return e?n:\"\"},clsOverlay:function(t){var e=t.overlay,n=t.clsOverlay;return e?n:\"\"},clsMode:function(t){var e=t.mode;return t.clsMode+\"-\"+e},clsSidebarAnimation:function(t){var e=t.mode,n=t.clsSidebarAnimation;return\"none\"===e||\"reveal\"===e?\"\":n},clsContainerAnimation:function(t){var e=t.mode,n=t.clsContainerAnimation;return\"push\"!==e&&\"reveal\"!==e?\"\":n},transitionElement:function(t){return\"reveal\"===t.mode?this.panel.parentNode:this.panel}},events:[{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.current.hash;!t.defaultPrevented&&e&&Te(e,document.body)&&this.hide()}},{name:\"touchstart\",passive:!0,el:function(){return this.panel},handler:function(t){var e=t.targetTouches;1===e.length&&(this.clientY=e[0].clientY)}},{name:\"touchmove\",self:!0,passive:!1,filter:function(){return this.overlay},handler:function(t){t.cancelable&&t.preventDefault()}},{name:\"touchmove\",passive:!1,el:function(){return this.panel},handler:function(t){if(1===t.targetTouches.length){var e=event.targetTouches[0].clientY-this.clientY,n=this.panel,i=n.scrollTop,r=n.scrollHeight,o=n.clientHeight;(r<=o||0===i&&0<e||r-i<=o&&e<0)&&t.cancelable&&t.preventDefault()}}},{name:\"show\",self:!0,handler:function(){\"reveal\"!==this.mode||Oe(this.panel.parentNode,this.clsMode)||(be(this.panel,\"<div>\"),Ae(this.panel.parentNode,this.clsMode)),Le(document.documentElement,\"overflowY\",this.overlay?\"hidden\":\"\"),Ae(document.body,this.clsContainer,this.clsFlip),Le(document.body,\"touch-action\",\"pan-y pinch-zoom\"),Le(this.$el,\"display\",\"block\"),Ae(this.$el,this.clsOverlay),Ae(this.panel,this.clsSidebarAnimation,\"reveal\"!==this.mode?this.clsMode:\"\"),sn(document.body),Ae(document.body,this.clsContainerAnimation),this.clsContainerAnimation&&(sr().content+=\",user-scalable=0\")}},{name:\"hide\",self:!0,handler:function(){_e(document.body,this.clsContainerAnimation),Le(document.body,\"touch-action\",\"\")}},{name:\"hidden\",self:!0,handler:function(){this.clsContainerAnimation&&function(){var t=sr();t.content=t.content.replace(/,user-scalable=0$/,\"\")}(),\"reveal\"===this.mode&&xe(this.panel),_e(this.panel,this.clsSidebarAnimation,this.clsMode),_e(this.$el,this.clsOverlay),Le(this.$el,\"display\",\"\"),_e(document.body,this.clsContainer,this.clsFlip),Le(document.documentElement,\"overflowY\",\"\")}},{name:\"swipeLeft swipeRight\",handler:function(t){this.isToggled()&&u(t.type,\"Left\")^this.flip&&this.hide()}}]};function sr(){return Te('meta[name=\"viewport\"]',document.head)||pe(document.head,'<meta name=\"viewport\">')}var ar={mixins:[ei],props:{selContainer:String,selContent:String},data:{selContainer:\".uk-modal\",selContent:\".uk-modal-dialog\"},computed:{container:function(t,e){return Mt(e,t.selContainer)},content:function(t,e){return Mt(e,t.selContent)}},connected:function(){Le(this.$el,\"minHeight\",150)},update:{read:function(){return!(!this.content||!this.container)&&{current:F(Le(this.$el,\"maxHeight\")),max:Math.max(150,sn(this.container)-(nn(this.content).height-sn(this.$el)))}},write:function(t){var e=t.current,n=t.max;Le(this.$el,\"maxHeight\",n),Math.round(e)!==Math.round(n)&&qt(this.$el,\"resize\")},events:[\"resize\"]}},hr={props:[\"width\",\"height\"],connected:function(){Ae(this.$el,\"uk-responsive-width\")},update:{read:function(){return!!(Ht(this.$el)&&this.width&&this.height)&&{width:an(this.$el.parentNode),height:this.height}},write:function(t){sn(this.$el,nt.contain({height:this.height,width:this.width},t).height)},events:[\"resize\"]}},cr={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(e){var n=this;e=e&&Te(e)||document.body;var t=sn(document),i=sn(window),r=nn(e).top-this.offset;if(t<r+i&&(r=t-i),qt(this.$el,\"beforescroll\",[this,e])){var o=Date.now(),s=window.pageYOffset,a=function(){var t=s+(r-s)*function(t){return.5*(1-Math.cos(Math.PI*t))}(Z((Date.now()-o)/n.duration));gn(window,t),t!==r?requestAnimationFrame(a):qt(n.$el,\"scrolled\",[n,e])};a()}}},events:{click:function(t){t.defaultPrevented||(t.preventDefault(),this.scrollTo(zt(decodeURIComponent(this.$el.hash)).substr(1)))}}};var ur={args:\"cls\",props:{cls:String,target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:!1,target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:\"uk-scrollspy-inview\"}},computed:{elements:function(t,e){var n=t.target;return n?Ee(n,e):[e]}},update:[{write:function(){this.hidden&&Le(jt(this.elements,\":not(.\"+this.inViewClass+\")\"),\"visibility\",\"hidden\")}},{read:function(t){var n=this;t.update&&this.elements.forEach(function(t){var e=t._ukScrollspyState;(e=e||{cls:st(t,\"uk-scrollspy-class\")||n.cls}).show=pn(t,n.offsetTop,n.offsetLeft),t._ukScrollspyState=e})},write:function(r){var o=this;if(!r.update)return this.$emit(),r.update=!0;this.elements.forEach(function(t){var n=t._ukScrollspyState,e=n.cls;if(!n.show||n.inview||n.queued){if(!n.show&&(n.inview||n.queued)&&o.repeat){if(n.abort&&n.abort(),!n.inview)return;Le(t,\"visibility\",o.hidden?\"hidden\":\"\"),_e(t,o.inViewClass),De(t,e),qt(t,\"outview\"),o.$update(t),n.inview=!1}}else{var i=function(){Le(t,\"visibility\",\"\"),Ae(t,o.inViewClass),De(t,e),qt(t,\"inview\"),o.$update(t),n.inview=!0,n.abort&&n.abort()};o.delay?(n.queued=!0,r.promise=(r.promise||ne.resolve()).then(function(){return!n.inview&&new ne(function(t){var e=setTimeout(function(){i(),t()},r.promise||1===o.elements.length?o.delay:0);n.abort=function(){clearTimeout(e),t(),n.queued=!1}})})):i()}})},events:[\"scroll\",\"resize\"]}]},lr={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:\"uk-active\",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(t,e){return Ee('a[href^=\"#\"]',e).filter(function(t){return t.hash})},elements:function(t){var e=t.closest;return Mt(this.links,e||\"*\")},targets:function(){return Ee(this.links.map(function(t){return zt(t.hash).substr(1)}).join(\",\"))}},update:[{read:function(){this.scroll&&this.$create(\"scroll\",this.links,{offset:this.offset||0})}},{read:function(o){var s=this,a=window.pageYOffset+this.offset+1,h=sn(document)-sn(window)+this.offset;o.active=!1,this.targets.every(function(t,e){var n=nn(t).top,i=e+1===s.targets.length;if(!s.overflow&&(0===e&&a<n||i&&n+t.offsetTop<a))return!1;if(!i&&nn(s.targets[e+1]).top<=a)return!0;if(h<=a)for(var r=s.targets.length-1;e<r;r--)if(pn(s.targets[r])){t=s.targets[r];break}return!(o.active=Te(jt(s.links,'[href=\"#'+t.id+'\"]')))})},write:function(t){var e=t.active;this.links.forEach(function(t){return t.blur()}),_e(this.elements,this.cls),e&&qt(this.$el,\"active\",[e,Ae(this.closest?Mt(e,this.closest):e,this.cls)])},events:[\"scroll\",\"resize\"]}]},dr={mixins:[ei,Gi],props:{top:null,bottom:Boolean,offset:String,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:\"\",clsActive:\"uk-active\",clsInactive:\"\",clsFixed:\"uk-sticky-fixed\",clsBelow:\"uk-sticky-below\",selTarget:\"\",widthElement:!1,showOnUp:!1,targetOffset:!1},computed:{offset:function(t){return wn(t.offset)},selTarget:function(t,e){var n=t.selTarget;return n&&Te(n,e)||e},widthElement:function(t,e){return wt(t.widthElement,e)||this.placeholder},isActive:{get:function(){return Oe(this.selTarget,this.clsActive)},set:function(t){t&&!this.isActive?(Me(this.selTarget,this.clsInactive,this.clsActive),qt(this.$el,\"active\")):t||Oe(this.selTarget,this.clsInactive)||(Me(this.selTarget,this.clsActive,this.clsInactive),qt(this.$el,\"inactive\"))}}},connected:function(){this.placeholder=Te(\"+ .uk-sticky-placeholder\",this.$el)||Te('<div class=\"uk-sticky-placeholder\"></div>'),this.isFixed=!1,this.isActive=!1},disconnected:function(){this.isFixed&&(this.hide(),_e(this.selTarget,this.clsInactive)),we(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:\"load hashchange popstate\",el:window,handler:function(){var i=this;if(!1!==this.targetOffset&&location.hash&&0<window.pageYOffset){var r=Te(location.hash);r&&kn.read(function(){var t=nn(r).top,e=nn(i.$el).top,n=i.$el.offsetHeight;i.isFixed&&t<=e+n&&e<=t+r.offsetHeight&&gn(window,t-n-(z(i.targetOffset)?i.targetOffset:0)-i.offset)})}}}],update:[{read:function(t,e){var n=t.height;this.isActive&&\"update\"!==e&&(this.hide(),n=this.$el.offsetHeight,this.show()),n=this.isActive?n:this.$el.offsetHeight,this.topOffset=nn(this.isFixed?this.placeholder:this.$el).top,this.bottomOffset=this.topOffset+n;var i=fr(\"bottom\",this);return this.top=Math.max(F(fr(\"top\",this)),this.topOffset)-this.offset,this.bottom=i&&i-n,this.inactive=!this.matchMedia,{lastScroll:!1,height:n,margins:Le(this.$el,[\"marginTop\",\"marginBottom\",\"marginLeft\",\"marginRight\"])}},write:function(t){var e=t.height,n=t.margins,i=this.placeholder;Le(i,U({height:e},n)),Wt(i,document)||(ge(this.$el,i),it(i,\"hidden\",\"\")),this.isActive=this.isActive},events:[\"resize\"]},{read:function(t){var e=t.scroll;return void 0===e&&(e=0),this.width=(Ht(this.widthElement)?this.widthElement:this.$el).offsetWidth,this.scroll=window.pageYOffset,{dir:e<=this.scroll?\"down\":\"up\",scroll:this.scroll,visible:Ht(this.$el),top:vn(this.placeholder)[0]}},write:function(t,e){var n=this,i=t.initTimestamp;void 0===i&&(i=0);var r=t.dir,o=t.lastDir,s=t.lastScroll,a=t.scroll,h=t.top,c=t.visible,u=performance.now();if(!((t.lastScroll=a)<0||a===s||!c||this.disabled||this.showOnUp&&\"scroll\"!==e||((300<u-i||r!==o)&&(t.initScroll=a,t.initTimestamp=u),t.lastDir=r,this.showOnUp&&Math.abs(t.initScroll-a)<=30&&Math.abs(s-a)<=10)))if(this.inactive||a<this.top||this.showOnUp&&(a<=this.top||\"down\"===r||\"up\"===r&&!this.isFixed&&a<=this.bottomOffset)){if(!this.isFixed)return void(Qe.inProgress(this.$el)&&a<h&&(Qe.cancel(this.$el),this.hide()));this.isFixed=!1,this.animation&&a>this.topOffset?(Qe.cancel(this.$el),Qe.out(this.$el,this.animation).then(function(){return n.hide()},Q)):this.hide()}else this.isFixed?this.update():this.animation?(Qe.cancel(this.$el),this.show(),Qe.in(this.$el,this.animation).catch(Q)):this.show()},events:[\"resize\",\"scroll\"]}],methods:{show:function(){this.isFixed=!0,this.update(),it(this.placeholder,\"hidden\",null)},hide:function(){this.isActive=!1,_e(this.$el,this.clsFixed,this.clsBelow),Le(this.$el,{position:\"\",top:\"\",width:\"\"}),it(this.placeholder,\"hidden\",\"\")},update:function(){var t=0!==this.top||this.scroll>this.top,e=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(e=this.bottom-this.scroll),Le(this.$el,{position:\"fixed\",top:e+\"px\",width:this.width}),this.isActive=t,De(this.$el,this.clsBelow,this.scroll>this.bottomOffset),Ae(this.$el,this.clsFixed)}}};function fr(t,e){var n=e.$props,i=e.$el,r=e[t+\"Offset\"],o=n[t];if(o)return z(o)&&O(o)&&o.match(/^-?\\d/)?r+wn(o):nn(!0===o?i.parentNode:wt(o,i)).bottom}var pr,mr={mixins:[ni],args:\"connect\",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:\"~.uk-switcher\",toggle:\"> * > :first-child\",active:0,swiping:!0,cls:\"uk-active\",clsContainer:\"uk-switcher\",attrItem:\"uk-switcher-item\",queued:!0},computed:{connects:function(t,e){return bt(t.connect,e)},toggles:function(t,e){return Ee(t.toggle,e)}},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(e){e.preventDefault(),this.show(W(this.$el.children).filter(function(t){return Wt(e.current,t)})[0])}},{name:\"click\",el:function(){return this.connects},delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"swipeRight swipeLeft\",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(t){var e=t.type;this.show(u(e,\"Left\")?\"next\":\"previous\")}}],update:function(){var e=this;this.connects.forEach(function(t){return e.updateAria(t.children)});var t=this.$el.children;this.show(jt(t,\".\"+this.cls)[0]||t[this.active]||t[0]),this.swiping&&Le(this.connects,\"touch-action\",\"pan-y pinch-zoom\")},methods:{index:function(){return!B(this.connects)&&ue(jt(this.connects[0].children,\".\"+this.cls)[0])},show:function(t){for(var e,n,i=this,r=this.$el.children,o=r.length,s=this.index(),a=0<=s,h=\"previous\"===t?-1:1,c=le(t,r,s),u=0;u<o;u++,c=(c+h+o)%o)if(!_t(this.toggles[c],\".uk-disabled *, .uk-disabled, [disabled]\")){e=this.toggles[c],n=r[c];break}!n||0<=s&&Oe(n,this.cls)||s===c||(_e(r,this.cls),Ae(n,this.cls),it(this.toggles,\"aria-expanded\",!1),it(e,\"aria-expanded\",!0),this.connects.forEach(function(t){a?i.toggleElement([t.children[s],t.children[c]]):i.toggleNow(t.children[c])}))}}},gr={mixins:[ei],extends:mr,props:{media:Boolean},data:{media:960,attrItem:\"uk-tab-item\"},connected:function(){var t=Oe(this.$el,\"uk-tab-left\")?\"uk-tab-left\":!!Oe(this.$el,\"uk-tab-right\")&&\"uk-tab-right\";t&&this.$create(\"toggle\",this.$el,{cls:t,mode:\"media\",media:this.media})}},vr={mixins:[Gi,ni],args:\"target\",props:{href:String,target:null,mode:\"list\"},data:{href:!1,target:!1,mode:\"click\",queued:!0},computed:{target:function(t,e){var n=t.href,i=t.target;return(i=bt(i||n,e)).length&&i||[e]}},connected:function(){qt(this.target,\"updatearia\",[this])},events:[{name:mt+\" \"+gt,filter:function(){return b(this.mode,\"hover\")},handler:function(t){Qt(t)||this.toggle(\"toggle\"+(t.type===mt?\"show\":\"hide\"))}},{name:\"click\",filter:function(){return b(this.mode,\"click\")||lt&&b(this.mode,\"hover\")},handler:function(t){var e;(Mt(t.target,'a[href=\"#\"], a[href=\"\"]')||(e=Mt(t.target,\"a[href]\"))&&(this.cls||!Ht(this.target)||e.hash&&_t(this.target,e.hash)))&&t.preventDefault(),this.toggle()}}],update:{read:function(){return!(!b(this.mode,\"media\")||!this.media)&&{match:this.matchMedia}},write:function(t){var e=t.match,n=this.isToggled(this.target);(e?!n:n)&&this.toggle()},events:[\"resize\"]},methods:{toggle:function(t){qt(this.target,t||\"toggle\",[this])&&this.toggleElement(this.target)}}};Ln.version=\"3.2.0\",(pr=Ln).component(\"accordion\",ii),pr.component(\"alert\",ri),pr.component(\"cover\",hi),pr.component(\"drop\",ui),pr.component(\"dropdown\",di),pr.component(\"formCustom\",fi),pr.component(\"gif\",pi),pr.component(\"grid\",wi),pr.component(\"heightMatch\",yi),pr.component(\"heightViewport\",$i),pr.component(\"icon\",Oi),pr.component(\"img\",Li),pr.component(\"leader\",Ji),pr.component(\"margin\",mi),pr.component(\"modal\",nr),pr.component(\"nav\",ir),pr.component(\"navbar\",rr),pr.component(\"offcanvas\",or),pr.component(\"overflowAuto\",ar),pr.component(\"responsive\",hr),pr.component(\"scroll\",cr),pr.component(\"scrollspy\",ur),pr.component(\"scrollspyNav\",lr),pr.component(\"sticky\",dr),pr.component(\"svg\",Si),pr.component(\"switcher\",mr),pr.component(\"tab\",gr),pr.component(\"toggle\",vr),pr.component(\"video\",ai),pr.component(\"close\",Pi),pr.component(\"marker\",Di),pr.component(\"navbarToggleIcon\",Di),pr.component(\"overlayIcon\",Di),pr.component(\"paginationNext\",Di),pr.component(\"paginationPrevious\",Di),pr.component(\"searchIcon\",Bi),pr.component(\"slidenavNext\",zi),pr.component(\"slidenavPrevious\",zi),pr.component(\"spinner\",Hi),pr.component(\"totop\",Di),pr.use(oi);var wr={mixins:[ei],props:{date:String,clsWrapper:String},data:{date:\"\",clsWrapper:\".uk-countdown-%unit%\"},computed:{date:function(t){var e=t.date;return Date.parse(e)},days:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"days\"),e)},hours:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"hours\"),e)},minutes:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"minutes\"),e)},seconds:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"seconds\"),e)},units:function(){var e=this;return[\"days\",\"hours\",\"minutes\",\"seconds\"].filter(function(t){return e[t]})}},connected:function(){this.start()},disconnected:function(){var e=this;this.stop(),this.units.forEach(function(t){return de(e[t])})},events:[{name:\"visibilitychange\",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var i=this,r=function(t){var e=t-Date.now();return{total:e,seconds:e/1e3%60,minutes:e/1e3/60%60,hours:e/1e3/60/60%24,days:e/1e3/60/60/24}}(this.date);r.total<=0&&(this.stop(),r.days=r.hours=r.minutes=r.seconds=0),this.units.forEach(function(t){var e=String(Math.floor(r[t]));e=e.length<2?\"0\"+e:e;var n=i[t];n.textContent!==e&&((e=e.split(\"\")).length!==n.children.length&&fe(n,e.map(function(){return\"<span></span>\"}).join(\"\")),e.forEach(function(t,e){return n.children[e].textContent=t}))})}},methods:{start:function(){var t=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return t.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var br,yr=\"uk-animation-target\",xr={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(t){var i=this;!function(){if(br)return;(br=pe(document.head,\"<style>\").sheet).insertRule(\".\"+yr+\" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\",0)}();var r=W(this.target.children),o=r.map(function(t){return kr(t,!0)}),e=sn(this.target),n=window.pageYOffset;t(),Xe.cancel(this.target),r.forEach(Xe.cancel),$r(this.target),this.$update(this.target),kn.flush();var s=sn(this.target),a=(r=r.concat(W(this.target.children).filter(function(t){return!b(r,t)}))).map(function(t,e){return!!(t.parentNode&&e in o)&&(o[e]?Ht(t)?Ir(t):{opacity:0}:{opacity:Ht(t)?1:0})});return o=a.map(function(t,e){var n=r[e].parentNode===i.target&&(o[e]||kr(r[e]));if(n)if(t){if(!(\"opacity\"in t)){n.opacity%1?t.opacity=1:delete n.opacity}}else delete n.opacity;return n}),Ae(this.target,yr),r.forEach(function(t,e){return o[e]&&Le(t,o[e])}),Le(this.target,\"height\",e),gn(window,n),ne.all(r.map(function(t,e){return o[e]&&a[e]?Xe.start(t,a[e],i.animation,\"ease\"):ne.resolve()}).concat(Xe.start(this.target,{height:s},this.animation,\"ease\"))).then(function(){r.forEach(function(t,e){return Le(t,{display:0===a[e].opacity?\"none\":\"\",zIndex:\"\"})}),$r(i.target),i.$update(i.target),kn.flush()},Q)}}};function kr(t,e){var n=Le(t,\"zIndex\");return!!Ht(t)&&U({display:\"\",opacity:e?Le(t,\"opacity\"):\"0\",pointerEvents:\"none\",position:\"absolute\",zIndex:\"auto\"===n?ue(t):n},Ir(t))}function $r(t){Le(t.children,{height:\"\",left:\"\",opacity:\"\",pointerEvents:\"\",position:\"\",top:\"\",width:\"\"}),_e(t,yr),Le(t,\"height\",\"\")}function Ir(t){var e=t.getBoundingClientRect(),n=e.height,i=e.width,r=on(t),o=r.top,s=r.left;return{top:o+=F(Le(t,\"marginTop\")),left:s,height:n,width:i}}var Sr={mixins:[xr],args:\"target\",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:\"uk-filter-control\",cls:\"uk-active\",animation:250},computed:{toggles:{get:function(t,e){t.attrItem;return Ee(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",e)},watch:function(){this.updateState()}},target:function(t,e){return Te(t.target,e)},children:{get:function(){return W(this.target&&this.target.children)},watch:function(t,e){!function(t,e){return t.length===e.length&&t.every(function(t){return~e.indexOf(t)})}(t,e)&&this.updateState()}}},events:[{name:\"click\",delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.apply(t.current)}}],connected:function(){var e=this;if(this.updateState(),!1!==this.selActive){var n=Ee(this.selActive,this.$el);this.toggles.forEach(function(t){return De(t,e.cls,b(n,t))})}},methods:{apply:function(t){this.setState(Er(t,this.attrItem,this.getState()))},getState:function(){var n=this;return this.toggles.filter(function(t){return Oe(t,n.cls)}).reduce(function(t,e){return Er(e,n.attrItem,t)},{filter:{\"\":\"\"},sort:[]})},setState:function(o,t){var s=this;void 0===t&&(t=!0),o=U({filter:{\"\":\"\"},sort:[]},o),qt(this.$el,\"beforeFilter\",[this,o]);var a=this.children;this.toggles.forEach(function(t){return De(t,s.cls,!!function(t,e,n){var i=n.filter;void 0===i&&(i={\"\":\"\"});var r=n.sort,o=r[0],s=r[1],a=Tr(t,e),h=a.filter;void 0===h&&(h=\"\");var c=a.group;void 0===c&&(c=\"\");var u=a.sort,l=a.order;void 0===l&&(l=\"asc\");return P(u)?c in i&&h===i[c]||!h&&c&&!(c in i)&&!i[\"\"]:o===u&&s===l}(t,s.attrItem,o))});function e(){var e=function(t){var e=t.filter,n=\"\";return K(e,function(t){return n+=t||\"\"}),n}(o);a.forEach(function(t){return Le(t,\"display\",e&&!_t(t,e)?\"none\":\"\")});var t=o.sort,n=t[0],i=t[1];if(n){var r=function(t,n,i){return U([],t).sort(function(t,e){return st(t,n).localeCompare(st(e,n),void 0,{numeric:!0})*(\"asc\"===i||-1)})}(a,n,i);Y(r,a)||r.forEach(function(t){return pe(s.target,t)})}}t?this.animate(e).then(function(){return qt(s.$el,\"afterFilter\",[s])}):(e(),qt(this.$el,\"afterFilter\",[this]))},updateState:function(){var t=this;kn.write(function(){return t.setState(t.getState(),!1)})}}};function Tr(t,e){return On(st(t,e),[\"filter\"])}function Er(t,e,n){var i=Tr(t,e),r=i.filter,o=i.group,s=i.sort,a=i.order;return void 0===a&&(a=\"asc\"),(r||P(s))&&(o?r?(delete n.filter[\"\"],n.filter[o]=r):(delete n.filter[o],(B(n.filter)||\"\"in n.filter)&&(n.filter={\"\":r||\"\"})):n.filter={\"\":r||\"\"}),P(s)||(n.sort=[s,a]),n}var Cr={slide:{show:function(t){return[{transform:_r(-100*t)},{transform:_r()}]},percent:function(t){return Ar(t)},translate:function(t,e){return[{transform:_r(-100*e*t)},{transform:_r(100*e*(1-t))}]}}};function Ar(t){return Math.abs(Le(t,\"transform\").split(\",\")[4]/t.offsetWidth)||0}function _r(t,e){return void 0===t&&(t=0),void 0===e&&(e=\"%\"),t+=t?e:\"\",at?\"translateX(\"+t+\")\":\"translate3d(\"+t+\", 0, 0)\"}function Nr(t){return\"scale3d(\"+t+\", \"+t+\", 1)\"}var Mr=U({},Cr,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t},{opacity:t}]}},scale:{show:function(){return[{opacity:0,transform:Nr(.8)},{opacity:1,transform:Nr(1)}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:Nr(1-.2*t)},{opacity:t,transform:Nr(.8+.2*t)}]}}});function Or(t,e,n){qt(t,Ut(e,!1,!1,n))}var Dr={mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.autoplay&&this.startAutoplay()},disconnected:function(){this.stopAutoplay()},update:function(){it(this.slides,\"tabindex\",\"-1\")},events:[{name:\"visibilitychange\",el:document,filter:function(){return this.autoplay},handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}}],methods:{startAutoplay:function(){var t=this;this.stopAutoplay(),this.interval=setInterval(function(){return(!t.draggable||!Te(\":focus\",t.$el))&&(!t.pauseOnHover||!_t(t.$el,\":hover\"))&&!t.stack.length&&t.show(\"next\")},this.autoplayInterval)},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{props:{draggable:Boolean},data:{draggable:!0,threshold:10},created:function(){var i=this;[\"start\",\"move\",\"end\"].forEach(function(t){var n=i[t];i[t]=function(t){var e=te(t).x*(ht?-1:1);i.prevPos=e!==i.pos?i.pos:i.prevPos,i.pos=e,n(t)}})},events:[{name:dt,delegate:function(){return this.selSlides},handler:function(t){!this.draggable||!Qt(t)&&function(t){return!t.children.length&&t.childNodes.length}(t.target)||0<t.button||this.length<2||this.start(t)}},{name:\"touchmove\",passive:!1,handler:\"move\",delegate:function(){return this.selSlides}},{name:\"dragstart\",handler:function(t){t.preventDefault()}}],methods:{start:function(){var t=this;this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index;var e=\"touchmove\"!=ft?Vt(document,ft,this.move,{passive:!1}):Q;this.unbindMove=function(){e(),t.unbindMove=null},Vt(window,\"scroll\",this.unbindMove),Vt(document,pt,this.end,!0),Le(this.list,\"userSelect\",\"none\")},move:function(t){var e=this;if(this.unbindMove){var n=this.pos-this.drag;if(!(0==n||this.prevPos===this.pos||!this.dragging&&Math.abs(n)<this.threshold)){Le(this.list,\"pointerEvents\",\"none\"),t.cancelable&&t.preventDefault(),this.dragging=!0,this.dir=n<0?1:-1;for(var i=this.slides,r=this.prevIndex,o=Math.abs(n),s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;s!==r&&a<o;)this.drag-=a*this.dir,r=s,o-=a,s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;this.percent=o/a;var h,c=i[r],u=i[s],l=this.index!==s,d=r===s;[this.index,this.prevIndex].filter(function(t){return!b([s,r],t)}).forEach(function(t){qt(i[t],\"itemhidden\",[e]),d&&(h=!0,e.prevIndex=r)}),(this.index===r&&this.prevIndex!==r||h)&&qt(i[this.index],\"itemshown\",[this]),l&&(this.prevIndex=r,this.index=s,d||qt(c,\"beforeitemhide\",[this]),qt(u,\"beforeitemshow\",[this])),this._transitioner=this._translate(Math.abs(this.percent),c,!d&&u),l&&(d||qt(c,\"itemhide\",[this]),qt(u,\"itemshow\",[this]))}}},end:function(){if(Rt(window,\"scroll\",this.unbindMove),this.unbindMove&&this.unbindMove(),Rt(document,pt,this.end,!0),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var t=(ht?this.dir*(ht?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=t?this.index:this.prevIndex,t&&(this.percent=1-this.percent),this.show(0<this.dir&&!t||this.dir<0&&t?\"next\":\"previous\",!0)}Le(this.list,{userSelect:\"\",pointerEvents:\"\"}),this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(t,e){return Te(t.selNav,e)},selNavItem:function(t){var e=t.attrItem;return\"[\"+e+\"],[data-\"+e+\"]\"},navItems:function(t,e){return Ee(this.selNavItem,e)}},update:{write:function(){var n=this;this.nav&&this.length!==this.nav.children.length&&fe(this.nav,this.slides.map(function(t,e){return\"<li \"+n.attrItem+'=\"'+e+'\"><a href=\"#\"></a></li>'}).join(\"\")),De(Ee(this.selNavItem,this.$el).concat(this.nav),\"uk-hidden\",!this.maxIndex),this.updateNav()},events:[\"resize\"]},events:[{name:\"click\",delegate:function(){return this.selNavItem},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"itemshow\",handler:\"updateNav\"}],methods:{updateNav:function(){var n=this,i=this.getValidIndex();this.navItems.forEach(function(t){var e=st(t,n.attrItem);De(t,n.clsActive,L(e)===i),De(t,\"uk-invisible\",n.finite&&(\"previous\"===e&&0===i||\"next\"===e&&i>=n.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:\"ease\",finite:!1,velocity:1,index:0,prevIndex:-1,stack:[],percent:0,clsActive:\"uk-active\",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},connected:function(){this.prevIndex=-1,this.index=this.getValidIndex(this.index),this.stack=[]},disconnected:function(){_e(this.slides,this.clsActive)},computed:{duration:function(t,e){var n=t.velocity;return zr(e.offsetWidth/n)},list:function(t,e){return Te(t.selList,e)},maxIndex:function(){return this.length-1},selSlides:function(t){return t.selList+\" > *\"},slides:{get:function(){return W(this.list.children)},watch:function(){this.$reset()}},length:function(){return this.slides.length}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(t,e){var n=this;if(void 0===e&&(e=!1),!this.dragging&&this.length){var i=this.stack,r=e?0:i.length,o=function(){i.splice(r,1),i.length&&n.show(i.shift(),!0)};if(i[e?\"unshift\":\"push\"](t),!e&&1<i.length)2===i.length&&this._transitioner.forward(Math.min(this.duration,200));else{var s=this.index,a=Oe(this.slides,this.clsActive)&&this.slides[s],h=this.getIndex(t,this.index),c=this.slides[h];if(a!==c){if(this.dir=function(t,e){return\"next\"===t?1:\"previous\"===t?-1:t<e?-1:1}(t,s),this.prevIndex=s,this.index=h,a&&qt(a,\"beforeitemhide\",[this]),!qt(c,\"beforeitemshow\",[this,a]))return this.index=this.prevIndex,void o();var u=this._show(a,c,e).then(function(){return a&&qt(a,\"itemhidden\",[n]),qt(c,\"itemshown\",[n]),new ne(function(t){kn.write(function(){i.shift(),i.length?n.show(i.shift(),!0):n._transitioner=null,t()})})});return a&&qt(a,\"itemhide\",[this]),qt(c,\"itemshow\",[this]),u}o()}}},getIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.index),Z(le(t,this.slides,e,this.finite),0,this.maxIndex)},getValidIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),this.getIndex(t,e)},_show:function(t,e,n){if(this._transitioner=this._getTransitioner(t,e,this.dir,U({easing:n?e.offsetWidth<600?\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\":\"cubic-bezier(0.165, 0.84, 0.44, 1)\":this.easing},this.transitionOptions)),!n&&!t)return this._transitioner.translate(1),ne.resolve();var i=this.stack.length;return this._transitioner[1<i?\"forward\":\"show\"](1<i?Math.min(this.duration,75+75/(i-1)):this.duration,this.percent)},_getDistance:function(t,e){return this._getTransitioner(t,t!==e&&e).getDistance()},_translate:function(t,e,n){void 0===e&&(e=this.prevIndex),void 0===n&&(n=this.index);var i=this._getTransitioner(e!==n&&e,n);return i.translate(t),i},_getTransitioner:function(t,e,n,i){return void 0===t&&(t=this.prevIndex),void 0===e&&(e=this.index),void 0===n&&(n=this.dir||1),void 0===i&&(i=this.transitionOptions),new this.Transitioner(D(t)?this.slides[t]:t,D(e)?this.slides[e]:e,n*(ht?-1:1),i)}}};function zr(t){return.5*t+300}var Br={mixins:[Dr],props:{animation:String},data:{animation:\"slide\",clsActivated:\"uk-transition-active\",Animations:Cr,Transitioner:function(o,s,a,t){var e=t.animation,h=t.easing,n=e.percent,i=e.translate,r=e.show;void 0===r&&(r=Q);var c=r(a),u=new ee;return{dir:a,show:function(t,e,n){var i=this;void 0===e&&(e=0);var r=n?\"linear\":h;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),Or(s,\"itemin\",{percent:e,duration:t,timing:r,dir:a}),Or(o,\"itemout\",{percent:1-e,duration:t,timing:r,dir:a}),ne.all([Xe.start(s,c[1],t,r),Xe.start(o,c[0],t,r)]).then(function(){i.reset(),u.resolve()},Q),u.promise},stop:function(){return Xe.stop([s,o])},cancel:function(){Xe.cancel([s,o])},reset:function(){for(var t in c[0])Le([s,o],t,\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Xe.cancel([s,o]),this.show(t,e,!0)},translate:function(t){this.reset();var e=i(t,a);Le(s,e[1]),Le(o,e[0]),Or(s,\"itemtranslatein\",{percent:t,dir:a}),Or(o,\"itemtranslateout\",{percent:1-t,dir:a})},percent:function(){return n(o||s,s,a)},getDistance:function(){return o&&o.offsetWidth}}}},computed:{animation:function(t){var e=t.animation,n=t.Animations;return U(e in n?n[e]:n.slide,{name:e})},transitionOptions:function(){return{animation:this.animation}}},events:{\"itemshow itemhide itemshown itemhidden\":function(t){var e=t.target;this.$update(e)},beforeitemshow:function(t){Ae(t.target,this.clsActive)},itemshown:function(t){Ae(t.target,this.clsActivated)},itemhidden:function(t){_e(t.target,this.clsActive,this.clsActivated)}}},Pr={mixins:[Zi,tr,ni,Br],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:\"uk-open\",clsPage:\"uk-lightbox-page\",selList:\".uk-lightbox-items\",attrItem:\"uk-lightbox-item\",selClose:\".uk-close-large\",selCaption:\".uk-lightbox-caption\",pauseOnHover:!1,velocity:2,Animations:Mr,template:'<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\"></div> </div>'}},created:function(){var t=Te(this.template),e=Te(this.selList,t);this.items.forEach(function(){return pe(e,\"<li></li>\")}),this.$mount(pe(this.container,t))},computed:{caption:function(t,e){t.selCaption;return Te(\".uk-lightbox-caption\",e)}},events:[{name:ft+\" \"+dt+\" keydown\",handler:\"showControls\"},{name:\"click\",self:!0,delegate:function(){return this.selSlides},handler:function(t){t.defaultPrevented||this.hide()}},{name:\"shown\",self:!0,handler:function(){this.showControls()}},{name:\"hide\",self:!0,handler:function(){this.hideControls(),_e(this.slides,this.clsActive),Xe.stop(this.slides)}},{name:\"hidden\",self:!0,handler:function(){this.$destroy(!0)}},{name:\"keyup\",el:document,handler:function(t){if(this.isToggled(this.$el))switch(t.keyCode){case 37:this.show(\"previous\");break;case 39:this.show(\"next\")}}},{name:\"beforeitemshow\",handler:function(t){this.isToggled()||(this.draggable=!1,t.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Mr.scale,_e(t.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:\"itemshow\",handler:function(t){var e=ue(t.target),n=this.getItem(e).caption;Le(this.caption,\"display\",n?\"\":\"none\"),fe(this.caption,n);for(var i=0;i<=this.preload;i++)this.loadItem(this.getIndex(e+i)),this.loadItem(this.getIndex(e-i))}},{name:\"itemshown\",handler:function(){this.draggable=this.$props.draggable}},{name:\"itemload\",handler:function(t,r){var o,s=this,e=r.source,n=r.type,i=r.alt;if(this.setItem(r,\"<span uk-spinner></span>\"),e)if(\"image\"===n||e.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i))he(e).then(function(t){return s.setItem(r,'<img width=\"'+t.width+'\" height=\"'+t.height+'\" src=\"'+e+'\" alt=\"'+(i||\"\")+'\">')},function(){return s.setError(r)});else if(\"video\"===n||e.match(/\\.(mp4|webm|ogv)($|\\?)/i)){var a=Te(\"<video controls playsinline\"+(r.poster?' poster=\"'+r.poster+'\"':\"\")+' uk-video=\"'+this.videoAutoplay+'\"></video>');it(a,\"src\",e),Yt(a,\"error loadedmetadata\",function(t){\"error\"===t?s.setError(r):(it(a,{width:a.videoWidth,height:a.videoHeight}),s.setItem(r,a))})}else if(\"iframe\"===n||e.match(/\\.(html|php)($|\\?)/i))this.setItem(r,'<iframe class=\"uk-lightbox-iframe\" src=\"'+e+'\" frameborder=\"0\" allowfullscreen></iframe>');else if(o=e.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/)||e.match(/()youtu\\.be\\/(.*)/)){var h=o[2],c=function(t,e){return void 0===t&&(t=640),void 0===e&&(e=450),s.setItem(r,Hr(\"https://www.youtube\"+(o[1]||\"\")+\".com/embed/\"+h,t,e,s.videoAutoplay))};he(\"https://img.youtube.com/vi/\"+h+\"/maxresdefault.jpg\").then(function(t){var e=t.width,n=t.height;120===e&&90===n?he(\"https://img.youtube.com/vi/\"+h+\"/0.jpg\").then(function(t){var e=t.width,n=t.height;return c(e,n)},c):c(e,n)},c)}else(o=e.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))&&ae(\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\"+encodeURI(e),{responseType:\"json\",withCredentials:!1}).then(function(t){var e=t.response,n=e.height,i=e.width;return s.setItem(r,Hr(\"https://player.vimeo.com/video/\"+o[2],i,n,s.videoAutoplay))},function(){return s.setError(r)})}}],methods:{loadItem:function(t){void 0===t&&(t=this.index);var e=this.getItem(t);e.content||qt(this.$el,\"itemload\",[e])},getItem:function(t){return void 0===t&&(t=this.index),this.items[t]||{}},setItem:function(t,e){U(t,{content:e});var n=fe(this.slides[this.items.indexOf(t)],e);qt(this.$el,\"itemloaded\",[this,n]),this.$update(n)},setError:function(t){this.setItem(t,'<span uk-icon=\"icon: bolt; ratio: 2\"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),Ae(this.$el,\"uk-active\",\"uk-transition-active\")},hideControls:function(){_e(this.$el,\"uk-active\",\"uk-transition-active\")}}};function Hr(t,e,n,i){return'<iframe src=\"'+t+'\" width=\"'+e+'\" height=\"'+n+'\" style=\"max-width: 100%; box-sizing: border-box;\" frameborder=\"0\" allowfullscreen uk-video=\"autoplay: '+i+'\" uk-responsive></iframe>'}var Lr,Fr={install:function(t,e){t.lightboxPanel||t.component(\"lightboxPanel\",Pr);U(e.props,t.component(\"lightboxPanel\").options.props)},props:{toggle:String},data:{toggle:\"a\"},computed:{toggles:{get:function(t,e){return Ee(t.toggle,e)},watch:function(){this.hide()}},items:function(){return J(this.toggles.map(jr),\"source\")}},disconnected:function(){this.hide()},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(t){t.preventDefault();var e=st(t.current,\"href\");this.show(x(this.items,function(t){return t.source===e}))}}],methods:{show:function(t){var e=this;return this.panel=this.panel||this.$create(\"lightboxPanel\",U({},this.$props,{items:this.items})),Vt(this.panel.$el,\"hidden\",function(){return e.panel=!1}),this.panel.show(t)},hide:function(){return this.panel&&this.panel.hide()}}};function jr(n){return[\"href\",\"caption\",\"type\",\"poster\",\"alt\"].reduce(function(t,e){return t[\"href\"===e?\"source\":e]=st(n,e),t},{})}var Wr={},Vr={functional:!0,args:[\"message\",\"status\"],data:{message:\"\",status:\"\",timeout:5e3,group:null,pos:\"top-center\",clsClose:\"uk-notification-close\",clsMsg:\"uk-notification-message\"},install:function(r){r.notification.closeAll=function(n,i){Se(document.body,function(t){var e=r.getComponent(t,\"notification\");!e||n&&n!==e.group||e.close(i)})}},computed:{marginProp:function(t){return\"margin\"+(w(t.pos,\"top\")?\"Top\":\"Bottom\")},startProps:function(){var t;return(t={opacity:0})[this.marginProp]=-this.$el.offsetHeight,t}},created:function(){Wr[this.pos]||(Wr[this.pos]=pe(this.$container,'<div class=\"uk-notification uk-notification-'+this.pos+'\"></div>'));var t=Le(Wr[this.pos],\"display\",\"block\");this.$mount(pe(t,'<div class=\"'+this.clsMsg+(this.status?\" \"+this.clsMsg+\"-\"+this.status:\"\")+'\"> <a href=\"#\" class=\"'+this.clsClose+'\" data-uk-close></a> <div>'+this.message+\"</div> </div>\"))},connected:function(){var t,e=this,n=F(Le(this.$el,this.marginProp));Xe.start(Le(this.$el,this.startProps),((t={opacity:1})[this.marginProp]=n,t)).then(function(){e.timeout&&(e.timer=setTimeout(e.close,e.timeout))})},events:(Lr={click:function(t){Mt(t.target,'a[href=\"#\"],a[href=\"\"]')&&t.preventDefault(),this.close()}},Lr[mt]=function(){this.timer&&clearTimeout(this.timer)},Lr[gt]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},Lr),methods:{close:function(t){function e(){qt(n.$el,\"close\",[n]),we(n.$el),Wr[n.pos].children.length||Le(Wr[n.pos],\"display\",\"none\")}var n=this;this.timer&&clearTimeout(this.timer),t?e():Xe.start(this.$el,this.startProps).then(e)}}};var Rr=[\"x\",\"y\",\"bgx\",\"bgy\",\"rotate\",\"scale\",\"color\",\"backgroundColor\",\"borderColor\",\"opacity\",\"blur\",\"hue\",\"grayscale\",\"invert\",\"saturate\",\"sepia\",\"fopacity\",\"stroke\"],Yr={mixins:[Gi],props:Rr.reduce(function(t,e){return t[e]=\"list\",t},{}),data:Rr.reduce(function(t,e){return t[e]=void 0,t},{}),computed:{props:function(m,g){var v=this;return Rr.reduce(function(t,e){if(P(m[e]))return t;var n,i,r,o=e.match(/color/i),s=o||\"opacity\"===e,a=m[e].slice(0);s&&Le(g,e,\"\"),a.length<2&&a.unshift((\"scale\"===e?1:s?Le(g,e):0)||0);var h=function(t){return t.reduce(function(t,e){return O(e)&&e.replace(/-|\\d/g,\"\").trim()||t},\"\")}(a);if(o){var c=g.style.color;a=a.map(function(t){return function(t,e){return Le(Le(t,\"color\",e),\"color\").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(F)}(g,t)}),g.style.color=c}else if(w(e,\"bg\")){var u=\"bgy\"===e?\"height\":\"width\";if(a=a.map(function(t){return wn(t,u,v.$el)}),Le(g,\"background-position-\"+e[2],\"\"),i=Le(g,\"backgroundPosition\").split(\" \")[\"x\"===e[2]?0:1],v.covers){var l=Math.min.apply(Math,a),d=Math.max.apply(Math,a),f=a.indexOf(l)<a.indexOf(d);r=d-l,a=a.map(function(t){return t-(f?l:d)}),n=(f?-r:0)+\"px\"}else n=i}else a=a.map(F);if(\"stroke\"===e){if(!a.some(function(t){return t}))return t;var p=Ai(v.$el);Le(g,\"strokeDasharray\",p),\"%\"===h&&(a=a.map(function(t){return t*p/100})),a=a.reverse(),e=\"strokeDashoffset\"}return t[e]={steps:a,unit:h,pos:n,bgPos:i,diff:r},t},{})},bgProps:function(){var e=this;return[\"bgx\",\"bgy\"].filter(function(t){return t in e.props})},covers:function(t,e){return function(t){var e=t.style.backgroundSize,n=\"cover\"===Le(Le(t,\"backgroundSize\",\"\"),\"backgroundSize\");return t.style.backgroundSize=e,n}(e)}},disconnected:function(){delete this._image},update:{read:function(t){var h=this;if(t.active=this.matchMedia,t.active){if(!t.image&&this.covers&&this.bgProps.length){var e=Le(this.$el,\"backgroundImage\").replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/,\"$1\");if(e){var n=new Image;n.src=e,(t.image=n).naturalWidth||(n.onload=function(){return h.$emit()})}}var i=t.image;if(i&&i.naturalWidth){var c={width:this.$el.offsetWidth,height:this.$el.offsetHeight},u={width:i.naturalWidth,height:i.naturalHeight},l=nt.cover(u,c);this.bgProps.forEach(function(t){var e=h.props[t],n=e.diff,i=e.bgPos,r=e.steps,o=\"bgy\"===t?\"height\":\"width\",s=l[o]-c[o];if(s<n)c[o]=l[o]+n-s;else if(n<s){var a=c[o]/wn(i,o,h.$el);a&&(h.props[t].steps=r.map(function(t){return t-(s-n)/a}))}l=nt.cover(u,c)}),t.dim=l}}},write:function(t){var e=t.dim;t.active?e&&Le(this.$el,{backgroundSize:e.width+\"px \"+e.height+\"px\",backgroundRepeat:\"no-repeat\"}):Le(this.$el,{backgroundSize:\"\",backgroundRepeat:\"\"})},events:[\"resize\"]},methods:{reset:function(){var n=this;K(this.getCss(0),function(t,e){return Le(n.$el,e,\"\")})},getCss:function(l){var d=this.props;return Object.keys(d).reduce(function(t,e){var n=d[e],i=n.steps,r=n.unit,o=n.pos,s=function(t,e,n){void 0===n&&(n=2);var i=qr(t,e),r=i[0],o=i[1],s=i[2];return(D(r)?r+Math.abs(r-o)*s*(r<o?1:-1):+o).toFixed(n)}(i,l);switch(e){case\"x\":case\"y\":r=r||\"px\",t.transform+=\" translate\"+p(e)+\"(\"+F(s).toFixed(\"px\"===r?0:2)+r+\")\";break;case\"rotate\":r=r||\"deg\",t.transform+=\" rotate(\"+(s+r)+\")\";break;case\"scale\":t.transform+=\" scale(\"+s+\")\";break;case\"bgy\":case\"bgx\":t[\"background-position-\"+e[2]]=\"calc(\"+o+\" + \"+s+\"px)\";break;case\"color\":case\"backgroundColor\":case\"borderColor\":var a=qr(i,l),h=a[0],c=a[1],u=a[2];t[e]=\"rgba(\"+h.map(function(t,e){return t+=u*(c[e]-t),3===e?F(t):parseInt(t,10)}).join(\",\")+\")\";break;case\"blur\":r=r||\"px\",t.filter+=\" blur(\"+(s+r)+\")\";break;case\"hue\":r=r||\"deg\",t.filter+=\" hue-rotate(\"+(s+r)+\")\";break;case\"fopacity\":r=r||\"%\",t.filter+=\" opacity(\"+(s+r)+\")\";break;case\"grayscale\":case\"invert\":case\"saturate\":case\"sepia\":r=r||\"%\",t.filter+=\" \"+e+\"(\"+(s+r)+\")\";break;default:t[e]=s}return t},{transform:\"\",filter:\"\"})}}};function qr(t,e){var n=t.length-1,i=Math.min(Math.floor(n*e),n-1),r=t.slice(i,i+2);return r.push(1===e?1:e%(1/n)*n),r}var Ur={mixins:[Yr],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(t,e){var n=t.target;return function t(e){return e?\"offsetTop\"in e?e:t(e.parentNode):document.body}(n&&wt(n,e)||e)}},update:{read:function(t,e){var n=t.percent;if(\"scroll\"!==e&&(n=!1),t.active){var i=n;return{percent:n=function(t,e){return Z(t*(1-(e-e*t)))}(mn(this.target)/(this.viewport||1),this.easing),style:i!==n&&this.getCss(n)}}},write:function(t){var e=t.style;t.active?e&&Le(this.$el,e):this.reset()},events:[\"scroll\",\"resize\"]}};var Xr={update:{write:function(){if(!this.stack.length&&!this.dragging){var t=this.getValidIndex(this.index);~this.prevIndex&&this.index===t||this.show(t)}},events:[\"resize\"]}};function Kr(t,e,n){var i=Zr(t,e);return n?i-function(t,e){return Qr(e).width/2-Qr(t).width/2}(t,e):Math.min(i,Gr(e))}function Gr(t){return Math.max(0,Jr(t)-Qr(t).width)}function Jr(t){return eo(t).reduce(function(t,e){return Qr(e).width+t},0)}function Zr(t,e){return(on(t).left+(ht?Qr(t).width-Qr(e).width:0))*(ht?-1:1)}function Qr(t){return t.getBoundingClientRect()}function to(t,e,n){qt(t,Ut(e,!1,!1,n))}function eo(t){return W(t.children)}var no={mixins:[ei,Dr,Xr],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:\"uk-slider-item\",selList:\".uk-slider-items\",selNav:\".uk-slider-nav\",clsContainer:\"uk-slider-container\",Transitioner:function(r,i,o,t){var e=t.center,s=t.easing,a=t.list,h=new ee,n=r?Kr(r,a,e):Kr(i,a,e)+Qr(i).width*o,c=i?Kr(i,a,e):n+Qr(r).width*o*(ht?-1:1);return{dir:o,show:function(t,e,n){void 0===e&&(e=0);var i=n?\"linear\":s;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),r&&this.updateTranslates(),e=r?e:Z(e,0,1),to(this.getItemIn(),\"itemin\",{percent:e,duration:t,timing:i,dir:o}),r&&to(this.getItemIn(!0),\"itemout\",{percent:1-e,duration:t,timing:i,dir:o}),Xe.start(a,{transform:_r(-c*(ht?-1:1),\"px\")},t,i).then(h.resolve,Q),h.promise},stop:function(){return Xe.stop(a)},cancel:function(){Xe.cancel(a)},reset:function(){Le(a,\"transform\",\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Xe.cancel(a),this.show(t,e,!0)},translate:function(t){var e=this.getDistance()*o*(ht?-1:1);Le(a,\"transform\",_r(Z(e-e*t-c,-Jr(a),Qr(a).width)*(ht?-1:1),\"px\")),this.updateTranslates(),r&&(t=Z(t,-1,1),to(this.getItemIn(),\"itemtranslatein\",{percent:t,dir:o}),to(this.getItemIn(!0),\"itemtranslateout\",{percent:1-t,dir:o}))},percent:function(){return Math.abs((Le(a,\"transform\").split(\",\")[4]*(ht?-1:1)+n)/(c-n))},getDistance:function(){return Math.abs(c-n)},getItemIn:function(t){void 0===t&&(t=!1);var e=this.getActives(),n=G(eo(a),\"offsetLeft\"),i=ue(n,e[0<o*(t?-1:1)?e.length-1:0]);return~i&&n[i+(r&&!t?o:0)]},getActives:function(){var n=Kr(r||i,a,e);return G(eo(a).filter(function(t){var e=Zr(t,a);return n<=e&&e+Qr(t).width<=Qr(a).width+n}),\"offsetLeft\")},updateTranslates:function(){var n=this.getActives();eo(a).forEach(function(t){var e=b(n,t);to(t,\"itemtranslate\"+(e?\"in\":\"out\"),{percent:e?1:0,dir:t.offsetLeft<=i.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return Jr(this.list)/this.length},finite:function(t){return t.finite||Jr(this.list)<Qr(this.list).width+function(t){return eo(t).reduce(function(t,e){return Math.max(t,Qr(e).width)},0)}(this.list)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return X(this.sets);Le(this.slides,\"order\",\"\");for(var t=Gr(this.list),e=this.length;e--;)if(Zr(this.list.children[e],this.list)<t)return Math.min(e+1,this.length-1);return 0},sets:function(t){var o=this,e=t.sets,s=Qr(this.list).width/(this.center?2:1),a=0,h=s,c=0;return!B(e=e&&this.slides.reduce(function(t,e,n){var i=Qr(e).width;if(a<c+i&&(!o.center&&n>o.maxIndex&&(n=o.maxIndex),!b(t,n))){var r=o.slides[n+1];o.center&&r&&i<h-Qr(r).width/2?h-=i:(h=s,t.push(n),a=c+s+(o.center?i/2:0))}return c+=i,t},[]))&&e},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){De(this.$el,this.clsContainer,!Te(\".\"+this.clsContainer,this.$el))},update:{write:function(){var n=this;Ee(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",this.$el).forEach(function(t){var e=st(t,n.attrItem);n.maxIndex&&De(t,\"uk-hidden\",z(e)&&(n.sets&&!b(n.sets,F(e))||e>n.maxIndex))}),this.dragging||this.stack.length||this._getTransitioner().translate(1)},events:[\"resize\"]},events:{beforeitemshow:function(t){!this.dragging&&this.sets&&this.stack.length<2&&!b(this.sets,this.index)&&(this.index=this.getValidIndex());var e=Math.abs(this.index-this.prevIndex+(0<this.dir&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&1<e){for(var n=0;n<e;n++)this.stack.splice(1,0,0<this.dir?\"next\":\"previous\");t.preventDefault()}else this.duration=zr(this.avgWidth/this.velocity)*(Qr(this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).width/this.avgWidth),this.reorder()},itemshow:function(){P(this.prevIndex)||Ae(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var e=this,n=this._getTransitioner(this.index).getActives();this.slides.forEach(function(t){return De(t,e.clsActive,b(n,t))}),this.sets&&!b(this.sets,F(this.index))||this.slides.forEach(function(t){return De(t,e.clsActivated,b(n,t))})}},methods:{reorder:function(){var n=this;if(Le(this.slides,\"order\",\"\"),!this.finite){var i=0<this.dir&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(t,e){return Le(t,\"order\",0<n.dir&&e<i?1:n.dir<0&&e>=n.index?-1:\"\")}),this.center)for(var t=this.slides[i],e=Qr(this.list).width/2-Qr(t).width/2,r=0;0<e;){var o=this.getIndex(--r+i,i),s=this.slides[o];Le(s,\"order\",i<o?-2:-1),e-=Qr(s).width}}},getValidIndex:function(t,e){if(void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),t=this.getIndex(t,e),!this.sets)return t;var n;do{if(b(this.sets,t))return t;n=t,t=this.getIndex(t+this.dir,e)}while(t!==n);return t}}},io={mixins:[Yr],data:{selItem:\"!li\"},computed:{item:function(t,e){return wt(t.selItem,e)}},events:[{name:\"itemshown\",self:!0,el:function(){return this.item},handler:function(){Le(this.$el,this.getCss(.5))}},{name:\"itemin itemout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.duration,o=n.timing,s=n.dir;Xe.cancel(this.$el),Le(this.$el,this.getCss(oo(e,s,i))),Xe.start(this.$el,this.getCss(ro(e)?.5:0<s?1:0),r,o).catch(Q)}},{name:\"transitioncanceled transitionend\",self:!0,el:function(){return this.item},handler:function(){Xe.cancel(this.$el)}},{name:\"itemtranslatein itemtranslateout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.dir;Xe.cancel(this.$el),Le(this.$el,this.getCss(oo(e,r,i)))}}]};function ro(t){return u(t,\"in\")}function oo(t,e,n){return n/=2,ro(t)?e<0?1-n:n:e<0?n:1-n}var so,ao=U({},Cr,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:Nr(1.5),zIndex:0},{zIndex:-1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:Nr(1+.5*t),zIndex:0},{zIndex:-1}]}},pull:{show:function(t){return t<0?[{transform:_r(30),zIndex:-1},{transform:_r(),zIndex:0}]:[{transform:_r(-100),zIndex:0},{transform:_r(),zIndex:-1}]},percent:function(t,e,n){return n<0?1-Ar(e):Ar(t)},translate:function(t,e){return e<0?[{transform:_r(30*t),zIndex:-1},{transform:_r(-100*(1-t)),zIndex:0}]:[{transform:_r(100*-t),zIndex:0},{transform:_r(30*(1-t)),zIndex:-1}]}},push:{show:function(t){return t<0?[{transform:_r(100),zIndex:0},{transform:_r(),zIndex:-1}]:[{transform:_r(-30),zIndex:-1},{transform:_r(),zIndex:0}]},percent:function(t,e,n){return 0<n?1-Ar(e):Ar(t)},translate:function(t,e){return e<0?[{transform:_r(100*t),zIndex:0},{transform:_r(-30*(1-t)),zIndex:-1}]:[{transform:_r(-30*t),zIndex:-1},{transform:_r(100*(1-t)),zIndex:0}]}}}),ho={mixins:[ei,Br,Xr],props:{ratio:String,minHeight:Number,maxHeight:Number},data:{ratio:\"16:9\",minHeight:!1,maxHeight:!1,selList:\".uk-slideshow-items\",attrItem:\"uk-slideshow-item\",selNav:\".uk-slideshow-nav\",Animations:ao},update:{read:function(){var t=this.ratio.split(\":\").map(Number),e=t[0],n=t[1];return n=n*this.list.offsetWidth/e||0,this.minHeight&&(n=Math.max(this.minHeight,n)),this.maxHeight&&(n=Math.min(this.maxHeight,n)),{height:n-cn(this.list,\"content-box\")}},write:function(t){var e=t.height;0<e&&Le(this.list,\"minHeight\",e)},events:[\"resize\"]}},co={mixins:[ei,xr],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:\"uk-sortable-item\",clsPlaceholder:\"uk-sortable-placeholder\",clsDrag:\"uk-sortable-drag\",clsDragState:\"uk-drag\",clsBase:\"uk-sortable\",clsNoDrag:\"uk-sortable-nodrag\",clsEmpty:\"uk-sortable-empty\",clsCustom:\"\",handle:!1},created:function(){var o=this;[\"init\",\"start\",\"move\",\"end\"].forEach(function(t){var r=o[t];o[t]=function(t){o.scrollY=window.pageYOffset;var e=te(t,\"page\"),n=e.x,i=e.y;o.pos={x:n,y:i},r(t)}})},events:{name:dt,passive:!1,handler:\"init\"},update:{write:function(){if(this.clsEmpty&&De(this.$el,this.clsEmpty,B(this.$el.children)),Le(this.handle?Ee(this.handle,this.$el):this.$el.children,{touchAction:\"none\",userSelect:\"none\"}),this.drag){var t=nn(window),e=t.right,n=t.bottom;nn(this.drag,{top:Z(this.pos.y+this.origin.top,0,n-this.drag.offsetHeight),left:Z(this.pos.x+this.origin.left,0,e-this.drag.offsetWidth)}),function s(t){var a=t.x;var h=t.y;clearTimeout(so);(e=document.elementFromPoint(a-window.pageXOffset,h-window.pageYOffset),n=fo(),function(t,e){var n=[];for(;e(t)&&n.unshift(t),t=t&&t.parentElement;);return n}(e,function(t){return t===n||lo.test(Le(t,\"overflow\"))})).some(function(t){var e=t.scrollTop,n=t.scrollHeight;fo()===t&&(t=window,n-=window.innerHeight);var i=nn(t),r=i.top,o=i.bottom;if(r<h&&h<r+30?e-=5:h<o&&o-20<h&&(e+=5),0<e&&e<n)return so=setTimeout(function(){gn(t,e),s({x:a,y:h})},10)});var e,n}(this.pos)}}},methods:{init:function(t){var e=t.target,n=t.button,i=t.defaultPrevented,r=W(this.$el.children).filter(function(t){return Wt(e,t)})[0];!r||i||0<n||Ft(e)||Wt(e,\".\"+this.clsNoDrag)||this.handle&&!Wt(e,this.handle)||(t.preventDefault(),this.touched=[this],this.placeholder=r,this.origin=U({target:e,index:ue(r)},this.pos),Vt(document,ft,this.move),Vt(document,pt,this.end),Vt(window,\"scroll\",this.scroll),this.threshold||this.start(t))},start:function(t){this.drag=pe(this.$container,this.placeholder.outerHTML.replace(/^<li/i,\"<div\").replace(/li>$/i,\"div>\")),Le(this.drag,U({boxSizing:\"border-box\",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight,overflow:\"hidden\"},Le(this.placeholder,[\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"paddingBottom\"]))),it(this.drag,\"uk-no-boot\",\"\"),Ae(this.drag,this.clsDrag,this.clsCustom),sn(this.drag.firstElementChild,sn(this.placeholder.firstElementChild));var e=nn(this.placeholder),n=e.left,i=e.top;U(this.origin,{left:n-this.pos.x,top:i-this.pos.y}),Ae(this.placeholder,this.clsPlaceholder),Ae(this.$el.children,this.clsItem),Ae(document.documentElement,this.clsDragState),qt(this.$el,\"start\",[this,this.placeholder]),this.move(t)},move:function(t){if(this.drag){this.$emit();var e=\"mousemove\"===t.type?t.target:document.elementFromPoint(this.pos.x-window.pageXOffset,this.pos.y-window.pageYOffset),n=this.getSortable(e),i=this.getSortable(this.placeholder),r=n!==i;if(n&&!Wt(e,this.placeholder)&&(!r||n.group&&n.group===i.group)){if(e=n.$el===e.parentNode&&e||W(n.$el.children).filter(function(t){return Wt(e,t)})[0],r)i.remove(this.placeholder);else if(!e)return;n.insert(this.placeholder,e),b(this.touched,n)||this.touched.push(n)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(t)},end:function(t){if(Rt(document,ft,this.move),Rt(document,pt,this.end),Rt(window,\"scroll\",this.scroll),this.drag){clearTimeout(so);var e=this.getSortable(this.placeholder);this===e?this.origin.index!==ue(this.placeholder)&&qt(this.$el,\"moved\",[this,this.placeholder]):(qt(e.$el,\"added\",[e,this.placeholder]),qt(this.$el,\"removed\",[this,this.placeholder])),qt(this.$el,\"stop\",[this,this.placeholder]),we(this.drag),this.drag=null;var n=this.touched.map(function(t){return t.clsPlaceholder+\" \"+t.clsItem}).join(\" \");this.touched.forEach(function(t){return _e(t.$el.children,n)}),_e(document.documentElement,this.clsDragState)}else\"touchend\"===t.type&&t.target.click()},scroll:function(){var t=window.pageYOffset;t!==this.scrollY&&(this.pos.y+=t-this.scrollY,this.scrollY=t,this.$emit())},insert:function(t,e){var n=this;Ae(this.$el.children,this.clsItem);function i(){e?!Wt(t,n.$el)||function(t,e){return t.parentNode===e.parentNode&&ue(t)>ue(e)}(t,e)?me(e,t):ge(e,t):pe(n.$el,t)}this.animation?this.animate(i):i()},remove:function(t){Wt(t,this.$el)&&(Le(this.handle?Ee(this.handle,t):t,{touchAction:\"\",userSelect:\"\"}),this.animation?this.animate(function(){return we(t)}):we(t))},getSortable:function(t){return t&&(this.$getComponent(t,\"sortable\")||this.getSortable(t.parentNode))}}};var uo,lo=/auto|scroll/;function fo(){return document.scrollingElement||document.documentElement}var po,mo,go,vo=[],wo={mixins:[Zi,ni,ci],args:\"title\",props:{delay:Number,title:String},data:{pos:\"top\",title:\"\",delay:0,animation:[\"uk-animation-scale-up\"],duration:100,cls:\"uk-active\",clsPos:\"uk-tooltip\"},beforeConnect:function(){this._hasTitle=rt(this.$el,\"title\"),it(this.$el,{title:\"\",\"aria-expanded\":!1})},disconnected:function(){this.hide(),it(this.$el,{title:this._hasTitle?this.title:null,\"aria-expanded\":null})},methods:{show:function(){var e=this;!this.isActive()&&this.title&&(vo.forEach(function(t){return t.hide()}),vo.push(this),this._unbind=Vt(document,pt,function(t){return!Wt(t.target,e.$el)&&e.hide()}),clearTimeout(this.showTimer),this.showTimer=setTimeout(function(){e._show(),e.hideTimer=setInterval(function(){Ht(e.$el)||e.hide()},150)},this.delay))},hide:function(){this.isActive()&&!_t(this.$el,\"input:focus\")&&(vo.splice(vo.indexOf(this),1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),it(this.$el,\"aria-expanded\",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&we(this.tooltip),this.tooltip=!1,this._unbind())},_show:function(){this.tooltip=pe(this.container,'<div class=\"'+this.clsPos+'\" aria-expanded=\"true\" aria-hidden> <div class=\"'+this.clsPos+'-inner\">'+this.title+\"</div> </div>\"),this.positionAt(this.tooltip,this.$el),this.origin=\"y\"===this.getAxis()?fn(this.dir)+\"-\"+this.align:this.align+\"-\"+fn(this.dir),this.toggleElement(this.tooltip,!0)},isActive:function(){return b(vo,this)}},events:(uo={focus:\"show\",blur:\"hide\"},uo[mt+\" \"+gt]=function(t){Qt(t)||(t.type===mt?this.show():this.hide())},uo[dt]=function(t){Qt(t)&&(this.isActive()?this.hide():this.show())},uo)},bo={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:\"uk-dragover\",concurrent:1,maxSize:0,method:\"POST\",mime:!1,msgInvalidMime:\"Invalid File Type: %s\",msgInvalidName:\"Invalid File Name: %s\",msgInvalidSize:\"Invalid File Size: %s Kilobytes Max\",multiple:!1,name:\"files[]\",params:{},type:\"\",url:\"\",abort:Q,beforeAll:Q,beforeSend:Q,complete:Q,completeAll:Q,error:Q,fail:Q,load:Q,loadEnd:Q,loadStart:Q,progress:Q},events:{change:function(t){_t(t.target,'input[type=\"file\"]')&&(t.preventDefault(),t.target.files&&this.upload(t.target.files),t.target.value=\"\")},drop:function(t){xo(t);var e=t.dataTransfer;e&&e.files&&(_e(this.$el,this.clsDragover),this.upload(e.files))},dragenter:function(t){xo(t)},dragover:function(t){xo(t),Ae(this.$el,this.clsDragover)},dragleave:function(t){xo(t),_e(this.$el,this.clsDragover)}},methods:{upload:function(t){var i=this;if(t.length){qt(this.$el,\"upload\",[t]);for(var e=0;e<t.length;e++){if(this.maxSize&&1e3*this.maxSize<t[e].size)return void this.fail(this.msgInvalidSize.replace(\"%s\",this.maxSize));if(this.allow&&!yo(this.allow,t[e].name))return void this.fail(this.msgInvalidName.replace(\"%s\",this.allow));if(this.mime&&!yo(this.mime,t[e].type))return void this.fail(this.msgInvalidMime.replace(\"%s\",this.mime))}this.multiple||(t=[t[0]]),this.beforeAll(this,t);var r=function(t,e){for(var n=[],i=0;i<t.length;i+=e){for(var r=[],o=0;o<e;o++)r.push(t[i+o]);n.push(r)}return n}(t,this.concurrent),o=function(t){var e=new FormData;for(var n in t.forEach(function(t){return e.append(i.name,t)}),i.params)e.append(n,i.params[n]);ae(i.url,{data:e,method:i.method,responseType:i.type,beforeSend:function(t){var e=t.xhr;e.upload&&Vt(e.upload,\"progress\",i.progress),[\"loadStart\",\"load\",\"loadEnd\",\"abort\"].forEach(function(t){return Vt(e,t.toLowerCase(),i[t])}),i.beforeSend(t)}}).then(function(t){i.complete(t),r.length?o(r.shift()):i.completeAll(t)},function(t){return i.error(t)})};o(r.shift())}}}};function yo(t,e){return e.match(new RegExp(\"^\"+t.replace(/\\//g,\"\\\\/\").replace(/\\*\\*/g,\"(\\\\/[^\\\\/]+)*\").replace(/\\*/g,\"[^\\\\/]+\").replace(/((?!\\\\))\\?/g,\"$1.\")+\"$\",\"i\"))}function xo(t){t.preventDefault(),t.stopPropagation()}function ko(){Io(document.body,mo),kn.flush(),new MutationObserver(function(t){return t.forEach($o)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),po._initialized=!0}function $o(t){var e=t.target;(\"attributes\"!==t.type?function(t){for(var e=t.addedNodes,n=t.removedNodes,i=0;i<e.length;i++)Io(e[i],mo);for(var r=0;r<n.length;r++)Io(n[r],go);return!0}(t):function(t){var e=t.target,n=t.attributeName;if(\"href\"===n)return!0;var i=Hn(n);if(!(i&&i in po))return;if(rt(e,n))return po[i](e),!0;var r=po.getComponent(e,i);if(r)return r.$destroy(),!0}(t))&&po.update(e)}function Io(t,e){if(1===t.nodeType&&!rt(t,\"uk-no-boot\"))for(e(t),t=t.firstElementChild;t;){var n=t.nextElementSibling;Io(t,e),t=n}}return Ln.component(\"countdown\",wr),Ln.component(\"filter\",Sr),Ln.component(\"lightbox\",Fr),Ln.component(\"lightboxPanel\",Pr),Ln.component(\"notification\",Vr),Ln.component(\"parallax\",Ur),Ln.component(\"slider\",no),Ln.component(\"sliderParallax\",io),Ln.component(\"slideshow\",ho),Ln.component(\"slideshowParallax\",io),Ln.component(\"sortable\",co),Ln.component(\"tooltip\",wo),Ln.component(\"upload\",bo),mo=(po=Ln).connect,go=po.disconnect,\"MutationObserver\"in window&&(document.body?kn.read(ko):new MutationObserver(function(){document.body&&(this.disconnect(),ko())}).observe(document,{childList:!0,subtree:!0})),Ln});","import App from \"./App.svelte\";\nimport \"./global.css\";\nimport \"./fonts.css\";\nimport \"/assets/roboto-v20-latin-ext_latin-300\";\nimport \"/assets/roboto-v20-latin-ext_latin-400\";\nimport \"/assets/roboto-v20-latin-ext_latin-500\";\nimport \"/assets/roboto-v20-latin-ext_latin-700\";\nimport \"/assets/roboto-v20-latin-ext_latin-900\";\nimport \"/assets/budibase-logo.png\";\nimport \"/assets/budibase-logo-only.png\";\nimport \"uikit/dist/css/uikit.min.css\";\nimport \"uikit/dist/js/uikit.min.js\";\n\nconst app = new App({\n\ttarget: document.getElementById(\"app\")\n});\n\n\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","component_subscribe","component","store","callback","$$","on_destroy","push","unsub","subscribe","unsubscribe","create_slot","definition","ctx","slot_ctx","get_slot_context","$$scope","get_slot_changes","changed","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","Set","stylesheet","running","run_tasks","task","delete","size","loop","promise","Promise","fulfil","add","[object Object]","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","stop_propagation","stopPropagation","call","this","attr","attribute","value","removeAttribute","setAttribute","set_data","set_input_value","input","set_style","key","important","style","setProperty","select_option","select","option","__value","selected","select_options","indexOf","toggle_class","toggle","classList","HtmlTag","html","e","u","n","t","innerHTML","Array","from","childNodes","m","current_component","active","current_rules","create_rule","duration","delay","ease","uid","step","keyframes","p","rule","str","hash","charCodeAt","head","sheet","insertRule","cssRules","animation","delete_rule","split","filter","anim","join","deleteRule","set_current_component","get_current_component","Error","bubble","callbacks","type","slice","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","add_render_callback","add_flush_callback","flush","seen_callbacks","shift","update","pop","has","fragment","dirty","before_update","after_update","wait","then","dispatch","direction","kind","dispatchEvent","detail","createEvent","initCustomEvent","custom_event","outroing","outros","group_outros","r","c","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","cleanup","go","easing","tick","css","start_time","end_time","abort","started","create_out_transition","group","reset","bind","props","bound","mount_component","on_mount","new_on_destroy","map","destroy_component","make_dirty","init","instance","create_fragment","not_equal","prop_names","parent_component","context","Map","ready","ret","hydrate","l","intro","SvelteElement","HTMLElement","super","attachShadow","mode","slotted","_oldValue","newValue","$destroy","index","splice","SvelteComponent","color","className","borderClass","grouped","groupPosition","apply","v","f","s","h","_","g","y","F","T","j","A","S","O","I","R","z","Un","W","B","L","U","D","Rn","test","On","lastIndex","Qn","M","match","$","NaN","N","P","Z","q","V","K","G","RegExp","source","H","J","Y","Q","X","nn","tn","rn","en","un","on","cn","an","ln","sn","hn","pn","_n","vn","gn","dn","yn","bn","xn","jn","wn","mn","An","kn","Sn","In","zn","Wn","Bn","Ln","\\","'","\n","\r","
","
","Cn","parseFloat","Dn","parseInt","Mn","global","Tn","self","$n","Function","Fn","exports","nodeType","Nn","module","Pn","Zn","process","qn","types","binding","Vn","isArrayBuffer","Kn","isDate","Gn","isMap","Hn","isRegExp","Jn","isSet","Yn","isTypedArray","Xn","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","nt","&","<",">","\"","tt","&","<",">",""","'","rt","yu","ff","oi","Fe","En","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","clear","set","__data__","of","af","_f","ni","Se","ir","it","lu","st","ot","ft","ct","uo","at","Cr","Wu","Ai","configurable","enumerable","writable","ht","Ku","Ru","pt","_t","du","constructor","me","Ur","vo","Ir","Ae","_o","Mr","Bu","lt","po","Dr","Rr","buffer","byteOffset","byteLength","zr","exec","to","Qu","Ee","get","pf","sf","ve","_e","gt","dt","ti","bo","yt","bt","xt","wu","jt","wt","ke","mt","oo","At","fo","Et","_u","kt","Sr","Me","St","Ot","mi","ai","It","Rt","zt","Wt","Ci","Lt","hr","Ve","Ut","Mt","se","vi","message","he","$t","Ft","ci","hi","Te","qt","$u","Jt","Ht","Zu","Vt","ze","Li","Kt","Gt","su","xe","We","Ie","zu","Yt","Le","hu","xu","Ou","Qt","Xt","ye","sort","w","Wr","tr","lr","er","xi","ur","xr","Ii","Ti","or","fr","xo","Be","pr","_r","vr","gr","dr","yr","ro","br","so","jr","wr","func","thisArg","args","mr","Ar","Er","kr","jo","Iu","Or","gi","copy","Br","Ui","Lr","Tr","$r","Oe","Fr","Nr","Zr","charAt","qr","Mu","Du","replace","Vr","arguments","eo","prototype","Kr","de","ue","Jr","placeholder","Gr","Hr","pe","thru","reverse","ge","ho","Re","plant","Yr","Bt","Qr","Xr","ne","Oi","te","re","Au","ee","Su","yo","Ue","ie","Yu","Eu","Wi","oe","C","E","fe","co","Pr","ce","ei","ae","le","Ze","Gi","iteratee","Fu","be","je","we","gu","di","ji","$e","Ce","Di","De","ii","clone","Ne","Pe","qe","Ke","Ge","$i","He","Je","Ye","Qe","nu","tu","io","ru","eu","uu","fu","Go","lo","leading","maxWait","trailing","cancel","cu","cache","Cache","au","pu","vu","bu","li","ju","mu","wi","next","done","Uu","ku","valueOf","Lu","Cu","$f","toLowerCase","Tu","Nu","chain","Pu","rr","qu","Vu","defaults","pick","Gu","Hu","Ju","Math","Xu","String","TypeError","ri","ui","toString","hasOwnProperty","fi","keys","IE_PROTO","si","pi","Buffer","_i","Symbol","Uint8Array","getPrototypeOf","yi","bi","propertyIsEnumerable","isConcatSpreadable","iterator","toStringTag","Ei","clearTimeout","ki","Si","setTimeout","ceil","floor","Ri","getOwnPropertySymbols","zi","isBuffer","isFinite","Bi","max","min","Mi","random","Fi","Ni","Pi","Zi","qi","Vi","Ki","Hi","Ji","Yi","Qi","Xi","no","templateSettings","escape","evaluate","interpolate","variable","imports","string","ao","ArrayBuffer","wo","mo","Ao","Eo","ko","So","Oo","Io","Ro","zo","Wo","Bo","Lo","Uo","Co","Do","Mo","To","$o","Fo","No","Po","Zo","qo","Vo","Ko","Ho","Jo","Yo","Qo","Xo","nf","tf","rf","ef","uf","isArray","cf","lf","hf","vf","gf","df","yf","bf","xf","jf","wf","mf","Of","Af","Ef","kf","Sf","If","Rf","nr","zf","Wf","Bf","Lf","Uf","Cf","Df","Mf","Tf","toUpperCase","Ff","Nf","Pf","Zf","qf","Vf","Kf","Gf","Hf","Jf","Yf","Qf","Xf","nc","tc","rc","ec","uc","after","ary","assignIn","assignInWith","assignWith","before","bindAll","bindKey","castArray","chunk","compact","concat","cond","conforms","vt","constant","countBy","curry","iu","curryRight","ou","debounce","defaultsDeep","defer","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","flatMap","flatMapDeep","flatMapDepth","flatten","flattenDeep","flattenDepth","flip","flow","flowRight","fromPairs","functions","functionsIn","groupBy","initial","intersection","intersectionBy","intersectionWith","invert","invertBy","invokeMap","keyBy","keysIn","mapKeys","mapValues","matches","matchesProperty","memoize","merge","mergeWith","method","methodOf","mixin","negate","nthArg","omit","omitBy","once","orderBy","over","overArgs","overEvery","overSome","partial","partialRight","partition","pickBy","property","propertyOf","pull","pullAll","pullAllBy","pullAllWith","pullAt","range","rangeRight","rearg","reject","remove","rest","sampleSize","setWith","shuffle","sortBy","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toArray","toPairs","toPairsIn","toPath","toPlainObject","transform","unary","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unset","unzip","unzipWith","updateWith","values","valuesIn","without","words","wrap","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","entries","entriesIn","extend","extendWith","attempt","camelCase","capitalize","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","deburr","defaultTo","divide","endsWith","eq","escapeRegExp","every","find","findIndex","findKey","findLast","findLastIndex","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","gte","hasIn","includes","inRange","invoke","isArguments","isArrayLike","isArrayLikeObject","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isFunction","isInteger","isLength","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isNumber","isObject","isObjectLike","isPlainObject","isSafeInteger","isString","isSymbol","isUndefined","isWeakMap","isWeakSet","kebabCase","last","lastIndexOf","lowerCase","lowerFirst","lte","maxBy","mean","meanBy","minBy","stubArray","stubFalse","stubObject","stubString","stubTrue","multiply","nth","noConflict","pad","padEnd","padStart","reduce","reduceRight","repeat","result","round","runInContext","sample","snakeCase","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startCase","startsWith","subtract","sum","sumBy","template","sourceURL","times","toFinite","toInteger","toLength","toLower","toNumber","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","separator","omission","search","unescape","uniqueId","upperCase","upperFirst","each","eachRight","first","VERSION","start","end","commit","toJSON","extendAll","extendAllWith","__","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","invertObj","juxt","omitAll","nAry","path","pathEq","pathOr","paths","pickAll","pipe","pluck","prop","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","1","2","3","4","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","assignInAllWith","assignAllWith","getOr","mergeAllWith","padChars","padCharsEnd","padCharsStart","rangeStep","rangeStepRight","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","zipAll","array","object","aliasToReal","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","baseAry","cloneArray","wrapImmutable","cloner","undefined","baseConvert","util","isLib","isObj","cap","fixed","immutable","defaultHolder","fallbackHolder","forceCurry","forceFixed","forceRearg","pristine","helpers","aryMethodKeys","mapping","aryMethod","wrappers","arity","pairs","pair","indexes","castCap","iterateeRearg","overArg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","methodName","remap","oldOptions","newUtil","newFunc","newOptions","wrapped","wrapper","mutate","createCloner","aryKey","otherName","afterRearg","convert","realToAlias","alias","require$$0","require$$1","seed","alphabet","previousSeed","shuffled","nextValue","_seed_","ORIGINAL","setCharacters","_alphabet_","unique","item","ind","arr","getShuffled","characterIndex","sourceArray","targetArray","randomFromSeed","characters","lookup","crypto","msCrypto","getRandomValues","bytes","mask","log","LN2","id","byte","counter","previousSeconds","number","loopCounter","format","pow","REDUCE_TIME","version","clusterWorkerId","seconds","generate","build","seedValue","workerId","newCharacters","isValid","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","root","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","arrayAggregator","setter","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","arg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","symIterator","symToStringTag","defineProperty","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","Hash","entry","ListCache","MapCache","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","baseAssignIn","getSymbols","copySymbols","symbol","regexp","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","getMapData","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","criteria","objCriteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","createCompounder","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","getFuncName","funcName","getData","isLaziable","createHybrid","partialsRight","holdersRight","argPos","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","otherFunc","getValue","hasPath","hasFunc","ctorString","isMaskable","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoizeCapped","quote","subString","mapped","interceptor","wrapperAt","lastArgs","lastThis","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","resolver","memoized","transforms","funcsLength","iteratorToArray","remainder","isBinary","propsIndex","propsLength","basePick","word","pattern","hasUnicodeWord","unicodeWords","asciiWords","methodNames","basePropertyDeep","augend","addend","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","baseConforms","properties","baseFill","limit","isArrLike","position","baseInRange","strictLastIndexOf","strLength","radix","floating","temp","settings","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","escapeValue","interpolateValue","esTemplateValue","evaluateValue","substring","newEnd","prefix","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commonPlus","extra","common","_events","recordApi","save","getContext","getNew","load","validate","uploadFile","downloadFile","indexApi","buildIndex","listItems","aggregates","collectionApi","getAllowedRecordTypes","initialise","authApi","authenticate","authenticateTemporaryAccess","createTemporaryAccess","createUser","enableUser","disableUser","loadAccessLevels","getNewAccessLevel","getNewUser","getNewUserAuth","getUsers","saveAccessLevels","isAuthorized","changeMyPassword","setPasswordFromTemporaryCode","scorePassword","isValidPassword","validateUser","validateAccessLevels","setUserAccessLevels","templateApi","saveApplicationHierarchy","saveActionsAndTriggers","actionsApi","execute","_eventsList","makeEvent","area","areaKey","methodKey","obj","events","eventsList","BadRequestError","httpStatusCode","UnauthorisedError","NotFoundError","apiWrapper","async","app","eventNamespace","eventContext","pushCallStack","handleNotAuthorized","startDate","elapsed","publish","onBegin","publishComplete","error","publishError","apiWrapperSync","err","seedCallId","callId","calls","threadCallId","createCallStack","namespace","popCallStack","onError","endcontext","onComplete","getLock","lockFile","timeoutMilliseconds","maxLockRetries","retryCount","lock","timeout","getEpochTime","totalTimeout","datastore","createFile","getLockFileContent","NO_LOCK","parseLockFileContent","loadFile","deleteFile","sleepForRetry","epochTime","content","parts","Number","releaseLock","isNolock","trimKeySep","joinKey","strs","paramsOrArray","safeKey","splitKey","getDirFomKey","getFileFromKey","fieldDefinitions","templateDefinitions","appDefinitionFile","dirIndex","folderPath","getIndexKeyFromFileKey","ifExists","val","exists","notExists","not","isDefined","isNonNull","isNotNaN","allTrue","funcArgs","conditionFunc","anyTrue","insensitiveEquals","str1","str2","isSomething","isNothing","isNothingOrEmpty","somethingOrGetDefault","getDefaultFunc","mapIfSomethingOrDefault","mapFunc","defaultVal","none","isNotEmpty","ob","isNonEmptyArray","isNonEmptyString","tryOr","failFunc","tryAwaitOr","tryOrIgnore","tryAwaitOrIgnore","causesException","executesWithoutException","handleErrorWith","returnValInError","handleErrorWithUndefined","switchCase","cases","nextCase","nextResult","isOneOf","vals","defaultCase","getHashCode","char","toDateOrNull","toBoolOrNull","toNumberOrNull","isArrayOfString","opts","pause","res","retry","retries","getOrDefault","mapIfSomethingOrBlank","configFolder","StartsWith","searchFor","searchIn","keySep","somethingOrDefault","isValue","val1","val2","memberMatches","member","defineError","errorPrefix","awEx","toDate","toBool","makerule","field","validationError","applyRuleSet","ruleSet","itemToValidate","applyRule","itemTovalidate","filters","limiters","compileRawExpression","compileRawCode","filterRegex","limiterRegex","argsRegex","expressionCache","codeCache","compileExpression","expression","tokens","filterTokens","filterName","effect","argExpressions","parseExpression","tempVars","list","evaluateArgExpression","compileCode","code","limiterTokens","limiterName","parseCode","state","limiter","argExpression","globalObj","hasHandler","allHandlers","globals","$nxCompileToSandbox","Proxy","$nxClearSandbox","indexTypes","ancestor","indexRuleSet","compileMap","compileFilter","isRecord","indexType","getFlattenedHierarchy","appHierarchy","useCached","flattenHierarchy","currentNode","flattened","children","aggregateGroups","unionIfAny","l2","l1","child","getExactNodeForPath","pathRegx","hasMatchingAncestor","ancestorPredicate","decendantNode","getNode","nodeKey","isCollectionRecord","collectionNodeKey","getNodeByKeyOrNodeKey","keyOrNodeKey","nodeByKey","isNode","isKeyAncestorOf","ancestorKey","isAncestor","decendant","isDecendant","getRecordNodeIdFromId","recordId","recordNodeIdIsAllowed","indexNode","nodeId","allowedRecordNodeIds","recordNodeIsAllowed","recordNode","isSingle","isaggregateGroup","isRoot","isDecendantOfARecord","isGlobalIndex","isReferenceIndex","isAncestorIndex","fieldReversesReferenceToIndex","typeOptions","reverseIndexNodeKeys","getLastPartInKey","getNodesInPath","getActualKeyOfParent","parentNodeKey","actualChildKey","ks","getParentKey","hasNoMatchingAncestors","parentPredicate","findField","fieldName","fields","getRecordNodeId","recordKey","getRecordNodeById","hierarchy","getAllowedRecordNodesForIndex","recordNodes","getNodeFromNodeKeyHash","isShardedIndex","getShardName","fieldReversesReferenceToNode","getSafeFieldParser","tryParse","defaultValueFunctions","record","getSafeValueParser","getUndefinedValue","parsed","success","default","getNewValue","getInitialValue","typeFunctions","specificFunctions","null","validateTypeConstraints","validationRules","fieldValue","validateRule","getMessage","errors","getDefaultOptions","parsedFailed","parsedSuccess","getDefaultExport","sampleValue","stringify","safeParseField","safeParseValue","optionDefinitions","getDefaultValue","stringFunctions","stringTryParse","requirementDescription","parse","allowDeclaredValuesOnly","typeConstraints","boolFunctions","boolTryParse","allowNulls","JSON","numberFunctions","numberTryParse","num","maxValue","minValue","decimalPlaces","splitDecimal","getDecimalPlaces","dateFunctions","isValidDate","dateTryParse","date","mapToParsedArrary","minLength","typeName","arrayTryParse","arrayFunctions","referenceNothing","referenceFunctions","isObjectWithKey","hasStringValue","tryParseFromString","asObj","indexNodeKey","displayValue","isEmptyString","referenceExists","fileNothing","relativePath","fileFunctions","fileName","filePath","isValidFile","isLegalFilename","basicTypes","datetime","bool","file","kvType","concreteArray","allTypes","getType","USERS_LIST_FILE","userAuthFile","username","USERS_LOCK_FILE","ACCESS_LEVELS_FILE","ACCESS_LEVELS_LOCK_FILE","permissionTypes","CREATE_RECORD","UPDATE_RECORD","READ_RECORD","DELETE_RECORD","READ_INDEX","MANAGE_INDEX","MANAGE_COLLECTION","WRITE_TEMPLATES","CREATE_USER","SET_PASSWORD","CREATE_TEMPORARY_ACCESS","ENABLE_DISABLE_USER","WRITE_ACCESS_LEVELS","LIST_USERS","LIST_ACCESS_LEVELS","EXECUTE_ACTION","SET_USER_ACCESS_LEVELS","getUserByName","users","stripUserOfSensitiveStuff","user","stripped","tempCode","parseTemporaryCode","fullCode","permissionType","resourceKey","alwaysAuthorized","_isAuthorized","permissions","userperm","nodePermission","accessLevel","staticPermission","createRecord","updateRecord","deleteRecord","readRecord","writeTemplates","setPassword","readIndex","manageIndex","manageCollection","enableDisableUser","writeAccessLevels","listUsers","listAccessLevels","executeAction","permission","step2list","step3list","re_mgr0","re_mgr1","re_meq1","re_s_v","re_1a","re2_1a","re_1b","re2_1b","re_1b_2","re2_1b_2","re3_1b_2","re4_1b_2","re_1c","re_2","re_3","re_4","re2_4","re_5","re_5_1","re3_5","porterStemmer","lunr","builder","Builder","pipeline","trimmer","stopWordFilter","stemmer","searchPipeline","utils","warn","console","asString","FieldRef","docRef","stringValue","_stringValue","joiner","fromString","fieldRef","elements","complete","intersect","idf","posting","documentCount","documentsWithTerm","abs","Token","metadata","tokenizer","len","sliceEnd","sliceStart","sliceLength","tokenMetadata","Pipeline","_stack","registeredFunctions","registerFunction","label","warnIfFunctionNotRegistered","serialised","fnName","existingFn","newFn","pos","stackLength","memo","runString","token","Vector","_magnitude","positionForIndex","pivotPoint","pivotIndex","insertIdx","upsert","magnitude","sumOfSquares","elementsLength","sqrt","dot","otherVector","dotProduct","aLen","bLen","aVal","bVal","similarity","output","ational","tional","enci","anci","izer","bli","alli","entli","eli","ousli","ization","ation","ator","alism","iveness","fulness","ousness","aliti","iviti","biliti","logi","icate","ative","alize","iciti","ical","ful","ness","stem","suffix","firstch","re2","re3","re4","substr","fp","generateStopWordFilter","stopWords","stopWord","TokenSet","final","edges","_nextId","fromArray","finish","fromClause","clause","fromFuzzyString","term","editDistance","editsRemaining","frame","noEditNode","insertionNode","substitutionNode","transposeNode","charA","charB","edge","_str","labels","qNode","qEdges","qLen","nEdges","nLen","qEdge","nEdge","previousWord","uncheckedNodes","minimizedNodes","commonPrefix","minimize","nextNode","downTo","childKey","Index","attrs","invertedIndex","fieldVectors","tokenSet","queryString","query","QueryParser","Query","matchingFields","queryVectors","termFieldCache","requiredMatches","prohibitedMatches","clauses","terms","clauseMatches","usePipeline","termTokenSet","expandedTerms","presence","REQUIRED","expandedTerm","termIndex","_index","fieldPosting","matchingDocumentRefs","termField","matchingDocumentsSet","PROHIBITED","boost","fieldMatch","matchingDocumentRef","matchingFieldRef","MatchData","allRequiredMatches","allProhibitedMatches","matchingFieldRefs","results","isNegated","docMatch","fieldVector","score","combine","ref","serializedIndex","serializedVectors","serializedInvertedIndex","tokenSetBuilder","tuple","_ref","_fields","_documents","fieldTermFrequencies","fieldLengths","_b","_k1","metadataWhitelist","attributes","RangeError","k1","doc","extractor","fieldTerms","metadataKey","calculateAverageFieldLengths","fieldRefs","numberOfFields","documentsWithField","averageFieldLength","createFieldVectors","fieldRefsLength","termIdfCache","fieldLength","termFrequencies","termsLength","fieldBoost","docBoost","scoreWithPrecision","createTokenSet","use","unshift","clonedMetadata","metadataKeys","otherMatchData","allFields","wildcard","NONE","LEADING","TRAILING","OPTIONAL","QueryParseError","QueryLexer","lexemes","escapeCharPositions","lexText","sliceString","subSlices","emit","escapeCharacter","EOS","width","ignore","backup","acceptDigitRun","charCode","more","FIELD","TERM","EDIT_DISTANCE","BOOST","PRESENCE","lexField","lexer","lexTerm","lexEditDistance","lexBoost","lexEOS","termSeparator","currentClause","lexemeIdx","parseClause","peekLexeme","consumeLexeme","lexeme","nextClause","completedClause","parser","parsePresence","parseField","parseTerm","errorMessage","nextLexeme","possibleFields","parseEditDistance","parseBoost","revLookup","Arr","inited","encodeChunk","uint8","tmp","fromByteArray","extraBytes","len2","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","write","TYPED_ARRAY_SUPPORT","_kMaxLength","kMaxLength","createBuffer","that","__proto__","encodingOrOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","internalIsBuffer","checked","fromObject","assertSize","_isBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","base64Slice","base64.fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","poolSize","_augment","alloc","allocUnsafeSlow","compare","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754.write","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754.read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","b64","placeHolders","base64.toByteArray","stringtrim","base64clean","dst","isFastBuffer","isSlowBuffer","copyProps","SafeBuffer","SlowBuffer","createNodeErrors","nodeKeyMaker","isSingleRecord","collectionName","construct","pathRegxMaker","collectionPathRegx","addToParent","defaultIndex","constructNode","getNodeId","findRoot","constructHierarchy","def","getNewRootLevel","pathMaps","_getNewRecordTemplate","createDefaultIndex","allidsShardFactor","getNewIndexTemplate","getNewRecordTemplate","getNewSingleRecordTemplate","getSortKey","getNewAggregateGroupTemplate","condition","getNewAggregateTemplate","aggregatedValue","fieldErrors","AddFieldValidationFailed","getNewField","fieldRules","allowedTypes","typeOptionsRules","optName","validateField","everySingleField","validateAllFields","addField","recordTemplate","validationMessages","getNewRecordValidationRule","invalidFields","messageWhenInvalid","expressionWhenValid","getStaticValue","commonRecordValidationRules","fieldNotEmpty","fieldBetween","fieldGreaterThan","addRecordValidationRule","createTrigger","actionName","eventName","optionsCreator","createAction","behaviourSource","behaviourName","initialOptions","aggregateRules","validateAggregate","aggregate","sets","commonRules","stringNotEmpty","recordRules","aggregateGroupRules","validateNode","getRuleSet","validateAll","duplicateNameRule","duplicateNodeKeyErrors","aggregateErrors","validateAllAggregates","actionRules","duplicateActionRule","validateAction","validateActions","allActions","duplicateActions","a2","validateTrigger","trigger","triggerRules","validateTriggers","triggers","getApplicationDefinition","appDefinition","loadJson","_saveApplicationHierarchy","validationErrors","updateJson","createFolder","createJson","_saveActionsAndTriggers","actionValidErrs","triggerValidErrs","getTemplateApi","getBehaviourSources","api","_getUsers","_loadAccessLevels","dummyHash","password","_authenticate","allUsers","userAuth","enabled","accessLevels","passwordHash","buildUserPermissions","verified","verify","isUser","tempAccessCode","temporaryAccessId","temporaryAccessHash","temporaryAccessExpiryEpoch","userAccessLevels","allAccessLevels","levels","ua","userName","_createTemporaryAccess","getTemporaryCode","tempId","allusers","u2","userRules","_getNewUser","_getNewUserAuth","_isValidPassword","currentPw","newpassword","_changeMyPassword","existingAuth","doSet","_setPasswordFromTemporaryCode","currentTime","auth","_scorePassword","letters","variations","digits","nonWords","variationCount","check","strengthText","_createUser","userErrors","getAccess","tempAccess","_enableUser","_disableUser","toggleUser","permissionRules","isAllowedType","isRecordOrIndexType","applyPermissionRules","applyLevelRules","allLevels","accessLevelRules","_validateAccessLevels","level","validateAccessLevel","_saveAccessLevels","errs","_setUserAccessLevels","actualAccessLevels","missing","getAuthApi","generateFullPermissions","allNodes","indexNodes","hierarchyFunctions","getPotentialReverseReferenceIndexes","refIndex","getPotentialReferenceIndexes","getDefaultTypeOptions","getNewAction","getNewTrigger","subscriber_queue","setState","pathParts","safeSetPath","currentPartIndex","currentKey","loadRecord","statePath","url","rootPath","isSuccess","listRecords","indexKey","records","post","body","localStorage","setItem","getNewChildRecordToState","coreApi","childRecordType","errorHandler","rec","getNewChild","getNewRecordToState","collectionKey","EVENT_TYPE_MEMBER_NAME","eventHandlers","parameters","getState","apiCall","notFound","badRequest","forbidden","fetch","headers","Content-Type","credentials","status","json","statusText","patch","del","apiOpts","createApi","fallback","safeGetPath","Set State","Load Record","List Records","Save Record","saveRecord","Get New Child Record","Get New Record","Authenticate","handlersObj","handlersArray","defaultDef","required","elementDefinition","propType","isOfType","defaultDefinition","expandSingleProp","propDef","expandPropsDefinition","propsDefinition","expandedProps","isComponent","isEvent","_component","asset","##bbstate","emptyState","normalString","isRootComponent","inherits","hasProp","searchAllComponents","allComponents","phrase","componentMatches","hasPhrase","tags","getExactComponent","s1","s2","stringEquals","getInstanceProps","componentInfo","finalProps","fullProps","getNewComponentInfo","parentcomponent","description","getComponentInfo","comp","subComponentProps","cname","createProps","rootProps","inheritedProps","targetComponent","unsetProps","rootDefaultProps","rootComponent","componentName","derivedFromProps","propName","parsedPropDef","parsePropDef","createArrayElementProps","arrayPropName","buildPropsHierarchy","baseComponent","buildProps","propComponentInfo","subComponentInstanceProps","propsArray","newPropsArray","baseComponentInfo","makeLibraryUrl","appName","lib","encodeURI","appname","location","apps","hasAppPackage","pkg","libraries","appPackage","allLibraries","pages","componentLibraries","libModule","import","loadLibs","loadLibraryUrls","libUrl","libName","importPath","loadLibUrls","derivedComponents","combineComponents","rootComponents","shadowHierarchy","createShadowHierarchy","showSettings","show","useAnalytics","showBackend","isBackend","showFrontend","derived","newRecord","useRoot","currentNodeIsNew","selectExistingNode","activeNav","newIndex","saveCurrentNode","existingNode","cloned","currentIndex","savePackage","importAppDefinition","deleteCurrentNode","nodeToDelete","saveField","databaseStore","db","deleteField","saveAction","newAction","oldAction","existingAction","deleteAction","saveTrigger","newTrigger","oldTrigger","existingTrigger","deleteTrigger","saveLevel","newLevel","oldLevel","existingLevel","deleteLevel","setActiveNav","navName","saveDerivedComponent","derivedComponent","components","currentFrontEndItem","currentComponentInfo","currentComponentIsNew","createDerivedComponent","newComponentInfo","deleteDerivedComponent","renameDerivedComponent","oldname","newname","savePage","currentFrontEndIsComponent","currentPageName","page","addComponentLibrary","response","componentsArray","removeComponentLibrary","addStylesheet","stylesheets","removeStylesheet","refreshComponents","main","appBody","unauthenticated","setCurrentComponent","setCurrentPage","pageName","mainUi","unauthenticatedUi","stop","subscribers","new_value","run_queue","invalidate","subscriber","newChildRecord","newRootRecord","newChildIndex","newRootIndex","getStore","setupRouter","pushState","history","$store","factory","modules","installedModules","__webpack_require__","moduleId","getter","__esModule","./dist/icons.json","activity","airplay","alert-circle","alert-octagon","alert-triangle","align-center","align-justify","align-left","align-right","aperture","archive","arrow-down-circle","arrow-down-left","arrow-down-right","arrow-down","arrow-left-circle","arrow-left","arrow-right-circle","arrow-right","arrow-up-circle","arrow-up-left","arrow-up-right","arrow-up","at-sign","award","bar-chart-2","bar-chart","battery-charging","battery","bell-off","bell","bluetooth","bold","book-open","book","bookmark","box","briefcase","calendar","camera-off","camera","cast","check-circle","check-square","chevron-down","chevron-left","chevron-right","chevron-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up","chrome","circle","clipboard","clock","cloud-drizzle","cloud-lightning","cloud-off","cloud-rain","cloud-snow","cloud","codepen","codesandbox","coffee","columns","command","compass","corner-down-left","corner-down-right","corner-left-down","corner-left-up","corner-right-down","corner-right-up","corner-up-left","corner-up-right","cpu","credit-card","crop","crosshair","database","disc","dollar-sign","download-cloud","download","droplet","edit-2","edit-3","edit","external-link","eye-off","eye","facebook","fast-forward","feather","figma","file-minus","file-plus","file-text","film","flag","folder-minus","folder-plus","folder","framer","frown","gift","git-branch","git-commit","git-merge","git-pull-request","github","gitlab","globe","grid","hard-drive","headphones","heart","help-circle","hexagon","home","image","inbox","info","instagram","italic","layers","layout","life-buoy","link-2","link","linkedin","loader","log-in","log-out","mail","map-pin","maximize-2","maximize","meh","menu","message-circle","message-square","mic-off","mic","minimize-2","minus-circle","minus-square","minus","monitor","moon","more-horizontal","more-vertical","mouse-pointer","move","music","navigation-2","navigation","octagon","package","paperclip","pause-circle","pen-tool","percent","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","play-circle","play","plus-circle","plus-square","plus","pocket","power","printer","radio","refresh-ccw","refresh-cw","rewind","rotate-ccw","rotate-cw","rss","scissors","send","server","share-2","share","shield-off","shield","shopping-bag","shopping-cart","sidebar","skip-back","skip-forward","slack","slash","sliders","smartphone","smile","speaker","square","star","stop-circle","sun","sunrise","sunset","tablet","terminal","thermometer","thumbs-down","thumbs-up","toggle-left","toggle-right","tool","trash-2","trash","trello","trending-down","trending-up","triangle","truck","tv","twitch","twitter","umbrella","underline","unlock","upload-cloud","upload","user-check","user-minus","user-plus","user-x","video-off","video","voicemail","volume-1","volume-2","volume-x","volume","watch","wifi-off","wifi","wind","x-circle","x-octagon","x-square","youtube","zap-off","zap","zoom-in","zoom-out","./node_modules/classnames/dedupe.js","__WEBPACK_AMD_DEFINE_RESULT__","classNames","StorageObject","_parseArray","resultSet","_parse","hasOwn","SPACE","argType","_parseString","_parseObject","_parseNumber","classSet","./node_modules/core-js/es/array/from.js","./node_modules/core-js/internals/a-function.js","./node_modules/core-js/internals/an-object.js","./node_modules/core-js/internals/array-from.js","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","argumentsLength","mapfn","iteratorMethod","./node_modules/core-js/internals/array-includes.js","toIndexedObject","toAbsoluteIndex","IS_INCLUDES","$this","el","./node_modules/core-js/internals/bind-context.js","aFunction","./node_modules/core-js/internals/call-with-safe-iteration-closing.js","anObject","ENTRIES","returnMethod","./node_modules/core-js/internals/check-correctness-of-iteration.js","ITERATOR","wellKnownSymbol","SAFE_CLOSING","called","iteratorWithReturn","return","SKIP_CLOSING","ITERATION_SUPPORT","./node_modules/core-js/internals/classof-raw.js","./node_modules/core-js/internals/classof.js","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","./node_modules/core-js/internals/copy-constructor-properties.js","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","getOwnPropertyDescriptor","./node_modules/core-js/internals/correct-prototype-getter.js","fails","./node_modules/core-js/internals/create-iterator-constructor.js","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","./node_modules/core-js/internals/create-property-descriptor.js","bitmap","./node_modules/core-js/internals/create-property.js","toPrimitive","propertyKey","./node_modules/core-js/internals/define-iterator.js","createIteratorConstructor","setPrototypeOf","hide","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","forced","./node_modules/core-js/internals/descriptors.js","./node_modules/core-js/internals/document-create-element.js","exist","./node_modules/core-js/internals/enum-bug-keys.js","./node_modules/core-js/internals/export.js","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","./node_modules/core-js/internals/fails.js","./node_modules/core-js/internals/function-to-string.js","shared","./node_modules/core-js/internals/get-iterator-method.js","classof","./node_modules/core-js/internals/global.js","globalThis","./node_modules/core-js/internals/has.js","./node_modules/core-js/internals/hidden-keys.js","./node_modules/core-js/internals/hide.js","DESCRIPTORS","./node_modules/core-js/internals/html.js","documentElement","./node_modules/core-js/internals/ie8-dom-define.js","./node_modules/core-js/internals/indexed-object.js","./node_modules/core-js/internals/internal-state.js","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","wmget","wmhas","wmset","STATE","enforce","getterFor","TYPE","./node_modules/core-js/internals/is-array-iterator-method.js","ArrayPrototype","./node_modules/core-js/internals/is-forced.js","replacement","feature","detection","normalize","POLYFILL","NATIVE","./node_modules/core-js/internals/is-object.js","./node_modules/core-js/internals/is-pure.js","./node_modules/core-js/internals/iterators-core.js","PrototypeOfArrayIteratorPrototype","arrayIterator","./node_modules/core-js/internals/iterators.js","./node_modules/core-js/internals/native-symbol.js","./node_modules/core-js/internals/native-weak-map.js","nativeFunctionToString","./node_modules/core-js/internals/object-create.js","defineProperties","enumBugKeys","documentCreateElement","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","close","Properties","./node_modules/core-js/internals/object-define-properties.js","objectKeys","./node_modules/core-js/internals/object-define-property.js","IE8_DOM_DEFINE","nativeDefineProperty","Attributes","./node_modules/core-js/internals/object-get-own-property-descriptor.js","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","./node_modules/core-js/internals/object-get-own-property-names.js","internalObjectKeys","getOwnPropertyNames","./node_modules/core-js/internals/object-get-own-property-symbols.js","./node_modules/core-js/internals/object-get-prototype-of.js","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","./node_modules/core-js/internals/object-keys-internal.js","names","./node_modules/core-js/internals/object-keys.js","./node_modules/core-js/internals/object-property-is-enumerable.js","nativePropertyIsEnumerable","NASHORN_BUG","./node_modules/core-js/internals/object-set-prototype-of.js","validateSetPrototypeOfArguments","correctSetter","./node_modules/core-js/internals/own-keys.js","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Reflect","./node_modules/core-js/internals/path.js","./node_modules/core-js/internals/redefine.js","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","./node_modules/core-js/internals/require-object-coercible.js","./node_modules/core-js/internals/set-global.js","./node_modules/core-js/internals/set-to-string-tag.js","TAG","./node_modules/core-js/internals/shared-key.js","./node_modules/core-js/internals/shared.js","copyright","./node_modules/core-js/internals/string-at.js","requireObjectCoercible","CONVERT_TO_STRING","second","./node_modules/core-js/internals/to-absolute-index.js","integer","./node_modules/core-js/internals/to-indexed-object.js","IndexedObject","./node_modules/core-js/internals/to-integer.js","argument","./node_modules/core-js/internals/to-length.js","./node_modules/core-js/internals/to-object.js","./node_modules/core-js/internals/to-primitive.js","./node_modules/core-js/internals/uid.js","postfix","./node_modules/core-js/internals/validate-set-prototype-of-arguments.js","./node_modules/core-js/internals/well-known-symbol.js","NATIVE_SYMBOL","./node_modules/core-js/modules/es.array.from.js","checkCorrectnessOfIteration","./node_modules/core-js/modules/es.string.iterator.js","codePointAt","defineIterator","setInternalState","iterated","point","./node_modules/webpack/buildin/global.js","eval","./src/default-attrs.json","xmlns","height","viewBox","stroke","stroke-width","stroke-linecap","stroke-linejoin","./src/icon.js","_extends","_createClass","Constructor","protoProps","staticProps","_dedupe2","_interopRequireDefault","_defaultAttrs2","Icon","contents","_classCallCheck","class","attrsToString","./src/icons.js","_icon2","_icons2","_tags2","icon","./src/index.js","_toSvg2","_replace2","icons","toSvg","./src/replace.js","elementsToReplace","querySelectorAll","elementAttrs","getAttrs","svgString","svgElement","DOMParser","parseFromString","querySelector","replaceChild","replaceElement","./src/tags.json","life-bouy","./src/to-svg.js","_icons","0","getIcon","hoverColor","currentAttributes","_attributes","subComponents","isExpanded","isInSubfolder","click_handler","title","isComponentSelected","click_handler_1","subfolders","componentsThisLevel","pathPartsThisLevel","thisLevel","expandedFolders","joinPath","normalizedName","isOnThisLevel","notOnThisLevel","subfolder","lastPartOfName","subFolder","folderName","expandFolder","expandedFolder","newFolders","f1","f2","infoText","disabled","hasError","margin","textMember","valueMember","multiple","selected_option","mozNow","msNow","oNow","webkitNow","isBinding","setBinding","getBinding","makeError","expandPropDef","validateProps","isFinal","isArrayElement","propDefName","propValue","arrayItem","arrayErrs","arrErr","filteredComponents","onComponentChosen","objPrototype","hyphenateCache","hyphenateRe","hyphenate","camelizeRe","camelize","ucfirst","strPrototype","startsWithFn","endsWithFn","arrPrototype","includesFn","includesStr","includesArray","findIndexFn","arguments$1","isWindow","isDocument","isJQuery","jquery","Node","isNodeCollection","isNumeric","toBoolean","toFloat","toNode","toNodes","Boolean","toList","toMs","ref$1","propA","propB","uniqueBy","intersectRect","r1","r2","left","right","top","bottom","pointInRect","rect","Dimensions","ratio","dimensions","aProp","contain","maxDimensions","this$1","cover","getAttribute","removeAttr","hasAttr","hasAttribute","isIE","navigator","userAgent","isRtl","hasTouchEvents","hasPointerEvents","PointerEvent","hasTouch","DocumentTouch","maxTouchPoints","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","pointerCancel","selector","queryAll","nodes","findAll","isContextSelector","ownerDocument","_query","queryFn","removes","contextSanitizeRe","selectorRe","splitSelector","selectors","closest","selectors$1","prev","previousElementSibling","contextSelectorRe","elProto","Element","matchesFn","webkitMatchesSelector","msMatchesSelector","closestFn","parents","escapeFn","CSS","voidElements","base","col","embed","img","keygen","menuitem","meta","param","track","wbr","isVoidElement","tagName","isVisible","offsetWidth","offsetHeight","getClientRects","selInput","isInput","within","getArgs","targets","listener","useCapture","toEventTargets","delegates","delegate","currentTarget","selfFilter","useCaptureFilter","off","notCanceled","bubbles","cancelable","capture","isEventTarget","toEventTarget","isTouch","pointerType","touches","getEventPos","changedTouches","PromiseFn","Deferred","PENDING","setImmediate","executor","deferred","race","ajax","env","xhr","XMLHttpRequest","beforeSend","responseType","header","setRequestHeader","getImage","srcset","sizes","Image","onerror","onload","readyState","unbind","getIndex","finite","hasChildNodes","insertNodes","nextSibling","wrapAll","structure","firstChild","wrapInner","unwrap","notify","reason","onResolved","onRejected","catch","fragmentRe","singleTagRe","container","insertAdjacentHTML","textContent","firstElementChild","nextElementSibling","isHtml","addClass","apply$1","removeClass","removeClasses","cls","replaceClass","hasClass","toggleClass","force","getArgs$1","supports","Force","Multiple","_multiple","_force","cssNumber","animation-iteration-count","column-count","fill-opacity","flex-grow","flex-shrink","font-weight","line-height","opacity","orphans","stroke-dasharray","stroke-dashoffset","widows","z-index","zoom","getStyle","removeProperty","styles","getStyles","pseudoElt","defaultView","getComputedStyle","vars","getCssVar","docEl","getPropertyValue","cssProps","prefixedName","cssPrefixes","vendorPropName","transition","timing","timer","transition-property","transition-duration","transition-timing-function","Transition","inProgress","animationPrefix","clsCancelAnimation","animate","origin","hasReset","Animation","in","dirs","positionAt","elAttach","targetAttach","elOffset","targetOffset","boundary","getPos","flipped","dim","getDimensions","targetDim","moveTo","getOffsets","boundaries","getWindow","align","alignFlip","elemOffset","centerOffset","centerTargetOffset","newVal","coordinates","currentOffset","hidden","pageYOffset","pageXOffset","innerHeight","innerWidth","getBoundingClientRect","offsetParent","getDocument","getDocEl","parentOffset","dimension","boxModelAdjust","sizing","attach","factor","offsets","flipPosition","isInView","topOffset","leftOffset","win","client","bounding","scrolledOver","heightOffset","elHeight","offsetPosition","vp","vh","diff","scrollTop","scrollTo","offsetTop","offsetLeft","toPx","fastdom","reads","writes","scheduleFlush","remove$1","runTasks","scheduled","microtask","MouseTracker","slope","positions","ticking","pageX","pageY","movesTo","prevPos","points","strats","mergeFnData","parentVal","childVal","vm","concatStrat","mergeOptions","extends","mixins","mergeKey","key$1","parseOptions","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","Player","cmd","postMessage","isVideo","isYoutube","isVimeo","isHTML5","isIFrame","enableApi","poller","vimeo","setInterval","player_id","clearInterval","mute","muted","IntersectionObserver","IntersectionObserverClass","rootMargin","pending","takeRecords","passive","inView","isIntersecting","observe","disconnect","getComponentName","UIkit","_init","freeze","prepend","DATA","_connected","_callUpdate","plugin","installed","Sub","globalAPI","_callHook","hook","handlers","$options","_callConnected","_data","_computeds","_initProps","_initEvents","_initObserver","_callDisconnected","_observer","_unbindEvents","_callWatches","updates","_frames","hooksAPI","getProps","data$1","coerce","prop$1","registerComputed","$props","$el","registerEvent","notIn","normalizeData","_uid","_initData","_initMethods","_initComputeds","$mount","$name","exclude","MutationObserver","$reset","attributeFilter","stateAPI","argsArray","functional","getComponent","opt","install","_initialized","getComponents","connect","name$1","componentAPI","$emit","removeEl","$create","$update","$getComponent","$container","instanceAPI","Class","Togglable","queued","initProps","overflow","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","_toggleElement","toggled","isToggled","untoggled","scroll","toggleNow","updateAria","_toggle","inner","lastElementChild","currentHeight","endHeight","toggleAnimation","focus","blur","Accordion","collapsible","clsOpen","items","preventDefault","isItem","_wrapper","Alert","selClose","Core","x1","y1","x2","y2","Video","automute","autoplay","preload","player","visible","Cover","naturalWidth","videoWidth","clientWidth","naturalHeight","videoHeight","clientHeight","Position","clsPos","offset$1","axis","getAxis","Drop","boundaryAlign","delayShow","delayHide","clsDrop","hoverIdle","tracker","defaultPrevented","clearTimers","delayOn","isActive","tryShow","isDelaying","showTimer","isParentOf","hideTimer","isChildOf","alignTo","Dropdown","FormCustom","files","Gif","inview","Margin","firstColumn","rows","getRows","stacks","row","getOffset","leftDim","Grid","masonry","parallax","clsStack","transitionInProgress","translates","maxColumnHeight","padding","getPaddingBottom","height$1","scrolled","distance","column","maxScrolled","FlexBug","selMinHeight","forceHeight","HeightMatch","heights","getHeights","hasMinHeight","minHeight","hasShrunk","toFixed","HeightViewport","expand","offsetBottom","dataset","heightExpand","Svg","strokeAnimation","focusable","include","svg","getSvg","applyAttributes","svgEl","insertSVG","getMaxPathLength","svgs","decodeURIComponent","symbols","symbolRe","parseSymbols","parseSVG","getTotalLength","spinner","totop","marker","close-icon","close-large","navbar-toggle-icon","overlay-icon","pagination-next","pagination-previous","search-icon","search-large","search-navbar","slidenav-next","slidenav-next-large","slidenav-previous","slidenav-previous-large","added","cmp","isIcon","cloneNode","applyRtl","IconComponent","Slidenav","Search","Close","Spinner","Img","dataSrc","dataSrcset","cacheKey","dataWidth","dataHeight","dataSizes","isImg","storage","setSrcAttrs","sizesToPixel","observer","currentSrc","devicePixelRatio","bgSize","srcSize","descriptors","srcSetRe","change","backgroundImage","sizesRe","matchMedia","sizeRe","additionRe","sessionStorage","Media","media","toMedia","Leader","clsWrapper","clsHide","attrFill","Container","active$1","Modal","selPanel","escClose","bgClose","overlay","panel","transitionElement","modal","clsPage","keyCode","animate$1","_reject","Modal$1","dialog","alert","confirm","resolved","prompt","ok","Nav","Navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","dropdowns","getDropdown","getActive","transitionTo","newHeight","oldHeight","clip","Offcanvas","clsContainer","clsFlip","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","targetTouches","clientY","scrollHeight","getViewport","viewport","OverflowAuto","selContainer","selContent","Responsive","Scroll","docHeight","winHeight","startY","currentY","cos","PI","click","Scrollspy","inViewClass","_ukScrollspyState","ScrollspyNav","links","Sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","isFixed","elTop","bottomOffset","parseProp","inactive","lastScroll","margins","initTimestamp","lastDir","initScroll","propOffset","Switcher","swiping","attrItem","connects","toggles","hasPrev","Tab","Toggle","href","core","Countdown","days","hours","minutes","unit","total","timespan","digit","targetClass","Animate","propsFrom","oldScrollY","propsTo","getPositionWithMargin","zIndex","pointerEvents","Filter","selActive","updateState","old","listA","listB","actives","mergeState","stateFilter","ref_sort","stateSort","stateOrder","getFilter","matchFilter","getSelector","sorted","localeCompare","numeric","sortItems","filterBy","Animations","slide","translate","translated","scale3d","Animations$1","fade","scale","triggerUpdate","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","interval","draggable","SliderDrag","threshold","selSlides","button","drag","_transitioner","getDistance","dragging","prevIndex","unbindMove","dis","nextIndex","_getDistance","itemShown","_translate","_show","dirChange","userSelect","Slider","selNav","nav","selNavItem","navItems","maxIndex","updateNav","getValidIndex","clsActivated","velocity","Transitioner","transitionOptions","speedUp","selList","itemshown","queueIndex","forward","getDirection","_getTransitioner","transitioner","Slideshow","linear","itemshow itemhide itemshown itemhidden","beforeitemshow","itemhidden","lightboxPanel","delayControls","videoAutoplay","selCaption","caption","showControls","hideControls","getItem","loadItem","alt","setError","poster","setIframe","getIframe","withCredentials","ref_response","controlsTimer","Lightbox","toItem","containers","Notification","clsClose","clsMsg","notification","closeAll","immediate","marginProp","startProps","removeFn","Parallax","bgPos","isColor","isCssProp","steps","getUnit","covers","down","bgProps","bg","backgroundSize","_image","dimEl","dimImage","span","posPercentage","backgroundRepeat","getCss","getStep","Parallax$1","getOffsetElement","ease$1","SliderReactive","getLeft","center","getElLeft","bounds","centerEl","getMax","getWidth","triggerUpdate$1","Slider$1","updateTranslates","getItemIn","getActives","slideLeft","avgWidth","leftCenter","slideWidth","slideRight","itemshow","slideIndex","SlideshowParallax","selItem","ref_detail","getCurrent","isIn","trackTimer","obj$1","Animations$2","Slideshow$1","maxHeight","Sortable","clsItem","clsPlaceholder","clsDrag","clsDragState","clsBase","clsNoDrag","clsEmpty","clsCustom","handle","scrollY","touchAction","trackScroll","scrollEl","elementFromPoint","getScrollingElement","parentElement","parents$1","overflowRe","touched","outerHTML","boxSizing","sortable","getSortable","classes","isPredecessor","scrollingElement","Tooltip","_hasTitle","aria-expanded","_unbind","tooltip","Upload","allow","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","beforeAll","completeAll","fail","loadEnd","loadStart","progress","transfer","dataTransfer","dragenter","dragover","dragleave","match$1","chunks","FormData","mutations","applyMutation","childList","subtree","characterData","mutation","addedNodes","removedNodes","i$1","applyChildList","attributeName","applyAttribute","boot","chooseComponent","onEdit","clearComponent","componentChosen","hideDialog","confirmClearComponent","componentSelected","shortName","modalAction","CHOOSE_COMPONENT","CLEAR_COMPONENT","emptyProps","modalElement","onValueChanged","showDialog","setProp","fieldHasError","onEditComponent","____name","elementDefinitionArray","addElement","parentProps","onValidate","onEditComponentProp","elementErrors","elArray","elProp","newElement","newProps","elementProps","makeBinding","bindingPath","canOnlyBind","clearBinding","bindingFallbackValue","setBindingPath","setBindingFallback","setBindingSource","bindingSource","isBound","onChanged","forceIsBound","ev","onParameterChanged","onRemoved","eventTypeChanged","eventType","eventChanged","paramsAsObject","eType","emptyParameters","newparameters","onEventHandlerChanged","removeHandler","addHandler","newHandler","oldEvent","newEvent","newEvents","setComponentProp","inheritedExpanded","inheritedPropsDefinitions","propsDefinitions","shouldValidate","instanceProps","onPropsChanged","isInstance","isPropInherited","nowSet","arrayIndex","cubicOut","padding_top","padding_bottom","margin_top","margin_bottom","border_top_width","borderTopWidth","border_bottom_width","borderBottomWidth","propsChanged","onSubComponentPropsChanged","onSubComponentGoBack","editingSubComponentProps","editingSubComponentTitle","onGoBack","editingSubComponentName","editingSubComponentArrayIndex","editingSubComponentArrayPropName","subProps","componentDetailsExpanded","onPropsValidate","componentInstanceCancelEdit","editingComponentInstanceTitle","editingComponentInstance","componentInstancePropsChanged","nameInvalid","tagsString","confirmDeleteComponent","deleteComponent","editingComponentArrayIndex","editingComponentArrayPropName","propsValidationErrors","editingComponentInstancePropName","updateComponent","doChange","newComponent","ukModal","isOpen","onClosed","listenerAdded","splitName","fullname","stylesheetLinks","libraryDependencies","componentDependsOnLibrary","addLib","addNewLib","addNewStylesheet","removeLibrary","entryComponent","notSeletedComponent","newComponentPicker","settingsView","navActive","onclick","iconName","isDroppedDown","setActive","newChildActions","defaultNewChildActions","inputChanged","valuesText","hasErrors","__assign","HOOKS","_disable","_enable","allowInput","altFormat","altInput","altInputClass","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","enableTime","getWeek","givenDate","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","hourAriaLabel","minuteAriaLabel","int","arrayify","elem","clearNode","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","doNothing","monthToStr","monthNumber","revFormat","dateObj","monthName","setMonth","hour","day","getHours","shortMonth","setSeconds","unixSeconds","weekNum","weekNumber","year","setFullYear","ISODate","setMinutes","month","unixMillSeconds","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","createDateFormatter","_a","_c","l10n","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","compareDates","date1","date2","isBetween","ts","ts1","ts2","DAY","_loop_1","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","calendarContainer","visibility","daysContainer","daysWidth","weekWrapper","updateTime","selectedDates","setDefaultTime","isKeyDown","curValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","limitMaxHours","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","changeYear","_handlers","onClick","evt","triggerChange","triggerEvent","bindEvents","inputType","mobileInput","tabIndex","mobileFormatStr","setupMobile","debouncedResize","onResize","onMouseOver","ontouchstart","documentClick","monthNav","onMonthNavClick","selectDate","timeContainer","timeIncrement","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","redraw","inputElem","createDocumentFragment","yearElements","monthElements","prevMonthNav","nextMonthNav","buildMonths","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","hourInput","aria-label","getElementsByTagName","minuteInput","military2ampm","secondInput","buildTime","customAppend","appendTo","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","focusOnDay","dayFocused","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","isCalendarElem","eventTarget_1","composedPath","getEventTarget","isCalendarElement","lostFocus","relatedTarget","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","ctrlKey","elems","pluginElements","shiftKey","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","setupLocale","l10ns","userConfig","customPositionElement","_positionElement","calendarHeight","acc","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","rightMost","centerMost","styleSheets","bodyWidth","centerLeft","centerIndex","centerStyle","centerBefore","msMaxTouchPoints","findParent","selectedDate","shouldChangeMonth","selectedIndex","showTimeInput","single","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","_initialDate","_createElement","lastChild","_type","wasOpen","CALLBACKS","setSelectedDate","inputDate","dates","parseDateRules","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","boolOpts","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","parseConfig","nodeName","preloadedDate","defaultDate","_showTimeInput","setupDates","isSafari","_flatpickr","nodeList","instances","HTMLCollection","NodeList","localize","setDefaults","jQuery","fp_incr","fpInstance","clonedField","possibleReferenceIndexes","func_1","possibleReverseReferenceIndexes","func_2","func_3","typeChanged","onFinished","selectedReverseRefIndex","getTypeOptions","editingField","fieldToEdit","onFinishedFieldEdit","getIndexAllowedRecords","click_handler_2","newField","editField","editIndex","MIN_SAFE_INTEGER","getTypeOptionsValueText","isallowed","change_handler","indexableRecords","toggleAllowedRecord","openConfirmDelete","confirmDelete","hierarchyWidth","defaultNewIndexActions","defaultNewRecordActions","newIndexActions","newRecordActions","clonedAction","addNewOption","optKey","optValue","removeOption","newActionsList","actionsArray","getDefaultOptionsHtml","editingAction","actionEditingFinished","editingActionIsNew","isEditing","onActionEdit","onActionDelete","onActionSave","onActionCancel","defaultOptions","clonedTrigger","actionNames","allTriggers","newTriggersList","editingTrigger","triggerEditingFinished","editingTriggerIsNew","onTriggerEdit","onTriggerDelete","onTriggerSave","onTriggerCancel","getPermissionName","hasPermission","permissionChanged","clonedLevel","permissionMatrix","allPermissions","matchPermissions","p1","p2","hasPerm","perm","newLevels","createNewLevel","getPermissionsString","editingLevel","onEditingFinished","editingLevelIsNew","onLevelEdit","onLevelDelete","perms","navWidth","child_ctx","blocks","mount","et","ut","Tt","Ct","Nt","Dt","Pt","Zt","Xe","sr","ar","cr","getElementById"],"mappings":"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KAAKC,IAAO,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACnfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAA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zE,KAAK+6E,IAAUG,EAAIl7E,KAAK+6E,KAAWI,EAAIn7E,KAAK+6E,MACjDhgE,EAAIggE,IAKRG,EAAMzH,GADN9zD,EAAK+0D,GAEE10E,KAAK+a,IAAMmgE,EAAIl7E,KAAK+a,KACzB4E,EAAKq0D,EACLj5D,EAAIA,EAAEkD,QAAQ0B,EAAG,KAKJ,KAAXs7D,IACFlgE,EAAIkgE,EAAQx2D,cAAgB1J,EAAEsgE,OAAO,IAGhCtgE,GAGF,SAAU+8D,GACf,OAAOA,EAAM1+E,OAAOw7E,KAIxBC,EAAKmC,SAASG,iBAAiBtC,EAAKM,QAAS,WAmB7CN,EAAK0G,uBAAyB,SAAUC,GACtC,IAAIjlD,EAAQilD,EAAUp/C,OAAO,SAAUw7C,EAAM6D,GAE3C,OADA7D,EAAK6D,GAAYA,EACV7D,GACN,IAEH,OAAO,SAAUE,GACf,GAAIA,GAASvhD,EAAMuhD,EAAMlyD,cAAgBkyD,EAAMlyD,WAAY,OAAOkyD,IAiBtEjD,EAAKK,eAAiBL,EAAK0G,uBAAuB,CAChD,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,SAGF1G,EAAKmC,SAASG,iBAAiBtC,EAAKK,e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"} |