react-input-emoji 4.1.0 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.es.js +106 -56
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +315 -265
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
package/dist/index.es.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/emoji-utils.js","../src/utils/input-event-utils.js","../src/hooks/use-sanitize.js","../src/hooks/use-expose.js","../src/hooks/use-emit.js","../src/text-input.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/emoji-mart/dist-es/utils/data.js","../node_modules/emoji-mart/dist-es/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart/dist-es/utils/index.js","../node_modules/emoji-mart/dist-es/utils/store.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/emoji-index.js","../node_modules/emoji-mart/dist-es/utils/frequently.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/emoji-mart/dist-es/svgs/index.js","../node_modules/emoji-mart/dist-es/utils/shared-props.js","../node_modules/emoji-mart/dist-es/components/anchors.js","../node_modules/emoji-mart/dist-es/utils/shared-default-props.js","../node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","../node_modules/emoji-mart/dist-es/components/not-found.js","../node_modules/emoji-mart/dist-es/components/category.js","../node_modules/emoji-mart/dist-es/components/skins.js","../node_modules/emoji-mart/dist-es/components/skins-emoji.js","../node_modules/emoji-mart/dist-es/components/skins-dot.js","../node_modules/emoji-mart/dist-es/components/preview.js","../node_modules/emoji-mart/dist-es/components/search.js","../node_modules/emoji-mart/dist-es/components/picker/nimble-picker.js","../node_modules/emoji-mart/dist-es/components/picker/picker.js","../node_modules/emoji-mart/dist-es/components/emoji/emoji.js","../src/components/emoji-picker.js","../src/components/emoji-picker-wrapper.js","../src/utils/mention-utils.js","../src/hooks/use-mention.js","../src/components/mention-user-list.js","../src/components/mention-wrapper.js","../src/utils/observer.js","../src/hooks/use-event-listeners.js","../src/hooks/user-pollute.js","../src/index.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// @ts-check\n\nexport const TRANSPARENT_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\n/**\n * Replace all text with emoji with an image html tag\n * @param {string} text\n * @return {string}\n */\nexport function replaceAllTextEmojis(text) {\n let allEmojis = getAllEmojisFromText(text);\n\n // TODO: get all emoji style\n const allEmojiStyle = {};\n\n if (allEmojis) {\n allEmojis = [...new Set(allEmojis)]; // remove duplicates\n\n allEmojis.forEach(emoji => {\n const style = allEmojiStyle[emoji];\n\n if (!style) return;\n\n text = replaceAll(\n text,\n emoji,\n `<img\n style=\"${style}\"\n data-emoji=\"${emoji}\"\n src=\"${TRANSPARENT_GIF}\"\n />`\n );\n });\n }\n\n return text;\n}\n\n/**\n * Replace all occurrencies in a string\n * @param {string} str\n * @param {string} find\n * @param {string} replace\n * @return {string}\n */\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(find, \"g\"), replace);\n}\n\n/**\n * Get all emojis from the text\n * @param {string} text\n * @return {string[]}\n */\nfunction getAllEmojisFromText(text) {\n return text.match(\n /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g\n );\n}\n\n// /**\n// * Get all emoji stlye from emoji mart\n// * @return {Object.<string, string>}\n// */\n// function getAllEmojiStyle() {\n// /** @type {NodeListOf<Element>} */\n// const allEmojiButton = Array.prototype.slice.call(\n// document.querySelectorAll(\".emoji-mart-category-list > li > button\")\n// );\n\n// /** @type {Object.<string, string>} */\n// const allEmojiStyle = {};\n\n// allEmojiButton.forEach(emojiButton => {\n// const label = emojiButton.getAttribute(\"aria-label\");\n// const [emoji] = label.split(\",\");\n\n// const emojiSpanEl = emojiButton.querySelector(\"span\");\n\n// const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n// allEmojiStyle[emoji] = style;\n// });\n\n// return allEmojiStyle;\n// }\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param { import(\"../types/types\").EmojiMartItem } emoji\n * @return {string}\n */\nexport function getImageEmoji(emoji) {\n let shortNames = `${emoji.short_names}`;\n\n shortNames = replaceAll(shortNames, \",\", \", \");\n\n /** @type {HTMLSpanElement} */\n const emojiSpanEl =\n document.querySelector(\n `[aria-label=\"${emoji.native}, ${shortNames}\"] > span`\n ) || document.querySelector(`[aria-label=\"${emoji.id}\"] > span`);\n\n if (!emojiSpanEl) return \"\";\n\n const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n let dataEmoji = emoji.native;\n\n if (!dataEmoji && emoji.emoticons && emoji.emoticons.length > 0) {\n dataEmoji = emoji.emoticons[0];\n }\n\n return `<img style=\"${style}\" data-emoji=\"${dataEmoji}\" src=\"${TRANSPARENT_GIF}\" />`;\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllTextEmojiToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n container.innerHTML = container.innerHTML.replace(\n image.outerHTML,\n image.dataset.emoji\n );\n });\n\n return container.innerHTML;\n}\n","// @ts-check\n\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"./emoji-utils\";\n\n/**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\nexport function handleCopy(event) {\n const selectedText = window.getSelection();\n\n let container = document.createElement(\"div\");\n\n for (let i = 0, len = selectedText.rangeCount; i < len; ++i) {\n container.appendChild(selectedText.getRangeAt(i).cloneContents());\n }\n\n container = replaceEmojiToString(container);\n\n event.clipboardData.setData(\"text\", container.innerText);\n event.preventDefault();\n}\n\n/**\n *\n * @param {string} html\n */\nexport function handlePasteHtmlAtCaret(html) {\n let sel;\n let range;\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // non-standard and not supported in all browsers (IE9, for one)\n const el = document.createElement(\"div\");\n el.innerHTML = html;\n const frag = document.createDocumentFragment();\n let node;\n let lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n}\n\n/**\n * Replace emoji img to its string value\n * @param {HTMLDivElement} container\n * @return {HTMLDivElement}\n */\nfunction replaceEmojiToString(container) {\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n image.outerHTML = image.dataset.emoji;\n });\n\n return container;\n}\n\n/**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\nexport function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = replaceAllTextEmojis(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n}\n\n/**\n * @typedef {object} HandleKeyDownOptions\n * @property {HTMLDivElement} placeholderEl\n * @property {number} maxLength\n * @property {HTMLDivElement} inputEl\n * @property {React.MutableRefObject<string>} cleanedTextRef\n * @property {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @property {boolean} cleanOnEnter\n * @property {function(): void} emitChange\n * @property {(function(string): void)=} onEnter\n * @property {(function(KeyboardEvent): void)=} onKeyDown\n * @property {(function(string): void)} updateHTML\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @typedef {Object} HandleSelectEmojiProps\n * @property {import(\"../types/types\").EmojiMartItem} emoji\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {boolean} keepOpened\n * @property {() => void} toggleShowPicker\n * @property {number=} maxLength\n */\n\n/**\n *\n * @param {HandleSelectEmojiProps} props\n */\nexport function handleSelectEmoji({\n emoji,\n textInputRef,\n keepOpened,\n toggleShowPicker,\n maxLength\n}) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n toggleShowPicker();\n }\n}\n\n/**\n *\n * @param {{text: string, html: string}} props\n * @return {number}\n */\nexport function totalCharacters({ text, html }) {\n const textCount = text.length;\n const emojisCount = (html.match(/<img/g) || []).length;\n\n return textCount + emojisCount;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Handle keyup event\n * @param {() => void} emitChange\n * @param {(event: KeyboardEvent) => void} onKeyDownMention\n * @param {React.MutableRefObject<string>} cleanedTextRef\n * @param {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @return {(event: KeyboardEvent) => void}\n */\nexport function handleKeyup(\n emitChange,\n onKeyDownMention,\n cleanedTextRef,\n textInputRef\n) {\n return event => {\n const text = replaceAllTextEmojiToString(textInputRef.current.innerHTML);\n cleanedTextRef.current = text;\n emitChange();\n onKeyDownMention(event);\n };\n}\n\n/**\n * Handle focus event\n * @param {function(FocusEvent): void} onFocus\n * @return {function(FocusEvent): void}\n */\nexport function handleFocus(onFocus) {\n return event => {\n onFocus(event);\n };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useSanitize() {\n /** @type {React.MutableRefObject<SanitizeFn[]>} */\n const sanitizeFnsRef = useRef([]);\n\n const sanitizedTextRef = useRef(\"\");\n\n /** @type {(fn: SanitizeFn) => void} */\n const addSanitizeFn = useCallback(fn => {\n sanitizeFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const sanitize = useCallback(html => {\n let result = sanitizeFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, html);\n\n result = replaceAllHtmlToString(result);\n\n sanitizedTextRef.current = result;\n\n return result;\n }, []);\n\n return { addSanitizeFn, sanitize, sanitizedTextRef };\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllHtmlToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n let text = container.innerText || \"\";\n\n // remove all ↵ for safari\n text = text.replace(/\\n/gi, \"\");\n\n return text;\n}\n","// @ts-check\n\nimport { useImperativeHandle } from \"react\";\nimport { useSanitize } from \"./use-sanitize\";\n\n/**\n * @typedef {Object} Props\n * @property {React.Ref<any>} ref\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {(value: string) => void} setValue\n * @property {() => void} emitChange\n */\n\n/**\n *\n * @param {Props} props\n */\nexport function useExpose({ ref, textInputRef, setValue, emitChange }) {\n const { sanitize, sanitizedTextRef } = useSanitize();\n\n useImperativeHandle(ref, () => ({\n get value() {\n return sanitizedTextRef.current;\n },\n set value(value) {\n setValue(value);\n },\n focus: () => {\n textInputRef.current.focus();\n },\n blur: () => {\n sanitize(textInputRef.current.html);\n\n emitChange();\n }\n }));\n}\n","// @ts-check\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * useEmit\n * @param {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @param {(size: {width: number, height: number}) => void} onResize\n * @param {(text: string) => void} onChange\n */\nexport function useEmit(textInputRef, onResize, onChange) {\n const currentSizeRef = useRef(null);\n const onChangeFn = useRef(onChange);\n\n const checkAndEmitResize = useCallback(() => {\n if (textInputRef.current) {\n const currentSize = currentSizeRef.current;\n\n const nextSize = textInputRef.current.size;\n\n if (\n (!currentSize ||\n currentSize.width !== nextSize.width ||\n currentSize.height !== nextSize.height) &&\n typeof onResize === \"function\"\n ) {\n onResize(nextSize);\n }\n\n currentSizeRef.current = nextSize;\n }\n }, [onResize, textInputRef]);\n\n const emitChange = useCallback((sanitizedText) => {\n if (typeof onChangeFn.current === \"function\") {\n onChangeFn.current(sanitizedText);\n }\n\n if (typeof onResize === \"function\") {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, onResize]);\n\n useEffect(() => {\n if (textInputRef.current) {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, textInputRef]);\n\n return emitChange;\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useImperativeHandle, forwardRef, useRef } from \"react\";\nimport { handlePasteHtmlAtCaret } from \"./utils/input-event-utils\";\n\n/**\n * @typedef {Object} Props\n * @property {(event: React.KeyboardEvent) => void} onKeyDown\n * @property {(event: React.KeyboardEvent) => void} onKeyUp\n * @property {() => void} onFocus\n * @property {() => void=} onBlur\n * @property {(sanitizedText: string) => void=} onChange\n * @property {(event: React.KeyboardEvent) => void} onArrowUp\n * @property {(event: React.KeyboardEvent) => void} onArrowDown\n * @property {(event: React.KeyboardEvent) => void} onEnter\n * @property {(event: React.ClipboardEvent) => void} onCopy\n * @property {(event: React.ClipboardEvent) => void} onPaste\n * @property {string} placeholder\n * @property {React.CSSProperties} style\n * @property {number} tabIndex\n * @property {string} className\n * @property {(html: string) => void} onChange\n */\n\n/**\n * @typedef {{\n * appendContent: (html: string) => void;\n * html: string;\n * text: string;\n * size: { width: number; height: number;};\n * focus: () => void;\n * }} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst TextInput = (\n { placeholder, style, tabIndex, className, onChange, ...props },\n ref\n) => {\n useImperativeHandle(ref, () => ({\n appendContent: html => {\n textInputRef.current.focus();\n\n handlePasteHtmlAtCaret(html);\n\n textInputRef.current.focus();\n\n if (textInputRef.current.innerHTML.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n onChange(textInputRef.current.innerHTML);\n },\n set html(value) {\n textInputRef.current.innerHTML = value;\n\n if (value.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n onChange(textInputRef.current.innerHTML);\n },\n get html() {\n return textInputRef.current.innerHTML;\n },\n get text() {\n return textInputRef.current.innerText;\n },\n get size() {\n return {\n width: textInputRef.current.offsetWidth,\n height: textInputRef.current.offsetHeight\n };\n },\n focus() {\n textInputRef.current.focus();\n }\n }));\n\n /** @type {React.MutableRefObject<HTMLDivElement>} */\n const placeholderRef = useRef(null);\n /** @type {React.MutableRefObject<HTMLDivElement>} */\n const textInputRef = useRef(null);\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n props.onEnter(event);\n } else if (event.key === \"ArrowUp\") {\n props.onArrowUp(event);\n } else if (event.key === \"ArrowDown\") {\n props.onArrowDown(event);\n } else {\n if (event.key.length === 1) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n props.onKeyDown(event);\n }\n\n /** */\n function handleClick() {\n props.onFocus();\n }\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyUp(event) {\n props.onKeyUp(event);\n\n const input = textInputRef.current;\n\n if (input.innerText?.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n onChange(textInputRef.current.innerHTML);\n }\n\n return (\n <div className=\"react-input-emoji--container\" style={style}>\n <div className=\"react-input-emoji--wrapper\" onClick={handleClick}>\n <div ref={placeholderRef} className=\"react-input-emoji--placeholder\">\n {placeholder}\n </div>\n <div\n ref={textInputRef}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={tabIndex}\n contentEditable\n className={`react-input-emoji--input${className ? ` ${className}` : \"\"\n }`}\n onBlur={props.onBlur}\n onCopy={props.onCopy}\n onPaste={props.onPaste}\n data-testid=\"react-input-emoji--input\"\n />\n </div>\n </div>\n );\n};\n\nconst TextInputWithRef = forwardRef(TextInput);\n\nexport default TextInputWithRef;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","var mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\n (split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n return search.join(',');\n};\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nexport { buildSearch, compress, uncompress };","var _String = String;\nexport default _String.fromCodePoint || function stringFromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n\n if (!length) {\n return '';\n }\n\n var result = '';\n\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = codePoint % 0x400 + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport { buildSearch } from './data';\nimport stringFromCodePoint from '../polyfills/stringFromCodePoint';\nimport { uncompress } from './data';\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return \"0x\".concat(u);\n });\n return stringFromCodePoint.apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name,\n short_names = emoji.short_names,\n skin_tone = emoji.skin_tone,\n skin_variations = emoji.skin_variations,\n emoticons = emoji.emoticons,\n unified = emoji.unified,\n custom = emoji.custom,\n customCategory = emoji.customCategory,\n imageUrl = emoji.imageUrl,\n id = emoji.id || short_names[0],\n colons = \":\".concat(id, \":\");\n\n if (custom) {\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n customCategory: customCategory,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += \":skin-tone-\".concat(skin_tone, \":\");\n }\n\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n \"native\": unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(void 0, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!Object.keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = buildSearch(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (variationData) {\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (set && (variationData[\"has_img_\".concat(set)] == undefined || variationData[\"has_img_\".concat(set)]) || !set) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction getEmojiDataFromNative(nativeString, set, data) {\n if (data.compressed) {\n uncompress(data);\n }\n\n var skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];\n var skinCodes = ['1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n var skin;\n var skinCode;\n var baseNativeString = nativeString;\n skinTones.forEach(function (skinTone, skinToneIndex) {\n if (nativeString.indexOf(skinTone) > 0) {\n skin = skinToneIndex + 2;\n skinCode = skinCodes[skinToneIndex];\n }\n });\n var emojiData;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n var emojiUnified = emoji.unified;\n\n if (emoji.variations && emoji.variations.length) {\n emojiUnified = emoji.variations.shift();\n }\n\n if (skin && emoji.skin_variations && emoji.skin_variations[skinCode]) {\n emojiUnified = emoji.skin_variations[skinCode].unified;\n }\n\n if (unifiedToNative(emojiUnified) === baseNativeString) emojiData = emoji;\n }\n\n if (!emojiData) {\n return null;\n }\n\n emojiData.id = emojiData.short_names[0];\n return getSanitizedData(emojiData, skin, set, data);\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if (_typeof(value) === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} // Use requestIdleCallback() if available, else fall back to setTimeout().\n// Throttle so as not to run too frequently.\n\n\nfunction throttleIdleTask(func) {\n var doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n var running = false;\n return function throttled() {\n if (running) {\n return;\n }\n\n running = true;\n doIdleTask(function () {\n running = false;\n func();\n });\n };\n}\n\nexport { getData, getEmojiDataFromNative, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar, throttleIdleTask };","var NAMESPACE = 'emoji-mart';\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter;\nvar setter;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)] = JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n var value = window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)];\n\n if (value) {\n return JSON.parse(value);\n }\n } catch (e) {\n return;\n }\n }\n}\n\nexport default {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport { getData, getSanitizedData, intersect } from '..';\nimport { uncompress } from '../data';\nimport store from '../store';\n\nvar NimbleEmojiIndex =\n/*#__PURE__*/\nfunction () {\n function NimbleEmojiIndex(data, set) {\n _classCallCheck(this, NimbleEmojiIndex);\n\n if (data.compressed) {\n uncompress(data);\n }\n\n this.data = data || {};\n this.set = set || null;\n this.originalPool = {};\n this.index = {};\n this.emojis = {};\n this.emoticons = {};\n this.customEmojisList = [];\n this.buildIndex();\n }\n\n _createClass(NimbleEmojiIndex, [{\n key: \"buildIndex\",\n value: function buildIndex() {\n var _this = this;\n\n var _loop = function _loop(emoji) {\n var emojiData = _this.data.emojis[emoji],\n short_names = emojiData.short_names,\n emoticons = emojiData.emoticons,\n skin_variations = emojiData.skin_variations,\n id = short_names[0];\n\n if (emoticons) {\n emoticons.forEach(function (emoticon) {\n if (_this.emoticons[emoticon]) {\n return;\n }\n\n _this.emoticons[emoticon] = id;\n });\n } // If skin variations include them\n\n\n if (skin_variations) {\n _this.emojis[id] = {};\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n _this.emojis[id][skinTone] = getSanitizedData({\n id: id,\n skin: skinTone\n }, skinTone, _this.set, _this.data);\n }\n } else {\n _this.emojis[id] = getSanitizedData(id, null, _this.set, _this.data);\n }\n\n _this.originalPool[id] = emojiData;\n };\n\n for (var emoji in this.data.emojis) {\n _loop(emoji);\n }\n }\n }, {\n key: \"clearCustomEmojis\",\n value: function clearCustomEmojis(pool) {\n var _this2 = this;\n\n this.customEmojisList.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n delete pool[emojiId];\n delete _this2.emojis[emojiId];\n });\n }\n }, {\n key: \"addCustomToPool\",\n value: function addCustomToPool(custom, pool) {\n var _this3 = this;\n\n if (this.customEmojisList.length) this.clearCustomEmojis(pool);\n custom.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = getData(emoji, null, null, _this3.data);\n _this3.emojis[emojiId] = getSanitizedData(emoji, null, null, _this3.data);\n }\n });\n this.customEmojisList = custom;\n this.index = {};\n }\n }, {\n key: \"search\",\n value: function search(value) {\n var _this4 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n emojisToShowFilter = _ref.emojisToShowFilter,\n maxResults = _ref.maxResults,\n include = _ref.include,\n exclude = _ref.exclude,\n _ref$custom = _ref.custom,\n custom = _ref$custom === void 0 ? [] : _ref$custom;\n\n if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n var skinTone = store.get('skin') || 1;\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\n var results = null,\n pool = this.originalPool;\n\n if (value.length) {\n if (value == '-' || value == '-1') {\n return [this.emojis['-1'][skinTone]];\n }\n\n var values = value.toLowerCase().split(/[\\s|,|\\-|_]+/),\n allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n this.data.categories.forEach(function (category) {\n var isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n var isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n return;\n }\n\n category.emojis.forEach(function (emojiId) {\n return pool[emojiId] = _this4.data.emojis[emojiId];\n });\n });\n\n if (custom.length) {\n var customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;\n var customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values.map(function (value) {\n var aPool = pool,\n aIndex = _this4.index,\n length = 0;\n\n for (var charIndex = 0; charIndex < value.length; charIndex++) {\n var _char = value[charIndex];\n length++;\n aIndex[_char] || (aIndex[_char] = {});\n aIndex = aIndex[_char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\n aIndex.results = [];\n aIndex.pool = {};\n\n for (var id in aPool) {\n var emoji = aPool[id],\n search = emoji.search,\n sub = value.substr(0, length),\n subIndex = search.indexOf(sub);\n\n if (subIndex != -1) {\n var score = subIndex + 1;\n if (sub == id) score = 0;\n\n if (_this4.emojis[id] && _this4.emojis[id][skinTone]) {\n aIndex.results.push(_this4.emojis[id][skinTone]);\n } else {\n aIndex.results.push(_this4.emojis[id]);\n }\n\n aIndex.pool[id] = emoji;\n scores[id] = score;\n }\n }\n\n aIndex.results.sort(function (a, b) {\n var aScore = scores[a.id],\n bScore = scores[b.id];\n\n if (aScore == bScore) {\n return a.id.localeCompare(b.id);\n } else {\n return aScore - bScore;\n }\n });\n })();\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n }).filter(function (a) {\n return a;\n });\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter(function (result) {\n return emojisToShowFilter(pool[result.id]);\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n\n return results;\n }\n }]);\n\n return NimbleEmojiIndex;\n}();\n\nexport { NimbleEmojiIndex as default };","import data from '../../../data/all.json';\nimport NimbleEmojiIndex from './nimble-emoji-index';\nvar emojiIndex = new NimbleEmojiIndex(data);\nvar emojis = emojiIndex.emojis,\n emoticons = emojiIndex.emoticons;\n\nfunction search() {\n return emojiIndex.search.apply(emojiIndex, arguments);\n}\n\nexport default {\n search: search,\n emojis: emojis,\n emoticons: emoticons\n};","import store from './store';\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\nvar frequently, initialized;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = store.get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n var last = store.get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nexport default {\n add: add,\n get: get\n};","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nvar categories = {\n activity: function activity() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n }));\n },\n custom: function custom() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"g\", {\n transform: \"translate(2.000000, 1.000000)\"\n }, React.createElement(\"rect\", {\n id: \"Rectangle\",\n x: \"8\",\n y: \"0\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n })));\n },\n flags: function flags() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n }));\n },\n foods: function foods() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n }));\n },\n nature: function nature() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }), React.createElement(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n }));\n },\n objects: function objects() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }), React.createElement(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n }));\n },\n people: function people() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }), React.createElement(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n }));\n },\n places: function places() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }), React.createElement(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n }));\n },\n recent: function recent() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }), React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }));\n },\n symbols: function symbols() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n }));\n }\n};\nvar search = {\n search: function search() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n }));\n },\n \"delete\": function _delete() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n }));\n }\n};\nexport { categories, search };","import PropTypes from 'prop-types';\nvar EmojiPropTypes = {\n data: PropTypes.object.isRequired,\n onOver: PropTypes.func,\n onLeave: PropTypes.func,\n onClick: PropTypes.func,\n fallback: PropTypes.func,\n backgroundImageFn: PropTypes.func,\n \"native\": PropTypes.bool,\n forceSize: PropTypes.bool,\n tooltip: PropTypes.bool,\n useButton: PropTypes.bool,\n skin: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: PropTypes.oneOf([16, 20, 32, 64]),\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number,\n set: PropTypes.oneOf(['apple', 'google', 'twitter', 'facebook']),\n size: PropTypes.number.isRequired,\n emoji: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nvar PickerPropTypes = {\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onSkinChange: PropTypes.func,\n perLine: PropTypes.number,\n emojiSize: PropTypes.number,\n i18n: PropTypes.object,\n style: PropTypes.object,\n title: PropTypes.string,\n emoji: PropTypes.string,\n color: PropTypes.string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n \"native\": PropTypes.bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: PropTypes.func,\n showPreview: PropTypes.bool,\n showSkinTones: PropTypes.bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n useButton: EmojiPropTypes.useButton,\n theme: PropTypes.oneOf(['auto', 'light', 'dark']),\n include: PropTypes.arrayOf(PropTypes.string),\n exclude: PropTypes.arrayOf(PropTypes.string),\n recent: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n enableFrequentEmojiSort: PropTypes.bool,\n custom: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n short_names: PropTypes.arrayOf(PropTypes.string).isRequired,\n emoticons: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n imageUrl: PropTypes.string,\n spriteUrl: PropTypes.string,\n sheet_x: PropTypes.number,\n sheet_y: PropTypes.number,\n size: PropTypes.number,\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number\n })),\n skinEmoji: PropTypes.string,\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string,\n icons: PropTypes.object\n};\nexport { EmojiPropTypes, PickerPropTypes };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Anchors =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Anchors, _React$PureComponent);\n\n function Anchors(props) {\n var _this;\n\n _classCallCheck(this, Anchors);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Anchors).call(this, props));\n var defaultCategory = props.categories.filter(function (category) {\n return category.first;\n })[0];\n _this.state = {\n selected: defaultCategory.name\n };\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Anchors, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var index = e.currentTarget.getAttribute('data-index');\n var _this$props = this.props,\n categories = _this$props.categories,\n onAnchorClick = _this$props.onAnchorClick;\n onAnchorClick(categories[index], index);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n categories = _this$props2.categories,\n color = _this$props2.color,\n i18n = _this$props2.i18n,\n icons = _this$props2.icons,\n selected = this.state.selected;\n return React.createElement(\"nav\", {\n className: \"emoji-mart-anchors\",\n \"aria-label\": i18n.categorieslabel\n }, categories.map(function (category, i) {\n var id = category.id,\n name = category.name,\n anchor = category.anchor,\n isSelected = name == selected;\n\n if (anchor === false) {\n return null;\n }\n\n var iconId = id.startsWith('custom-') ? 'custom' : id;\n return React.createElement(\"button\", {\n key: id,\n \"aria-label\": i18n.categories[iconId],\n title: i18n.categories[iconId],\n \"data-index\": i,\n type: 'button',\n onClick: _this2.handleClick,\n className: \"emoji-mart-anchor \".concat(isSelected ? 'emoji-mart-anchor-selected' : ''),\n style: {\n color: isSelected ? color : null\n }\n }, React.createElement(\"div\", {\n className: \"emoji-mart-anchor-icon\"\n }, icons.categories[iconId]()), React.createElement(\"span\", {\n className: \"emoji-mart-anchor-bar\",\n style: {\n backgroundColor: color\n }\n }));\n }));\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport { Anchors as default };\nAnchors.propTypes\n/* remove-proptypes */\n= {\n categories: PropTypes.array,\n onAnchorClick: PropTypes.func,\n icons: PropTypes.object\n};\nAnchors.defaultProps = {\n categories: [],\n onAnchorClick: function onAnchorClick() {},\n icons: {}\n};","var EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n sheetColumns: 57,\n sheetRows: 57,\n \"native\": false,\n forceSize: false,\n tooltip: false,\n useButton: true,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return \"https://unpkg.com/emoji-datasource-\".concat(set, \"@\").concat(\"5.0.1\", \"/img/\").concat(set, \"/sheets-256/\").concat(sheetSize, \".png\");\n }\n};\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n theme: 'light',\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n \"native\": EmojiDefaultProps[\"native\"],\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n useButton: EmojiDefaultProps.useButton,\n autoFocus: false,\n enableFrequentEmojiSort: false,\n custom: [],\n skinEmoji: '',\n notFound: function notFound() {},\n notFoundEmoji: 'sleuth_or_spy',\n icons: {}\n};\nexport { PickerDefaultProps, EmojiDefaultProps };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar _getData = function _getData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getData(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props),\n sheet_x = _getData2.sheet_x,\n sheet_y = _getData2.sheet_y,\n multiplyX = 100 / (props.sheetColumns - 1),\n multiplyY = 100 / (props.sheetRows - 1);\n\n return \"\".concat(multiplyX * sheet_x, \"% \").concat(multiplyY * sheet_y, \"%\");\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick,\n emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n\n var onOver = props.onOver,\n emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n\n var onLeave = props.onLeave,\n emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n\n if (!data) {\n if (props.fallback) {\n return props.fallback(null, props);\n } else {\n return null;\n }\n }\n\n var unified = data.unified,\n custom = data.custom,\n short_names = data.short_names,\n imageUrl = data.imageUrl,\n style = {},\n children = props.children,\n className = 'emoji-mart-emoji',\n nativeEmoji = unified && unifiedToNative(unified),\n label = [nativeEmoji].concat(short_names).filter(Boolean).join(', '),\n title = null;\n\n if (!unified && !custom) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n }\n\n if (props.tooltip) {\n title = short_names[0];\n }\n\n if (props[\"native\"] && unified) {\n className += ' emoji-mart-emoji-native';\n style = {\n fontSize: props.size\n };\n children = nativeEmoji;\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n style.wordBreak = 'keep-all';\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block'\n };\n\n if (data.spriteUrl) {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(data.spriteUrl, \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n });\n } else {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(imageUrl, \")\"),\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n });\n }\n } else {\n var setHasEmoji = data[\"has_img_\".concat(props.set)] == undefined || data[\"has_img_\".concat(props.set)];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: \"url(\".concat(props.backgroundImageFn(props.set, props.sheetSize), \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n var Tag = {\n name: 'span',\n props: {}\n };\n\n if (props.onClick && props.useButton) {\n Tag.name = 'button';\n Tag.props = {\n type: 'button'\n };\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return \"<\".concat(Tag.name, \" style='\").concat(style, \"' aria-label='\").concat(label, \"' \").concat(title ? \"title='\".concat(title, \"'\") : '', \" class='\").concat(className, \"'>\").concat(children || '', \"</\").concat(Tag.name, \">\");\n } else {\n return React.createElement(Tag.name, _extends({\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n \"aria-label\": label,\n title: title,\n className: className\n }, Tag.props), React.createElement(\"span\", {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.propTypes\n/* remove-proptypes */\n= _objectSpread({}, EmojiPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimbleEmoji.defaultProps = EmojiDefaultProps;\nexport default NimbleEmoji;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\n\nvar NotFound =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NotFound, _React$PureComponent);\n\n function NotFound() {\n _classCallCheck(this, NotFound);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NotFound).apply(this, arguments));\n }\n\n _createClass(NotFound, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n emojiProps = _this$props.emojiProps,\n i18n = _this$props.i18n,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var component = notFound && notFound() || React.createElement(\"div\", {\n className: \"emoji-mart-no-results\"\n }, NimbleEmoji(_objectSpread({\n data: data\n }, emojiProps, {\n size: 38,\n emoji: notFoundEmoji,\n onOver: null,\n onLeave: null,\n onClick: null\n })), React.createElement(\"div\", {\n className: \"emoji-mart-no-results-label\"\n }, i18n.notfound));\n return component;\n }\n }]);\n\n return NotFound;\n}(React.PureComponent);\n\nexport { NotFound as default };\nNotFound.propTypes\n/* remove-proptypes */\n= {\n notFound: PropTypes.func.isRequired,\n emojiProps: PropTypes.object.isRequired\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport frequently from '../utils/frequently';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport NotFound from './not-found';\n\nvar Category =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Category, _React$Component);\n\n function Category(props) {\n var _this;\n\n _classCallCheck(this, Category);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Category).call(this, props));\n _this.data = props.data;\n _this.setContainerRef = _this.setContainerRef.bind(_assertThisInitialized(_this));\n _this.setLabelRef = _this.setLabelRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Category, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.margin = 0;\n this.minMargin = 0;\n this.memoizeSize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$props = this.props,\n name = _this$props.name,\n perLine = _this$props.perLine,\n _native = _this$props[\"native\"],\n hasStickyPosition = _this$props.hasStickyPosition,\n emojis = _this$props.emojis,\n emojiProps = _this$props.emojiProps,\n skin = emojiProps.skin,\n size = emojiProps.size,\n set = emojiProps.set,\n nextPerLine = nextProps.perLine,\n nextNative = nextProps[\"native\"],\n nextHasStickyPosition = nextProps.hasStickyPosition,\n nextEmojis = nextProps.emojis,\n nextEmojiProps = nextProps.emojiProps,\n nextSkin = nextEmojiProps.skin,\n nextSize = nextEmojiProps.size,\n nextSet = nextEmojiProps.set,\n shouldUpdate = false;\n\n if (name == 'Recent' && perLine != nextPerLine) {\n shouldUpdate = true;\n }\n\n if (name == 'Search') {\n shouldUpdate = !(emojis == nextEmojis);\n }\n\n if (skin != nextSkin || size != nextSize || _native != nextNative || set != nextSet || hasStickyPosition != nextHasStickyPosition) {\n shouldUpdate = true;\n }\n\n return shouldUpdate;\n }\n }, {\n key: \"memoizeSize\",\n value: function memoizeSize() {\n if (!this.container) {\n // probably this is a test environment, e.g. jest\n this.top = 0;\n this.maxMargin = 0;\n return;\n }\n\n var parent = this.container.parentElement;\n\n var _this$container$getBo = this.container.getBoundingClientRect(),\n top = _this$container$getBo.top,\n height = _this$container$getBo.height;\n\n var _parent$getBoundingCl = parent.getBoundingClientRect(),\n parentTop = _parent$getBoundingCl.top;\n\n var _this$label$getBoundi = this.label.getBoundingClientRect(),\n labelHeight = _this$label$getBoundi.height;\n\n this.top = top - parentTop + parent.scrollTop;\n\n if (height == 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll(scrollTop) {\n var margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n if (margin == this.margin) return;\n\n if (!this.props.hasStickyPosition) {\n this.label.style.top = \"\".concat(margin, \"px\");\n }\n\n this.margin = margin;\n return true;\n }\n }, {\n key: \"getEmojis\",\n value: function getEmojis() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n name = _this$props2.name,\n emojis = _this$props2.emojis,\n recent = _this$props2.recent,\n perLine = _this$props2.perLine;\n\n if (name == 'Recent') {\n var custom = this.props.custom;\n var frequentlyUsed = recent || frequently.get(perLine);\n\n if (frequentlyUsed.length) {\n emojis = frequentlyUsed.map(function (id) {\n var emoji = custom.filter(function (e) {\n return e.id === id;\n })[0];\n\n if (emoji) {\n return emoji;\n }\n\n return id;\n }).filter(function (id) {\n return !!getData(id, null, null, _this2.data);\n });\n }\n\n if (emojis.length === 0 && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (emojis) {\n emojis = emojis.slice(0);\n }\n\n return emojis;\n }\n }, {\n key: \"updateDisplay\",\n value: function updateDisplay(display) {\n var emojis = this.getEmojis();\n\n if (!emojis || !this.container) {\n return;\n }\n\n this.container.style.display = display;\n }\n }, {\n key: \"setContainerRef\",\n value: function setContainerRef(c) {\n this.container = c;\n }\n }, {\n key: \"setLabelRef\",\n value: function setLabelRef(c) {\n this.label = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n name = _this$props3.name,\n hasStickyPosition = _this$props3.hasStickyPosition,\n emojiProps = _this$props3.emojiProps,\n i18n = _this$props3.i18n,\n notFound = _this$props3.notFound,\n notFoundEmoji = _this$props3.notFoundEmoji,\n emojis = this.getEmojis(),\n labelStyles = {},\n labelSpanStyles = {},\n containerStyles = {};\n\n if (!emojis) {\n containerStyles = {\n display: 'none'\n };\n }\n\n if (!hasStickyPosition) {\n labelStyles = {\n height: 28\n };\n labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n var label = i18n.categories[id] || name;\n return React.createElement(\"section\", {\n ref: this.setContainerRef,\n className: \"emoji-mart-category\",\n \"aria-label\": label,\n style: containerStyles\n }, React.createElement(\"div\", {\n style: labelStyles,\n \"data-name\": name,\n className: \"emoji-mart-category-label\"\n }, React.createElement(\"span\", {\n style: labelSpanStyles,\n ref: this.setLabelRef,\n \"aria-hidden\": true\n /* already labeled by the section aria-label */\n\n }, label)), React.createElement(\"ul\", {\n className: \"emoji-mart-category-list\"\n }, emojis && emojis.map(function (emoji) {\n return React.createElement(\"li\", {\n key: emoji.short_names && emoji.short_names.join('_') || emoji\n }, NimbleEmoji(_objectSpread({\n emoji: emoji,\n data: _this3.data\n }, emojiProps)));\n })), emojis && !emojis.length && React.createElement(NotFound, {\n i18n: i18n,\n notFound: notFound,\n notFoundEmoji: notFoundEmoji,\n data: this.data,\n emojiProps: emojiProps\n }));\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport { Category as default };\nCategory.propTypes\n/* remove-proptypes */\n= {\n emojis: PropTypes.array,\n hasStickyPosition: PropTypes.bool,\n name: PropTypes.string.isRequired,\n \"native\": PropTypes.bool.isRequired,\n perLine: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n recent: PropTypes.arrayOf(PropTypes.string),\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string.isRequired\n};\nCategory.defaultProps = {\n emojis: [],\n hasStickyPosition: true\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Skins =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Skins, _React$PureComponent);\n\n function Skins(props) {\n var _this;\n\n _classCallCheck(this, Skins);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Skins).call(this, props));\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n _createClass(Skins, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport { Skins as default };\nSkins.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired\n};\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport Skins from './skins';\n\nvar SkinsEmoji =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsEmoji, _Skins);\n\n function SkinsEmoji(props) {\n var _this;\n\n _classCallCheck(this, SkinsEmoji);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsEmoji).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsEmoji, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n emojiProps = _this$props.emojiProps,\n data = _this$props.data,\n skinEmoji = _this$props.skinEmoji,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n skinToneNodes.push(React.createElement(\"span\", {\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch custom\".concat(selected ? ' selected' : '')\n }, React.createElement(\"span\", {\n onClick: this.handleClick,\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin-tone-\".concat(skinTone)\n }, NimbleEmoji({\n emoji: skinEmoji,\n data: data,\n skin: skinTone,\n backgroundImageFn: emojiProps.backgroundImageFn,\n \"native\": emojiProps[\"native\"],\n set: emojiProps.set,\n sheetSize: emojiProps.sheetSize,\n size: 23\n }))));\n }\n\n return React.createElement(\"div\", {\n className: \"emoji-mart-skin-swatches custom\".concat(opened ? ' opened' : '')\n }, React.createElement(\"div\", {\n className: \"emoji-mart-skin-text\".concat(opened ? ' opened' : '')\n }, i18n.skintext), skinToneNodes);\n }\n }]);\n\n return SkinsEmoji;\n}(Skins);\n\nexport { SkinsEmoji as default };\nSkinsEmoji.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinTone: PropTypes.number,\n skinEmoji: PropTypes.string.isRequired,\n i18n: PropTypes.object\n};\nSkinsEmoji.defaultProps = {\n onChange: function onChange() {},\n skinTone: null\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Skins from './skins';\n\nvar SkinsDot =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsDot, _Skins);\n\n function SkinsDot(props) {\n var _this;\n\n _classCallCheck(this, SkinsDot);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsDot).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsDot, [{\n key: \"handleKeyDown\",\n value: function handleKeyDown(event) {\n // if either enter or space is pressed, then execute\n if (event.keyCode === 13 || event.keyCode === 32) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n var visible = opened || selected;\n skinToneNodes.push(React.createElement(\"span\", _extends({\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch\".concat(selected ? ' selected' : ''),\n \"aria-label\": i18n.skintones[skinTone],\n \"aria-hidden\": !visible\n }, opened ? {\n role: 'menuitem'\n } : {}), React.createElement(\"span\", _extends({\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n role: \"button\"\n }, selected ? {\n 'aria-haspopup': true,\n 'aria-expanded': !!opened\n } : {}, opened ? {\n 'aria-pressed': !!selected\n } : {}, {\n tabIndex: visible ? '0' : '',\n \"aria-label\": i18n.skintones[skinTone],\n title: i18n.skintones[skinTone],\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin emoji-mart-skin-tone-\".concat(skinTone)\n }))));\n }\n\n return React.createElement(\"section\", {\n className: \"emoji-mart-skin-swatches\".concat(opened ? ' opened' : ''),\n \"aria-label\": i18n.skintext\n }, React.createElement(\"div\", opened ? {\n role: 'menubar'\n } : {}, skinToneNodes));\n }\n }]);\n\n return SkinsDot;\n}(Skins);\n\nexport { SkinsDot as default };\nSkinsDot.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n i18n: PropTypes.object\n};\nSkinsDot.defaultProps = {\n onChange: function onChange() {}\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport SkinsEmoji from './skins-emoji';\nimport SkinsDot from './skins-dot';\n\nvar Preview =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Preview, _React$PureComponent);\n\n function Preview(props) {\n var _this;\n\n _classCallCheck(this, Preview);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Preview).call(this, props));\n _this.data = props.data;\n _this.state = {\n emoji: null\n };\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"render\",\n value: function render() {\n var emoji = this.state.emoji,\n _this$props = this.props,\n emojiProps = _this$props.emojiProps,\n skinsProps = _this$props.skinsProps,\n showSkinTones = _this$props.showSkinTones,\n title = _this$props.title,\n idleEmoji = _this$props.emoji,\n i18n = _this$props.i18n,\n showPreview = _this$props.showPreview;\n\n if (emoji && showPreview) {\n var emojiData = getData(emoji, null, null, this.data),\n _emojiData$emoticons = emojiData.emoticons,\n emoticons = _emojiData$emoticons === void 0 ? [] : _emojiData$emoticons,\n knownEmoticons = [],\n listedEmoticons = [];\n emoticons.forEach(function (emoticon) {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, NimbleEmoji(_objectSpread({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-name\"\n }, emoji.name), React.createElement(\"div\", {\n className: \"emoji-mart-preview-shortnames\"\n }, emojiData.short_names.map(function (short_name) {\n return React.createElement(\"span\", {\n key: short_name,\n className: \"emoji-mart-preview-shortname\"\n }, \":\", short_name, \":\");\n })), React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoticons\"\n }, listedEmoticons.map(function (emoticon) {\n return React.createElement(\"span\", {\n key: emoticon,\n className: \"emoji-mart-preview-emoticon\"\n }, emoticon);\n }))));\n } else {\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, idleEmoji && idleEmoji.length && NimbleEmoji(_objectSpread({\n emoji: idleEmoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"span\", {\n className: \"emoji-mart-title-label\"\n }, title)), showSkinTones && React.createElement(\"div\", {\n className: \"emoji-mart-preview-skins\".concat(skinsProps.skinEmoji ? ' custom' : '')\n }, skinsProps.skinEmoji ? React.createElement(SkinsEmoji, {\n skin: skinsProps.skin,\n emojiProps: emojiProps,\n data: this.data,\n skinEmoji: skinsProps.skinEmoji,\n i18n: i18n,\n onChange: skinsProps.onChange\n }) : React.createElement(SkinsDot, {\n skin: skinsProps.skin,\n i18n: i18n,\n onChange: skinsProps.onChange\n })));\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport { Preview as default };\nPreview.propTypes\n/* remove-proptypes */\n= {\n showSkinTones: PropTypes.bool,\n title: PropTypes.string.isRequired,\n emoji: PropTypes.string.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinsProps: PropTypes.object.isRequired\n};\nPreview.defaultProps = {\n showSkinTones: true,\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { search as icons } from '../svgs';\nimport NimbleEmojiIndex from '../utils/emoji-index/nimble-emoji-index';\nimport { throttleIdleTask } from '../utils/index';\nvar id = 0;\n\nvar Search =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Search, _React$PureComponent);\n\n function Search(props) {\n var _this;\n\n _classCallCheck(this, Search);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Search).call(this, props));\n _this.state = {\n icon: icons.search,\n isSearching: false,\n id: ++id\n };\n _this.data = props.data;\n _this.emojiIndex = new NimbleEmojiIndex(_this.data);\n _this.setRef = _this.setRef.bind(_assertThisInitialized(_this));\n _this.clear = _this.clear.bind(_assertThisInitialized(_this));\n _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this)); // throttle keyboard input so that typing isn't delayed\n\n _this.handleChange = throttleIdleTask(_this.handleChange.bind(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(Search, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // in some cases (e.g. preact) the input may already be pre-populated\n // this.input is undefined in Jest tests\n if (this.input && this.input.value) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"search\",\n value: function search(value) {\n if (value == '') this.setState({\n icon: icons.search,\n isSearching: false\n });else this.setState({\n icon: icons[\"delete\"],\n isSearching: true\n });\n this.props.onSearch(this.emojiIndex.search(value, {\n emojisToShowFilter: this.props.emojisToShowFilter,\n maxResults: this.props.maxResults,\n include: this.props.include,\n exclude: this.props.exclude,\n custom: this.props.custom\n }));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.input.value == '') return;\n this.input.value = '';\n this.input.focus();\n this.search('');\n }\n }, {\n key: \"handleChange\",\n value: function handleChange() {\n if (this.input) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(e) {\n if (e.keyCode === 13) {\n this.clear();\n }\n }\n }, {\n key: \"setRef\",\n value: function setRef(c) {\n this.input = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n i18n = _this$props.i18n,\n autoFocus = _this$props.autoFocus;\n var _this$state = this.state,\n icon = _this$state.icon,\n isSearching = _this$state.isSearching,\n id = _this$state.id;\n var inputId = \"emoji-mart-search-\".concat(id);\n return React.createElement(\"section\", {\n className: \"emoji-mart-search\",\n \"aria-label\": i18n.search\n }, React.createElement(\"input\", {\n id: inputId,\n ref: this.setRef,\n type: \"search\",\n onChange: this.handleChange,\n placeholder: i18n.search,\n autoFocus: autoFocus\n }), React.createElement(\"label\", {\n className: \"emoji-mart-sr-only\",\n htmlFor: inputId\n }, i18n.search), React.createElement(\"button\", {\n className: \"emoji-mart-search-icon\",\n onClick: this.clear,\n onKeyUp: this.handleKeyUp,\n \"aria-label\": i18n.clear,\n disabled: !isSearching\n }, icon()));\n }\n }]);\n\n return Search;\n}(React.PureComponent);\n\nexport { Search as default };\nSearch.propTypes\n/* remove-proptypes */\n= {\n onSearch: PropTypes.func,\n maxResults: PropTypes.number,\n emojisToShowFilter: PropTypes.func,\n autoFocus: PropTypes.bool\n};\nSearch.defaultProps = {\n onSearch: function onSearch() {},\n maxResults: 75,\n emojisToShowFilter: null,\n autoFocus: false\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as icons from '../../svgs';\nimport store from '../../utils/store';\nimport frequently from '../../utils/frequently';\nimport { deepMerge, measureScrollbar, getSanitizedData } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport Anchors from '../anchors';\nimport Category from '../category';\nimport Preview from '../preview';\nimport Search from '../search';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\nvar I18N = {\n search: 'Search',\n clear: 'Clear',\n // Accessible label on \"clear\" button\n notfound: 'No Emoji Found',\n skintext: 'Choose your default skin tone',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom'\n },\n categorieslabel: 'Emoji categories',\n // Accessible title for the list of categories\n skintones: {\n 1: 'Default Skin Tone',\n 2: 'Light Skin Tone',\n 3: 'Medium-Light Skin Tone',\n 4: 'Medium Skin Tone',\n 5: 'Medium-Dark Skin Tone',\n 6: 'Dark Skin Tone'\n }\n};\n\nvar NimblePicker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NimblePicker, _React$PureComponent);\n\n function NimblePicker(props) {\n var _this;\n\n _classCallCheck(this, NimblePicker);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NimblePicker).call(this, props));\n _this.CUSTOM = [];\n _this.RECENT_CATEGORY = {\n id: 'recent',\n name: 'Recent',\n emojis: null\n };\n _this.SEARCH_CATEGORY = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false\n };\n\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n _this.data = props.data;\n _this.i18n = deepMerge(I18N, props.i18n);\n _this.icons = deepMerge(icons, props.icons);\n _this.state = {\n firstRender: true\n };\n _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n var customCategories = {};\n var customCategoriesCreated = 0;\n props.custom.forEach(function (emoji) {\n if (!customCategories[emoji.customCategory]) {\n customCategories[emoji.customCategory] = {\n id: emoji.customCategory ? \"custom-\".concat(emoji.customCategory) : 'custom',\n name: emoji.customCategory || 'Custom',\n emojis: [],\n anchor: customCategoriesCreated === 0\n };\n customCategoriesCreated++;\n }\n\n var category = customCategories[emoji.customCategory];\n\n var customEmoji = _objectSpread({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n\n category.emojis.push(customEmoji);\n\n _this.CUSTOM.push(customEmoji);\n });\n allCategories = allCategories.concat(Object.keys(customCategories).map(function (key) {\n return customCategories[key];\n }));\n }\n\n _this.hideRecent = true;\n\n if (props.include != undefined) {\n allCategories.sort(function (a, b) {\n if (props.include.indexOf(a.id) > props.include.indexOf(b.id)) {\n return 1;\n }\n\n return -1;\n });\n }\n\n for (var categoryIndex = 0; categoryIndex < allCategories.length; categoryIndex++) {\n var category = allCategories[categoryIndex];\n var isIncluded = props.include && props.include.length ? props.include.indexOf(category.id) > -1 : true;\n var isExcluded = props.exclude && props.exclude.length ? props.exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n\n if (props.emojisToShowFilter(_this.data.emojis[emoji] || emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n var newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id\n };\n\n _this.categories.push(newCategory);\n }\n } else {\n _this.categories.push(category);\n }\n }\n\n var includeRecent = props.include && props.include.length ? props.include.indexOf(_this.RECENT_CATEGORY.id) > -1 : true;\n var excludeRecent = props.exclude && props.exclude.length ? props.exclude.indexOf(_this.RECENT_CATEGORY.id) > -1 : false;\n\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n\n _this.categories.unshift(_this.RECENT_CATEGORY);\n }\n\n if (_this.categories[0]) {\n _this.categories[0].first = true;\n }\n\n _this.categories.unshift(_this.SEARCH_CATEGORY);\n\n _this.setAnchorsRef = _this.setAnchorsRef.bind(_assertThisInitialized(_this));\n _this.handleAnchorClick = _this.handleAnchorClick.bind(_assertThisInitialized(_this));\n _this.setSearchRef = _this.setSearchRef.bind(_assertThisInitialized(_this));\n _this.handleSearch = _this.handleSearch.bind(_assertThisInitialized(_this));\n _this.setScrollRef = _this.setScrollRef.bind(_assertThisInitialized(_this));\n _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));\n _this.handleScrollPaint = _this.handleScrollPaint.bind(_assertThisInitialized(_this));\n _this.handleEmojiOver = _this.handleEmojiOver.bind(_assertThisInitialized(_this));\n _this.handleEmojiLeave = _this.handleEmojiLeave.bind(_assertThisInitialized(_this));\n _this.handleEmojiClick = _this.handleEmojiClick.bind(_assertThisInitialized(_this));\n _this.handleEmojiSelect = _this.handleEmojiSelect.bind(_assertThisInitialized(_this));\n _this.setPreviewRef = _this.setPreviewRef.bind(_assertThisInitialized(_this));\n _this.handleSkinChange = _this.handleSkinChange.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.handleDarkMatchMediaChange = _this.handleDarkMatchMediaChange.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NimblePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.state.firstRender) {\n this.testStickyPosition();\n this.firstRenderTimeout = setTimeout(function () {\n _this2.setState({\n firstRender: false\n });\n }, 60);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateCategoriesSize();\n this.handleScroll();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.SEARCH_CATEGORY.emojis = null;\n clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n\n if (this.darkMatchMedia) {\n this.darkMatchMedia.removeListener(this.handleDarkMatchMediaChange);\n }\n }\n }, {\n key: \"testStickyPosition\",\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = \"\".concat(prefix, \"sticky\");\n });\n this.hasStickyPosition = !!stickyTestElement.style.position.length;\n }\n }, {\n key: \"getPreferredTheme\",\n value: function getPreferredTheme() {\n if (this.props.theme != 'auto') return this.props.theme;\n if (this.state.theme) return this.state.theme;\n if (typeof matchMedia !== 'function') return PickerDefaultProps.theme;\n\n if (!this.darkMatchMedia) {\n this.darkMatchMedia = matchMedia('(prefers-color-scheme: dark)');\n this.darkMatchMedia.addListener(this.handleDarkMatchMediaChange);\n }\n\n if (this.darkMatchMedia.media.match(/^not/)) return PickerDefaultProps.theme;\n return this.darkMatchMedia.matches ? 'dark' : 'light';\n }\n }, {\n key: \"handleDarkMatchMediaChange\",\n value: function handleDarkMatchMediaChange() {\n this.setState({\n theme: this.darkMatchMedia.matches ? 'dark' : 'light'\n });\n }\n }, {\n key: \"handleEmojiOver\",\n value: function handleEmojiOver(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n } // Use Array.prototype.find() when it is more widely supported.\n\n\n var emojiData = this.CUSTOM.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({\n emoji: emoji\n });\n clearTimeout(this.leaveTimeout);\n }\n }, {\n key: \"handleEmojiLeave\",\n value: function handleEmojiLeave(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n this.leaveTimeout = setTimeout(function () {\n preview.setState({\n emoji: null\n });\n }, 16);\n }\n }, {\n key: \"handleEmojiClick\",\n value: function handleEmojiClick(emoji, e) {\n this.props.onClick(emoji, e);\n this.handleEmojiSelect(emoji);\n }\n }, {\n key: \"handleEmojiSelect\",\n value: function handleEmojiSelect(emoji) {\n var _this3 = this;\n\n this.props.onSelect(emoji);\n if (!this.hideRecent && !this.props.recent) frequently.add(emoji);\n var component = this.categoryRefs['category-1'];\n\n if (component) {\n var maxMargin = component.maxMargin;\n\n if (this.props.enableFrequentEmojiSort) {\n component.forceUpdate();\n }\n\n requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n\n _this3.handleScrollPaint();\n\n if (_this3.SEARCH_CATEGORY.emojis) {\n component.updateDisplay('none');\n }\n });\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll() {\n if (!this.waitingForPaint) {\n this.waitingForPaint = true;\n requestAnimationFrame(this.handleScrollPaint);\n }\n }\n }, {\n key: \"handleScrollPaint\",\n value: function handleScrollPaint() {\n this.waitingForPaint = false;\n\n if (!this.scroll) {\n return;\n }\n\n var activeCategory = null;\n\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n var target = this.scroll,\n scrollTop = target.scrollTop,\n scrollingDown = scrollTop > (this.scrollTop || 0),\n minTop = 0;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var ii = scrollingDown ? this.categories.length - 1 - i : i,\n category = this.categories[ii],\n component = this.categoryRefs[\"category-\".concat(ii)];\n\n if (component) {\n var active = component.handleScroll(scrollTop);\n\n if (!minTop || component.top < minTop) {\n if (component.top > 0) {\n minTop = component.top;\n }\n }\n\n if (active && !activeCategory) {\n activeCategory = category;\n }\n }\n }\n\n if (scrollTop < minTop) {\n activeCategory = this.categories.filter(function (category) {\n return !(category.anchor === false);\n })[0];\n } else if (scrollTop + this.clientHeight >= this.scrollHeight) {\n activeCategory = this.categories[this.categories.length - 1];\n }\n }\n\n if (activeCategory) {\n var anchors = this.anchors,\n _activeCategory = activeCategory,\n categoryName = _activeCategory.name;\n\n if (anchors.state.selected != categoryName) {\n anchors.setState({\n selected: categoryName\n });\n }\n }\n\n this.scrollTop = scrollTop;\n }\n }, {\n key: \"handleSearch\",\n value: function handleSearch(emojis) {\n this.SEARCH_CATEGORY.emojis = emojis;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n\n if (component && component.props.name != 'Search') {\n var display = emojis ? 'none' : 'inherit';\n component.updateDisplay(display);\n }\n }\n\n this.forceUpdate();\n\n if (this.scroll) {\n this.scroll.scrollTop = 0;\n }\n\n this.handleScroll();\n }\n }, {\n key: \"handleAnchorClick\",\n value: function handleAnchorClick(category, i) {\n var component = this.categoryRefs[\"category-\".concat(i)],\n scroll = this.scroll,\n anchors = this.anchors,\n scrollToComponent = null;\n\n scrollToComponent = function scrollToComponent() {\n if (component) {\n var top = component.top;\n\n if (category.first) {\n top = 0;\n } else {\n top += 1;\n }\n\n scroll.scrollTop = top;\n }\n };\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.search.clear();\n requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: \"handleSkinChange\",\n value: function handleSkinChange(skin) {\n var newState = {\n skin: skin\n },\n onSkinChange = this.props.onSkinChange;\n this.setState(newState);\n store.update(newState);\n onSkinChange(skin);\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown(e) {\n var handled = false;\n\n switch (e.keyCode) {\n case 13:\n var emoji;\n\n if (this.SEARCH_CATEGORY.emojis && this.SEARCH_CATEGORY.emojis.length && (emoji = getSanitizedData(this.SEARCH_CATEGORY.emojis[0], this.state.skin, this.props.set, this.props.data))) {\n this.handleEmojiSelect(emoji);\n handled = true;\n }\n\n break;\n }\n\n if (handled) {\n e.preventDefault();\n }\n }\n }, {\n key: \"updateCategoriesSize\",\n value: function updateCategoriesSize() {\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n if (component) component.memoizeSize();\n }\n\n if (this.scroll) {\n var target = this.scroll;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n }\n }\n }, {\n key: \"getCategories\",\n value: function getCategories() {\n return this.state.firstRender ? this.categories.slice(0, 3) : this.categories;\n }\n }, {\n key: \"setAnchorsRef\",\n value: function setAnchorsRef(c) {\n this.anchors = c;\n }\n }, {\n key: \"setSearchRef\",\n value: function setSearchRef(c) {\n this.search = c;\n }\n }, {\n key: \"setPreviewRef\",\n value: function setPreviewRef(c) {\n this.preview = c;\n }\n }, {\n key: \"setScrollRef\",\n value: function setScrollRef(c) {\n this.scroll = c;\n }\n }, {\n key: \"setCategoryRef\",\n value: function setCategoryRef(name, c) {\n if (!this.categoryRefs) {\n this.categoryRefs = {};\n }\n\n this.categoryRefs[name] = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$props = this.props,\n perLine = _this$props.perLine,\n emojiSize = _this$props.emojiSize,\n set = _this$props.set,\n sheetSize = _this$props.sheetSize,\n sheetColumns = _this$props.sheetColumns,\n sheetRows = _this$props.sheetRows,\n style = _this$props.style,\n title = _this$props.title,\n emoji = _this$props.emoji,\n color = _this$props.color,\n _native = _this$props[\"native\"],\n backgroundImageFn = _this$props.backgroundImageFn,\n emojisToShowFilter = _this$props.emojisToShowFilter,\n showPreview = _this$props.showPreview,\n showSkinTones = _this$props.showSkinTones,\n emojiTooltip = _this$props.emojiTooltip,\n useButton = _this$props.useButton,\n include = _this$props.include,\n exclude = _this$props.exclude,\n recent = _this$props.recent,\n autoFocus = _this$props.autoFocus,\n skinEmoji = _this$props.skinEmoji,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var width = perLine * (emojiSize + 12) + 12 + 2 + measureScrollbar();\n var theme = this.getPreferredTheme();\n var skin = this.props.skin || this.state.skin || store.get('skin') || this.props.defaultSkin;\n return React.createElement(\"section\", {\n style: _objectSpread({\n width: width\n }, style),\n className: \"emoji-mart emoji-mart-\".concat(theme),\n \"aria-label\": title,\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Anchors, {\n ref: this.setAnchorsRef,\n data: this.data,\n i18n: this.i18n,\n color: color,\n categories: this.categories,\n onAnchorClick: this.handleAnchorClick,\n icons: this.icons\n })), React.createElement(Search, {\n ref: this.setSearchRef,\n onSearch: this.handleSearch,\n data: this.data,\n i18n: this.i18n,\n emojisToShowFilter: emojisToShowFilter,\n include: include,\n exclude: exclude,\n custom: this.CUSTOM,\n autoFocus: autoFocus\n }), React.createElement(\"div\", {\n ref: this.setScrollRef,\n className: \"emoji-mart-scroll\",\n onScroll: this.handleScroll\n }, this.getCategories().map(function (category, i) {\n return React.createElement(Category, {\n ref: _this4.setCategoryRef.bind(_this4, \"category-\".concat(i)),\n key: category.name,\n id: category.id,\n name: category.name,\n emojis: category.emojis,\n perLine: perLine,\n \"native\": _native,\n hasStickyPosition: _this4.hasStickyPosition,\n data: _this4.data,\n i18n: _this4.i18n,\n recent: category.id == _this4.RECENT_CATEGORY.id ? recent : undefined,\n custom: category.id == _this4.RECENT_CATEGORY.id ? _this4.CUSTOM : undefined,\n emojiProps: {\n \"native\": _native,\n skin: skin,\n size: emojiSize,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n forceSize: _native,\n tooltip: emojiTooltip,\n backgroundImageFn: backgroundImageFn,\n useButton: useButton,\n onOver: _this4.handleEmojiOver,\n onLeave: _this4.handleEmojiLeave,\n onClick: _this4.handleEmojiClick\n },\n notFound: notFound,\n notFoundEmoji: notFoundEmoji\n });\n })), (showPreview || showSkinTones) && React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Preview, {\n ref: this.setPreviewRef,\n data: this.data,\n title: title,\n emoji: emoji,\n showSkinTones: showSkinTones,\n showPreview: showPreview,\n emojiProps: {\n \"native\": _native,\n size: 38,\n skin: skin,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n backgroundImageFn: backgroundImageFn\n },\n skinsProps: {\n skin: skin,\n onChange: this.handleSkinChange,\n skinEmoji: skinEmoji\n },\n i18n: this.i18n\n })));\n }\n }]);\n\n return NimblePicker;\n}(React.PureComponent);\n\nexport { NimblePicker as default };\nNimblePicker.propTypes\n/* remove-proptypes */\n= _objectSpread({}, PickerPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimblePicker.defaultProps = _objectSpread({}, PickerDefaultProps);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\n\nvar Picker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Picker, _React$PureComponent);\n\n function Picker() {\n _classCallCheck(this, Picker);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Picker).apply(this, arguments));\n }\n\n _createClass(Picker, [{\n key: \"render\",\n value: function render() {\n return React.createElement(NimblePicker, _extends({}, this.props, this.state));\n }\n }]);\n\n return Picker;\n}(React.PureComponent);\n\nexport { Picker as default };\nPicker.propTypes\n/* remove-proptypes */\n= PickerPropTypes;\nPicker.defaultProps = _objectSpread({}, PickerDefaultProps, {\n data: data\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar Emoji = function Emoji(props) {\n for (var k in Emoji.defaultProps) {\n if (props[k] == undefined && Emoji.defaultProps[k] != undefined) {\n props[k] = Emoji.defaultProps[k];\n }\n }\n\n return NimbleEmoji(_objectSpread({}, props));\n};\n\nEmoji.propTypes\n/* remove-proptypes */\n= EmojiPropTypes;\nEmoji.defaultProps = _objectSpread({}, EmojiDefaultProps, {\n data: data\n});\nexport default Emoji;","// vendors\nimport React, { memo, useMemo } from \"react\";\nimport { Picker } from \"emoji-mart\";\nimport t from \"prop-types\";\nimport \"emoji-mart/css/emoji-mart.css\";\n\n/**\n * @typedef {object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {function(import(\"../types/types\").EmojiMartItem): void} onSelectEmoji\n * @property {boolean} disableRecent\n * @property {object[]} customEmojis\n */\n\n/**\n * Emoji Picker Component\n * @param {Props} props\n * @return {React.FC}\n */\nfunction EmojiPicker(props) {\n const {\n theme,\n onSelectEmoji,\n disableRecent,\n customEmojis\n } = props;\n\n const excludePicker = useMemo(() => {\n /** @type import(\"emoji-mart\").CategoryName[] */\n const exclude = [];\n\n if (disableRecent) {\n exclude.push(\"recent\");\n }\n\n return exclude;\n }, [disableRecent]);\n\n return (\n <Picker\n theme={theme}\n set=\"apple\"\n showPreview={false}\n showSkinTones={false}\n onSelect={onSelectEmoji}\n exclude={excludePicker}\n custom={customEmojis}\n />\n );\n}\n\nEmojiPicker.propTypes = {\n theme: t.oneOf(['light', 'dark', 'auto']),\n onSelectEmoji: t.func,\n disableRecent: t.bool,\n customEmojis: t.array\n};\n\nexport default memo(EmojiPicker);\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useState } from \"react\";\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"../utils/emoji-utils\";\n\nimport EmojiPicker from \"./emoji-picker\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {boolean} keepOpened\n * @property {boolean} disableRecent\n * @property {object[]=} customEmojis\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n * @property {(fn: PolluteFn) => void} addPolluteFn\n * @property {(html: string) => void} appendContent\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst EmojiPickerWrapper = (props) => {\n const {\n theme,\n keepOpened,\n disableRecent,\n customEmojis,\n addSanitizeFn,\n addPolluteFn,\n appendContent,\n } = props;\n\n const [showPicker, setShowPicker] = useState(false);\n\n useEffect(() => {\n addSanitizeFn(replaceAllTextEmojiToString);\n }, [addSanitizeFn]);\n\n useEffect(() => {\n addPolluteFn(replaceAllTextEmojis);\n }, [addPolluteFn]);\n\n useEffect(() => {\n /**\n *\n * @param {MouseEvent} event\n */\n function checkClickOutside(event) {\n /** @type {HTMLElement} */\n // @ts-ignore\n const element = event.target;\n\n if (\n element.classList.contains(\"react-input-emoji--button\") ||\n element.classList.contains(\"react-input-emoji--button--icon\")\n ) {\n return;\n }\n\n setShowPicker(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n /**\n *\n * @param {React.MouseEvent} event\n */\n function toggleShowPicker(event) {\n event.stopPropagation();\n event.preventDefault();\n\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {import(\"../types/types\").EmojiMartItem} emoji\n */\n function handleSelectEmoji(emoji) {\n appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n }\n\n return (\n <>\n <div className=\"react-emoji-picker--container\">\n {showPicker && (\n <div\n className=\"react-emoji-picker--wrapper\"\n onClick={evt => evt.stopPropagation()}\n >\n <div className=\"react-emoji-picker\">\n <EmojiPicker\n theme={theme}\n onSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n </div>\n </div>\n )}\n </div>\n <button\n type=\"button\"\n className={`react-input-emoji--button${showPicker ? \" react-input-emoji--button__show\" : \"\"\n }`}\n onClick={toggleShowPicker}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n className=\"react-input-emoji--button--icon\"\n >\n {/* eslint-disable-next-line max-len */}\n <path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\" />\n {/* eslint-disable-next-line max-len */}\n <path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\" />\n </svg>\n </button>\n </>\n );\n};\n\nexport default EmojiPickerWrapper;\n","// @ts-check\n\n/**\n *\n * @return {string | null}\n */\nexport function getTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return null;\n\n const text = range.text.substring(range.begin, range.end);\n\n return text || null;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function deleteTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return;\n\n // @ts-ignore\n range.element.deleteData(range.begin, range.end - range.begin);\n}\n\n/**\n *\n * @return {{begin: number, end: number, text: string, element: Node} | null}\n */\nfunction getRangeFromAtToCaret() {\n const elementWithFocus = getElementWithFocus();\n\n if (!elementWithFocus) {\n return null;\n }\n\n const { element, caretOffset } = elementWithFocus;\n const text = element.textContent;\n const lastAt = text.lastIndexOf(\"@\");\n\n if (\n lastAt === -1 ||\n lastAt >= caretOffset ||\n (lastAt !== 0 && text[lastAt - 1] !== \" \")\n ) {\n return null;\n }\n\n return { begin: lastAt, end: caretOffset, text, element };\n}\n\n/**\n *\n * @return {{element: Node, caretOffset: number}}\n */\nexport function getElementWithFocus() {\n const element = getSelectionStart();\n\n if (element === null) {\n return null;\n }\n\n let caretOffset = 0;\n if (typeof window.getSelection != \"undefined\") {\n const range = window.getSelection().getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n caretOffset = preCaretRange.toString().length;\n } else if (\n // @ts-ignore\n typeof document.selection != \"undefined\" &&\n // @ts-ignore\n document.selection.type != \"Control\"\n ) {\n // @ts-ignore\n const textRange = document.selection.createRange();\n // @ts-ignore\n const preCaretTextRange = document.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n\n return { element, caretOffset };\n}\n\n/**\n *\n * @return {Node | null}\n */\nfunction getSelectionStart() {\n const node = document.getSelection().anchorNode;\n return node?.nodeType == 3 ? node : null;\n}\n","// @ts-check\nimport { useCallback, useState } from \"react\";\nimport {\n deleteTextFromAtToCaret,\n getElementWithFocus,\n getTextFromAtToCaret\n} from \"../utils/mention-utils\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {(text: string) => Promise<MentionUser[]>=} searchMention\n * @returns {{mentionSearchText: string | null, mentionUsers: MentionUser[], onKeyUp: (event: React.KeyboardEvent) => void, onFocus: () => void, onSelectUser: () => void, loading: boolean}}\n */\nexport function useMention(searchMention) {\n const [loading, setLoading] = useState(false);\n\n /** @type {[MentionUser[], React.Dispatch<React.SetStateAction<MentionUser[]>>]} */\n const [mentionUsers, setMentionUsers] = useState([]);\n\n /** @type {[string | null, React.Dispatch<React.SetStateAction<string | null>>]} */\n const [mentionSearchText, setMentionSearchText] = useState(null);\n\n const onSelectUser = useCallback(() => {\n deleteTextFromAtToCaret();\n setMentionUsers([]);\n }, []);\n\n /** */\n const checkMentionText = useCallback(async () => {\n const metionText = getTextFromAtToCaret();\n\n setMentionSearchText(metionText);\n\n if (metionText === null) {\n setMentionUsers([]);\n } else {\n setLoading(true);\n const users = await searchMention(metionText);\n setLoading(false);\n setMentionUsers(users);\n }\n }, [searchMention]);\n\n /** @type {(event: React.KeyboardEvent) => void} */\n const onKeyUp = useCallback(\n async event => {\n if (typeof searchMention !== \"function\") return;\n\n if (\n event.key === \"Backspace\" &&\n getElementWithFocus()?.element.parentElement.hasAttribute(\n \"data-mention-id\"\n )\n ) {\n const elementWithFocus = getElementWithFocus();\n elementWithFocus.element.parentElement.remove();\n } else if (\n ![\"ArrowUp\", \"ArrowDown\", \"Esc\", \"Escape\"].includes(event.key)\n ) {\n checkMentionText();\n }\n },\n [checkMentionText, searchMention]\n );\n\n const onFocus = useCallback(() => {\n checkMentionText();\n }, [checkMentionText]);\n\n return {\n mentionSearchText,\n mentionUsers,\n onKeyUp,\n onFocus,\n onSelectUser,\n loading\n };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, {\n useImperativeHandle,\n useState,\n forwardRef,\n useMemo,\n useEffect\n} from \"react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {Object} Props\n * @property {MentionUser[]} users\n * @property {string | null} mentionSearchText\n * @property {(user: MentionUser) => void} onSelect\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n */\n\n/**\n * @typedef {{prevUser: () => void; nextUser: () => void;}} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst MentionUserList = (\n { users, mentionSearchText, onSelect, addEventListener },\n ref\n) => {\n const [selectedUser, setSelectedUser] = useState(0);\n\n useImperativeHandle(ref, () => ({\n prevUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === 0) {\n return 0;\n }\n\n return currentSelectedUser - 1;\n });\n },\n nextUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === users.length - 1) {\n return users.length - 1;\n }\n\n return currentSelectedUser + 1;\n });\n }\n }));\n\n useEffect(() => {\n setSelectedUser(0);\n }, [users]);\n\n /**\n *\n * @param {string} selectedText\n * @param {string} rest\n * @return {string}\n */\n function getMentionSelectedNameEl(selectedText, rest) {\n return `<span class=\"react-input-emoji--mention--item--name__selected\" data-testid=\"metion-selected-word\">${selectedText}</span>${rest}`;\n }\n\n /** @type {(MentionUser & {nameHtml: string})[]} */\n const usersFiltered = useMemo(() => {\n const searchText = mentionSearchText\n ? mentionSearchText.substring(1).toLocaleLowerCase()\n : \"\";\n return users.map(user => {\n let nameHtml = user.name;\n\n if (mentionSearchText && mentionSearchText.length > 1) {\n if (user.name.toLowerCase().startsWith(searchText)) {\n nameHtml = getMentionSelectedNameEl(\n user.name.substring(0, searchText.length),\n user.name.substring(searchText.length)\n );\n } else {\n const names = user.name.split(\" \");\n\n nameHtml = names\n .map(name => {\n if (name.toLocaleLowerCase().startsWith(searchText)) {\n return getMentionSelectedNameEl(\n name.substring(0, searchText.length),\n name.substring(searchText.length)\n );\n }\n return name;\n })\n .join(\" \");\n }\n }\n\n return {\n ...user,\n nameHtml\n };\n });\n }, [mentionSearchText, users]);\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {MentionUser} user\n * @returns {(event: React.MouseEvent) => void} event\n */\n function handleClick(user) {\n return event => {\n event.stopPropagation();\n event.preventDefault();\n\n onSelect(user);\n };\n }\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"enter\", event => {\n event.stopPropagation();\n event.preventDefault();\n onSelect(usersFiltered[selectedUser]);\n });\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onSelect, selectedUser, usersFiltered]);\n\n return (\n <ul\n className=\"react-input-emoji--mention--list\"\n data-testid=\"mention-user-list\"\n >\n {usersFiltered.map((user, index) => (\n <li key={user.id}>\n <button\n type=\"button\"\n onClick={handleClick(user)}\n className={`react-input-emoji--mention--item${\n selectedUser === index\n ? \" react-input-emoji--mention--item__selected\"\n : \"\"\n }`}\n onMouseOver={() => setSelectedUser(index)}\n >\n <img\n className=\"react-input-emoji--mention--item--img\"\n src={user.image}\n />\n <div\n className=\"react-input-emoji--mention--item--name\"\n dangerouslySetInnerHTML={{ __html: user.nameHtml }}\n />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst MentionUserListWithRef = forwardRef(MentionUserList);\n\nMentionUserListWithRef.propTypes = {\n users: t.array.isRequired\n};\n\nexport default MentionUserListWithRef;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// hooks\nimport { useMention } from \"../hooks/use-mention\";\n\n// components\nimport MentionUserList from \"./mention-user-list\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n * @property {(html: string) => void} appendContent\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst MentionWrapper = ({\n searchMention,\n addEventListener,\n appendContent,\n addSanitizeFn\n}) => {\n /** @type {React.MutableRefObject<import('./mention-user-list').Ref | null>} */\n const metionUserListRef = useRef(null);\n const [showUserList, setShowUserList] = useState(false);\n\n const {\n mentionSearchText,\n mentionUsers,\n loading,\n onKeyUp,\n onFocus,\n onSelectUser\n } = useMention(searchMention);\n\n useEffect(() => {\n addSanitizeFn(html => {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const mentionsEl = Array.prototype.slice.call(\n container.querySelectorAll(\".react-input-emoji--mention--text\")\n );\n\n mentionsEl.forEach(mentionEl => {\n container.innerHTML = container.innerHTML.replace(\n mentionEl.outerHTML,\n `@[${mentionEl.dataset.mentionName}](userId:${mentionEl.dataset.mentionId})`\n );\n });\n\n return container.innerHTML;\n });\n }, [addSanitizeFn]);\n\n useEffect(() => {\n setShowUserList(mentionUsers.length > 0);\n }, [mentionUsers]);\n\n useEffect(() => {\n /** */\n function checkClickOutside() {\n setShowUserList(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"keyUp\", onKeyUp);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onKeyUp]);\n\n useEffect(() => {\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n switch (event.key) {\n case \"Esc\": // IE/Edge specific value\n case \"Escape\":\n setShowUserList(false);\n break;\n default:\n break;\n }\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeyDown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener]);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"focus\", onFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onFocus]);\n\n useEffect(() => {\n if (showUserList) {\n const unsubscribeArrowUp = addEventListener(\"arrowUp\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.prevUser();\n });\n\n const unsubscribeArrowDown = addEventListener(\"arrowDown\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.nextUser();\n });\n\n return () => {\n unsubscribeArrowUp();\n unsubscribeArrowDown();\n };\n }\n }, [addEventListener, showUserList]);\n\n /**\n *\n * @param {MetionUser} user\n */\n function handleSelect(user) {\n onSelectUser();\n appendContent(\n `<span class=\"react-input-emoji--mention--text\" data-mention-id=\"${user.id}\" data-mention-name=\"${user.name}\">@${user.name}</span> `\n );\n }\n\n return (\n <>\n {loading ? (\n <div className=\"react-input-emoji--mention--container\">\n <div className=\"react-input-emoji--mention--loading\">\n <div className=\"react-input-emoji--mention--loading--spinner\">\n Loading...\n </div>\n </div>\n </div>\n ) : (\n showUserList && (\n <div\n className=\"react-input-emoji--mention--container\"\n onClick={evt => evt.stopPropagation()}\n >\n <MentionUserList\n ref={metionUserListRef}\n mentionSearchText={mentionSearchText}\n users={mentionUsers}\n onSelect={handleSelect}\n addEventListener={addEventListener}\n />\n </div>\n )\n )}\n </>\n );\n};\n\nexport default MentionWrapper;\n","// @ts-check\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @template T\n * @returns {import('../types/types').ListenerObj<T>}\n */\nexport function createObserver() {\n /** @type {import('../types/types').Listerner<T>[]} */\n let listeners = [];\n\n return {\n subscribe: listener => {\n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n },\n publish: event => {\n listeners.forEach(listener => listener(event));\n },\n get currentListerners() {\n return listeners;\n }\n };\n}\n","// @ts-check\n\nimport { useCallback, useMemo } from \"react\";\nimport { createObserver } from \"../utils/observer\";\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useEventListeners() {\n /** @type {TextInputListeners} */\n const listeners = useMemo(\n () => ({\n keyDown: createObserver(),\n keyUp: createObserver(),\n arrowUp: createObserver(),\n arrowDown: createObserver(),\n enter: createObserver(),\n focus: createObserver()\n }),\n []\n );\n\n /**\n * @template {keyof TextInputListeners} T, K\n * @type {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void}\n */\n const addEventListener = useCallback(\n (event, fn) => {\n return listeners[event].subscribe(fn);\n },\n [listeners]\n );\n\n return { addEventListener, listeners };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function usePollute() {\n /** @type {React.MutableRefObject<PolluteFn[]>} */\n const polluteFnsRef = useRef([]);\n\n /** @type {(fn: PolluteFn) => void} */\n const addPolluteFn = useCallback(fn => {\n polluteFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const pollute = useCallback(text => {\n const result = polluteFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, text);\n\n return result;\n }, []);\n\n return { addPolluteFn, pollute };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, forwardRef, useCallback } from \"react\";\n\n// css\nimport \"./styles.css\";\n\n// utils\nimport { replaceAllTextEmojis } from \"./utils/emoji-utils\";\nimport {\n // handleCopy,\n // handlePaste,\n totalCharacters\n} from \"./utils/input-event-utils\";\n\n// hooks\nimport { useExpose } from \"./hooks/use-expose\";\nimport { useEmit } from \"./hooks/use-emit\";\n\n// components\nimport TextInput from \"./text-input\";\nimport EmojiPickerWrapper from \"./components/emoji-picker-wrapper\";\nimport MentionWrapper from \"./components/mention-wrapper\";\nimport { useEventListeners } from \"./hooks/use-event-listeners\";\nimport { useSanitize } from \"./hooks/use-sanitize\";\nimport { usePollute } from \"./hooks/user-pollute\";\n\n/**\n * @typedef {import('./types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('./types/types').ListenerObj<any>} ListenerObj\n */\n\n/**\n * @typedef {object} Props\n * @property {string} value\n * @property {(value: string) => void} onChange\n * @property {\"light\" | \"dark\" | \"auto\"} theme\n * @property {boolean} cleanOnEnter\n * @property {(text: string) => void} onEnter\n * @property {string} placeholder\n * @property {(size: {width: number, height: number}) => void} onResize\n * @property {() => void} onClick\n * @property {() => void} onFocus\n * @property {number} maxLength\n * @property {boolean} keepOpened\n * @property {(event: KeyboardEvent) => void} onKeyDown\n * @property {string} inputClass\n * @property {boolean} disableRecent\n * @property {number} tabIndex\n * @property {number} height\n * @property {number} borderRadius\n * @property {string} borderColor\n * @property {number} fontSize\n * @property {string} fontFamily\n * @property {object[]=} customEmojis\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n */\n\n/**\n * Input Emoji Component\n * @param {Props} props\n * @param {React.Ref<any>} ref\n * @return {JSX.Element}\n */\nfunction InputEmoji(props, ref) {\n const {\n onChange,\n onEnter,\n onResize,\n onClick,\n onFocus,\n onKeyDown,\n theme,\n cleanOnEnter,\n placeholder,\n maxLength,\n keepOpened,\n inputClass,\n disableRecent,\n tabIndex,\n value,\n customEmojis,\n searchMention,\n // style\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n } = props;\n\n /** @type {React.MutableRefObject<import('./text-input').Ref>} */\n const textInputRef = useRef(null);\n\n const { addEventListener, listeners } = useEventListeners();\n\n const { addSanitizeFn, sanitize, sanitizedTextRef } = useSanitize();\n\n const { addPolluteFn, pollute } = usePollute();\n\n const updateHTML = useCallback(\n (nextValue = \"\") => {\n textInputRef.current.html = replaceAllTextEmojis(nextValue);\n sanitizedTextRef.current = nextValue;\n },\n [sanitizedTextRef]\n );\n\n const setValue = useCallback(\n value => {\n updateHTML(value);\n },\n [updateHTML]\n );\n\n const emitChange = useEmit(textInputRef, onResize, onChange);\n\n useExpose({\n ref,\n setValue,\n textInputRef,\n emitChange\n });\n\n useEffect(() => {\n if (sanitizedTextRef.current !== value) {\n setValue(value);\n }\n }, [sanitizedTextRef, setValue, value]);\n\n useEffect(() => {\n updateHTML();\n }, [updateHTML]);\n\n useEffect(() => {\n /**\n * Handle keydown event\n * @param {React.KeyboardEvent} event\n * @return {boolean}\n */\n function handleKeydown(event) {\n if (\n typeof maxLength !== \"undefined\" &&\n event.key !== \"Backspace\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n event.preventDefault();\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n\n const text = sanitize(textInputRef.current.html);\n\n emitChange(sanitizedTextRef.current);\n\n if (\n typeof onEnter === \"function\" &&\n listeners.enter.currentListerners.length === 0\n ) {\n onEnter(text);\n }\n\n if (cleanOnEnter && listeners.enter.currentListerners.length === 0) {\n updateHTML(\"\");\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return false;\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return true;\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeydown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, cleanOnEnter, emitChange, listeners.enter.currentListerners.length, maxLength, onEnter, onKeyDown, sanitize, sanitizedTextRef, updateHTML]);\n\n useEffect(() => {\n /** */\n function handleFocus() {\n if (typeof onClick === \"function\") {\n onClick();\n }\n\n if (typeof onFocus === \"function\") {\n onFocus();\n }\n }\n\n const unsubscribe = addEventListener(\"focus\", handleFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onClick, onFocus]);\n\n /**\n *\n * @param {string} html\n */\n function handleTextInputChange(html) {\n sanitize(html);\n emitChange(sanitizedTextRef.current);\n }\n\n /**\n *\n * @param {string} html\n */\n function appendContent(html) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(html);\n }\n\n /**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\n function handleCopy(event) {\n event.clipboardData.setData(\"text\", sanitizedTextRef.current);\n event.preventDefault();\n }\n\n /**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\n function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = pollute(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n }\n\n return (\n <div className=\"react-emoji\">\n <MentionWrapper\n searchMention={searchMention}\n addEventListener={addEventListener}\n appendContent={appendContent}\n addSanitizeFn={addSanitizeFn}\n />\n <TextInput\n ref={textInputRef}\n onCopy={handleCopy}\n onPaste={handlePaste}\n onFocus={listeners.focus.publish}\n onArrowUp={listeners.arrowUp.publish}\n onArrowDown={listeners.arrowDown.publish}\n onKeyUp={listeners.keyUp.publish}\n onKeyDown={listeners.keyDown.publish}\n onEnter={listeners.enter.publish}\n placeholder={placeholder}\n style={{\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n }}\n tabIndex={tabIndex}\n className={inputClass}\n onChange={handleTextInputChange}\n />\n <EmojiPickerWrapper\n theme={theme}\n keepOpened={keepOpened}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n addSanitizeFn={addSanitizeFn}\n addPolluteFn={addPolluteFn}\n appendContent={appendContent}\n />\n </div>\n );\n}\n\nconst InputEmojiWithRef = forwardRef(InputEmoji);\n\nInputEmojiWithRef.defaultProps = {\n theme: /** @type {const} */ (\"auto\"),\n height: 30,\n placeholder: \"Type a message\",\n borderRadius: 21,\n borderColor: \"#EAEAEA\",\n fontSize: 15,\n fontFamily: \"sans-serif\",\n tabIndex: 0,\n customEmojis: []\n};\n\nexport default InputEmojiWithRef;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TRANSPARENT_GIF","replaceAllTextEmojis","text","allEmojis","getAllEmojisFromText","allEmojiStyle","Set","forEach","emoji","replaceAll","str","find","replace","RegExp","match","getImageEmoji","shortNames","short_names","emojiSpanEl","querySelector","native","id","dataEmoji","emoticons","length","replaceAllTextEmojiToString","html","container","innerHTML","images","Array","prototype","slice","call","querySelectorAll","image","outerHTML","dataset","handlePasteHtmlAtCaret","sel","range","window","getSelection","getRangeAt","rangeCount","deleteContents","el","frag","createDocumentFragment","node","lastNode","insertNode","cloneRange","setStartAfter","collapse","removeAllRanges","addRange","totalCharacters","textCount","emojisCount","useSanitize","sanitizeFnsRef","useRef","sanitizedTextRef","addSanitizeFn","useCallback","fn","current","push","sanitize","result","reduce","acc","replaceAllHtmlToString","innerText","useExpose","textInputRef","setValue","emitChange","useImperativeHandle","value","focus","blur","useEmit","onResize","onChange","currentSizeRef","onChangeFn","checkAndEmitResize","currentSize","nextSize","size","width","height","sanitizedText","useEffect","TextInput","placeholder","tabIndex","className","props","appendContent","trim","placeholderRef","visibility","offsetWidth","offsetHeight","handleKeyDown","event","key","onEnter","onArrowUp","onArrowDown","onKeyDown","handleClick","onFocus","handleKeyUp","onKeyUp","input","onBlur","onCopy","onPaste","TextInputWithRef","forwardRef","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","i","descriptor","enumerable","configurable","writable","Object","defineProperty","_createClass","protoProps","staticProps","_typeof","obj","Symbol","iterator","constructor","mapping","name","unified","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","added_in","buildSearch","search","addToSearch","strings","split","isArray","string","s","toLowerCase","indexOf","join","uncompress","data","compressed","emojis","unshift","sheet_x","sheet_y","toFixed","_String","String","fromCodePoint","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","arguments","codePoint","Number","isFinite","Math","floor","RangeError","fromCharCode","apply","COLONS_REGEX","SKINS","unifiedToNative","unicodes","codePoints","map","u","concat","skin_tone","skin_variations","custom","customCategory","imageUrl","colons","skin","getSanitizedData","getData","set","emojiData","matches","parseInt","aliases","hasOwnProperty","keys","variations","JSON","parse","stringify","skinKey","variationData","undefined","k","v","shift","uniq","arr","item","intersect","a","b","uniqA","uniqB","filter","deepMerge","o","originalValue","measureScrollbar","div","overflow","position","top","body","scrollbarWidth","clientWidth","removeChild","throttleIdleTask","func","doIdleTask","requestIdleCallback","setTimeout","running","throttled","NAMESPACE","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","localStorage","e","get","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_this","_loop","emoticon","skinTone","clearCustomEmojis","pool","_this2","emojiId","addCustomToPool","_this3","_this4","_ref","emojisToShowFilter","maxResults","include","exclude","_ref$custom","store","results","values","allResults","categories","category","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","_char","scores","sub","substr","subIndex","score","sort","aScore","bScore","localeCompare","emojiIndex","DEFAULTS","frequently","initialized","defaults","init","add","perLine","quantity","frequentlyKeys","sorted","reverse","sliced","last","pop","_defineProperty","_extends","assign","source","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_inherits","subClass","superClass","create","activity","React","xmlns","viewBox","d","transform","x","y","rx","flags","foods","nature","objects","people","places","recent","symbols","opacity","_delete","EmojiPropTypes","PropTypes","object","isRequired","onOver","onLeave","onClick","fallback","backgroundImageFn","bool","forceSize","tooltip","useButton","oneOf","sheetSize","sheetColumns","number","sheetRows","oneOfType","PickerPropTypes","onSelect","onSkinChange","emojiSize","i18n","title","color","showPreview","showSkinTones","emojiTooltip","theme","arrayOf","autoFocus","enableFrequentEmojiSort","shape","spriteUrl","skinEmoji","notFound","notFoundEmoji","icons","Anchors","_React$PureComponent","defaultCategory","first","selected","bind","currentTarget","getAttribute","_this$props","onAnchorClick","render","_this$props2","categorieslabel","anchor","isSelected","iconId","startsWith","backgroundColor","PureComponent","propTypes","array","defaultProps","EmojiDefaultProps","PickerDefaultProps","defaultSkin","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","_getData","_getPosition","_getData2","multiplyX","multiplyY","_getSanitizedData","_handleClick","_handleOver","_handleLeave","_isNumeric","isNaN","parseFloat","_convertStyleToCSS","NimbleEmoji","children","nativeEmoji","label","Boolean","fontSize","display","wordBreak","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","setHasEmoji","Tag","onMouseEnter","onMouseLeave","NotFound","emojiProps","component","notfound","Category","_React$Component","setContainerRef","setLabelRef","componentDidMount","margin","minMargin","memoizeSize","shouldComponentUpdate","nextProps","nextState","_native","hasStickyPosition","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSet","shouldUpdate","maxMargin","parent","parentElement","_this$container$getBo","getBoundingClientRect","_parent$getBoundingCl","parentTop","_this$label$getBoundi","labelHeight","scrollTop","handleScroll","getEmojis","frequentlyUsed","updateDisplay","c","_this$props3","labelStyles","labelSpanStyles","containerStyles","Component","Skins","opened","setState","SkinsEmoji","_Skins","skinToneNodes","skintext","SkinsDot","keyCode","preventDefault","visible","skintones","role","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","short_name","Search","icon","isSearching","setRef","clear","handleChange","onSearch","_this$state","inputId","htmlFor","disabled","I18N","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","customEmoji","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleDarkMatchMediaChange","testStickyPosition","firstRenderTimeout","componentDidUpdate","updateCategoriesSize","componentWillUnmount","clearTimeout","leaveTimeout","darkMatchMedia","removeListener","stickyTestElement","prefixes","prefix","getPreferredTheme","matchMedia","addListener","media","preview","categoryRefs","forceUpdate","requestAnimationFrame","scroll","waitingForPaint","activeCategory","scrollingDown","minTop","l","ii","active","clientHeight","scrollHeight","anchors","_activeCategory","categoryName","scrollToComponent","newState","handled","getCategories","setCategoryRef","onScroll","Picker","EmojiPicker","onSelectEmoji","disableRecent","customEmojis","excludePicker","useMemo","t","memo","EmojiPickerWrapper","keepOpened","addPolluteFn","showPicker","setShowPicker","useState","checkClickOutside","element","classList","contains","addEventListener","removeEventListener","toggleShowPicker","stopPropagation","currentShowPicker","handleSelectEmoji","evt","getTextFromAtToCaret","getRangeFromAtToCaret","substring","begin","end","deleteTextFromAtToCaret","deleteData","elementWithFocus","getElementWithFocus","caretOffset","textContent","lastAt","lastIndexOf","getSelectionStart","preCaretRange","selectNodeContents","setEnd","endContainer","endOffset","toString","selection","textRange","createRange","preCaretTextRange","createTextRange","moveToElementText","setEndPoint","anchorNode","nodeType","useMention","searchMention","loading","setLoading","mentionUsers","setMentionUsers","mentionSearchText","setMentionSearchText","onSelectUser","checkMentionText","metionText","users","hasAttribute","remove","includes","MentionUserList","selectedUser","setSelectedUser","prevUser","currentSelectedUser","nextUser","getMentionSelectedNameEl","selectedText","rest","usersFiltered","searchText","toLocaleLowerCase","user","nameHtml","names","unsubscribe","__html","MentionUserListWithRef","MentionWrapper","metionUserListRef","showUserList","setShowUserList","mentionsEl","mentionEl","mentionName","mentionId","unsubscribeArrowUp","unsubscribeArrowDown","handleSelect","createObserver","listeners","subscribe","listener","publish","currentListerners","useEventListeners","keyDown","keyUp","arrowUp","arrowDown","enter","usePollute","polluteFnsRef","pollute","InputEmoji","cleanOnEnter","maxLength","inputClass","borderRadius","borderColor","fontFamily","updateHTML","nextValue","handleKeydown","nativeEvent","handleFocus","handleTextInputChange","handleCopy","clipboardData","setData","handlePaste","content","execCommand","InputEmojiWithRef"],"mappings":";;;AAAA,SAASA,WAAT,CAAqBC,GAArB,EAA0BC,GAA1B,EAA+B;AAC7B,MAAKA,GAAG,KAAK,KAAK,CAAlB,EAAsBA,GAAG,GAAG,EAAN;AACtB,MAAIC,QAAQ,GAAGD,GAAG,CAACC,QAAnB;;AAEA,MAAI,CAACF,GAAD,IAAQ,OAAOG,QAAP,KAAoB,WAAhC,EAA6C;AAAE;AAAS;;AAExD,MAAIC,IAAI,GAAGD,QAAQ,CAACC,IAAT,IAAiBD,QAAQ,CAACE,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAA5B;AACA,MAAIC,KAAK,GAAGH,QAAQ,CAACI,aAAT,CAAuB,OAAvB,CAAZ;AACAD,EAAAA,KAAK,CAACE,IAAN,GAAa,UAAb;;AAEA,MAAIN,QAAQ,KAAK,KAAjB,EAAwB;AACtB,QAAIE,IAAI,CAACK,UAAT,EAAqB;AACnBL,MAAAA,IAAI,CAACM,YAAL,CAAkBJ,KAAlB,EAAyBF,IAAI,CAACK,UAA9B;AACD,KAFD,MAEO;AACLL,MAAAA,IAAI,CAACO,WAAL,CAAiBL,KAAjB;AACD;AACF,GAND,MAMO;AACLF,IAAAA,IAAI,CAACO,WAAL,CAAiBL,KAAjB;AACD;;AAED,MAAIA,KAAK,CAACM,UAAV,EAAsB;AACpBN,IAAAA,KAAK,CAACM,UAAN,CAAiBC,OAAjB,GAA2Bb,GAA3B;AACD,GAFD,MAEO;AACLM,IAAAA,KAAK,CAACK,WAAN,CAAkBR,QAAQ,CAACW,cAAT,CAAwBd,GAAxB,CAAlB;AACD;AACF;;;;;ACzBD;AAEO,MAAMe,eAAe,GAC1B,gFADK;AAGP;AACA;AACA;AACA;AACA;;AACO,SAASC,oBAAT,CAA8BC,IAA9B,EAAoC;AACzC,MAAIC,SAAS,GAAGC,oBAAoB,CAACF,IAAD,CAApC,CADyC;;AAIzC,QAAMG,aAAa,GAAG,EAAtB;;AAEA,MAAIF,SAAJ,EAAe;AACbA,IAAAA,SAAS,GAAG,CAAC,GAAG,IAAIG,GAAJ,CAAQH,SAAR,CAAJ,CAAZ,CADa;;AAGbA,IAAAA,SAAS,CAACI,OAAV,CAAkBC,KAAK,IAAI;AACzB,YAAMjB,KAAK,GAAGc,aAAa,CAACG,KAAD,CAA3B;AAEA,UAAI,CAACjB,KAAL,EAAY;AAEZW,MAAAA,IAAI,GAAGO,UAAU,CACfP,IADe,EAEfM,KAFe,EAGd;AACT,qBAAqBjB,KAAM;AAC3B,0BAA0BiB,KAAM;AAChC,mBAAmBR,eAAgB;AACnC,aAPuB,CAAjB;AASD,KAdD;AAeD;;AAED,SAAOE,IAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASO,UAAT,CAAoBC,GAApB,EAAyBC,IAAzB,EAA+BC,OAA/B,EAAwC;AACtC,SAAOF,GAAG,CAACE,OAAJ,CAAY,IAAIC,MAAJ,CAAWF,IAAX,EAAiB,GAAjB,CAAZ,EAAmCC,OAAnC,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASR,oBAAT,CAA8BF,IAA9B,EAAoC;AAClC,SAAOA,IAAI,CAACY,KAAL,CACL,mVADK,CAAP;AAGD;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,aAAT,CAAuBP,KAAvB,EAA8B;AACnC,MAAIQ,UAAU,GAAI,GAAER,KAAK,CAACS,WAAY,EAAtC;AAEAD,EAAAA,UAAU,GAAGP,UAAU,CAACO,UAAD,EAAa,GAAb,EAAkB,IAAlB,CAAvB;AAEA;;AACA,QAAME,WAAW,GACf9B,QAAQ,CAAC+B,aAAT,CACG,gBAAeX,KAAK,CAACY,MAAO,KAAIJ,UAAW,WAD9C,KAEK5B,QAAQ,CAAC+B,aAAT,CAAwB,gBAAeX,KAAK,CAACa,EAAG,WAAhD,CAHP;AAKA,MAAI,CAACH,WAAL,EAAkB,OAAO,EAAP;AAElB,QAAM3B,KAAK,GAAGkB,UAAU,CAACS,WAAW,CAAC3B,KAAZ,CAAkBO,OAAnB,EAA4B,GAA5B,EAAiC,GAAjC,CAAxB;AAEA,MAAIwB,SAAS,GAAGd,KAAK,CAACY,MAAtB;;AAEA,MAAI,CAACE,SAAD,IAAcd,KAAK,CAACe,SAApB,IAAiCf,KAAK,CAACe,SAAN,CAAgBC,MAAhB,GAAyB,CAA9D,EAAiE;AAC/DF,IAAAA,SAAS,GAAGd,KAAK,CAACe,SAAN,CAAgB,CAAhB,CAAZ;AACD;;AAED,SAAQ,eAAchC,KAAM,iBAAgB+B,SAAU,UAAStB,eAAgB,MAA/E;AACD;AAED;AACA;AACA;AACA;AACA;;AACO,SAASyB,2BAAT,CAAqCC,IAArC,EAA2C;AAChD,QAAMC,SAAS,GAAGvC,QAAQ,CAACI,aAAT,CAAuB,KAAvB,CAAlB;AACAmC,EAAAA,SAAS,CAACC,SAAV,GAAsBF,IAAtB;AAEA,QAAMG,MAAM,GAAGC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BN,SAAS,CAACO,gBAAV,CAA2B,KAA3B,CAA3B,CAAf;AAEAL,EAAAA,MAAM,CAACtB,OAAP,CAAe4B,KAAK,IAAI;AACtBR,IAAAA,SAAS,CAACC,SAAV,GAAsBD,SAAS,CAACC,SAAV,CAAoBhB,OAApB,CACpBuB,KAAK,CAACC,SADc,EAEpBD,KAAK,CAACE,OAAN,CAAc7B,KAFM,CAAtB;AAID,GALD;AAOA,SAAOmB,SAAS,CAACC,SAAjB;AACD;;ACzID;AA2BA;AACA;AACA;AACA;;AACO,SAASU,sBAAT,CAAgCZ,IAAhC,EAAsC;AAC3C,MAAIa,GAAJ;AACA,MAAIC,KAAJ;;AACA,MAAIC,MAAM,CAACC,YAAX,EAAyB;AACvB;AACAH,IAAAA,GAAG,GAAGE,MAAM,CAACC,YAAP,EAAN;;AACA,QAAIH,GAAG,CAACI,UAAJ,IAAkBJ,GAAG,CAACK,UAA1B,EAAsC;AACpCJ,MAAAA,KAAK,GAAGD,GAAG,CAACI,UAAJ,CAAe,CAAf,CAAR;AACAH,MAAAA,KAAK,CAACK,cAAN,GAFoC;AAKpC;;AACA,YAAMC,EAAE,GAAG1D,QAAQ,CAACI,aAAT,CAAuB,KAAvB,CAAX;AACAsD,MAAAA,EAAE,CAAClB,SAAH,GAAeF,IAAf;AACA,YAAMqB,IAAI,GAAG3D,QAAQ,CAAC4D,sBAAT,EAAb;AACA,UAAIC,IAAJ;AACA,UAAIC,QAAJ;;AACA,aAAQD,IAAI,GAAGH,EAAE,CAACpD,UAAlB,EAA+B;AAC7BwD,QAAAA,QAAQ,GAAGH,IAAI,CAACnD,WAAL,CAAiBqD,IAAjB,CAAX;AACD;;AACDT,MAAAA,KAAK,CAACW,UAAN,CAAiBJ,IAAjB,EAdoC;;AAiBpC,UAAIG,QAAJ,EAAc;AACZV,QAAAA,KAAK,GAAGA,KAAK,CAACY,UAAN,EAAR;AACAZ,QAAAA,KAAK,CAACa,aAAN,CAAoBH,QAApB;AACAV,QAAAA,KAAK,CAACc,QAAN,CAAe,IAAf;AACAf,QAAAA,GAAG,CAACgB,eAAJ;AACAhB,QAAAA,GAAG,CAACiB,QAAJ,CAAahB,KAAb;AACD;AACF;AACF;AACF;AAgFD;AACA;AACA;AACA;AACA;;AACO,SAASiB,eAAT,CAAyB;AAAEvD,EAAAA,IAAF;AAAQwB,EAAAA;AAAR,CAAzB,EAAyC;AAC9C,QAAMgC,SAAS,GAAGxD,IAAI,CAACsB,MAAvB;AACA,QAAMmC,WAAW,GAAG,CAACjC,IAAI,CAACZ,KAAL,CAAW,OAAX,KAAuB,EAAxB,EAA4BU,MAAhD;AAEA,SAAOkC,SAAS,GAAGC,WAAnB;AACD;;ACzJD;AAIA;AACA;AACA;AAEA;;AACA;;AACO,SAASC,WAAT,GAAuB;AAC5B;AACA,QAAMC,cAAc,GAAGC,MAAM,CAAC,EAAD,CAA7B;AAEA,QAAMC,gBAAgB,GAAGD,MAAM,CAAC,EAAD,CAA/B;AAEA;;AACA,QAAME,aAAa,GAAGC,WAAW,CAACC,EAAE,IAAI;AACtCL,IAAAA,cAAc,CAACM,OAAf,CAAuBC,IAAvB,CAA4BF,EAA5B;AACD,GAFgC,EAE9B,EAF8B,CAAjC;AAIA;;AACA,QAAMG,QAAQ,GAAGJ,WAAW,CAACvC,IAAI,IAAI;AACnC,QAAI4C,MAAM,GAAGT,cAAc,CAACM,OAAf,CAAuBI,MAAvB,CAA8B,CAACC,GAAD,EAAMN,EAAN,KAAa;AACtD,aAAOA,EAAE,CAACM,GAAD,CAAT;AACD,KAFY,EAEV9C,IAFU,CAAb;AAIA4C,IAAAA,MAAM,GAAGG,sBAAsB,CAACH,MAAD,CAA/B;AAEAP,IAAAA,gBAAgB,CAACI,OAAjB,GAA2BG,MAA3B;AAEA,WAAOA,MAAP;AACD,GAV2B,EAUzB,EAVyB,CAA5B;AAYA,SAAO;AAAEN,IAAAA,aAAF;AAAiBK,IAAAA,QAAjB;AAA2BN,IAAAA;AAA3B,GAAP;AACD;AAED;AACA;AACA;AACA;AACA;;AACO,SAASU,sBAAT,CAAgC/C,IAAhC,EAAsC;AAC3C,QAAMC,SAAS,GAAGvC,QAAQ,CAACI,aAAT,CAAuB,KAAvB,CAAlB;AACAmC,EAAAA,SAAS,CAACC,SAAV,GAAsBF,IAAtB;AAEA,MAAIxB,IAAI,GAAGyB,SAAS,CAAC+C,SAAV,IAAuB,EAAlC,CAJ2C;;AAO3CxE,EAAAA,IAAI,GAAGA,IAAI,CAACU,OAAL,CAAa,MAAb,EAAqB,EAArB,CAAP;AAEA,SAAOV,IAAP;AACD;;ACpDD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AACO,SAASyE,SAAT,CAAmB;AAAEzF,EAAAA,GAAF;AAAO0F,EAAAA,YAAP;AAAqBC,EAAAA,QAArB;AAA+BC,EAAAA;AAA/B,CAAnB,EAAgE;AACrE,QAAM;AAAET,IAAAA,QAAF;AAAYN,IAAAA;AAAZ,MAAiCH,WAAW,EAAlD;AAEAmB,EAAAA,mBAAmB,CAAC7F,GAAD,EAAM,OAAO;AAC9B,QAAI8F,KAAJ,GAAY;AACV,aAAOjB,gBAAgB,CAACI,OAAxB;AACD,KAH6B;;AAI9B,QAAIa,KAAJ,CAAUA,KAAV,EAAiB;AACfH,MAAAA,QAAQ,CAACG,KAAD,CAAR;AACD,KAN6B;;AAO9BC,IAAAA,KAAK,EAAE,MAAM;AACXL,MAAAA,YAAY,CAACT,OAAb,CAAqBc,KAArB;AACD,KAT6B;AAU9BC,IAAAA,IAAI,EAAE,MAAM;AACVb,MAAAA,QAAQ,CAACO,YAAY,CAACT,OAAb,CAAqBzC,IAAtB,CAAR;AAEAoD,MAAAA,UAAU;AACX;AAd6B,GAAP,CAAN,CAAnB;AAgBD;;ACpCD;;AAKA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASK,OAAT,CAAiBP,YAAjB,EAA+BQ,QAA/B,EAAyCC,QAAzC,EAAmD;AACxD,QAAMC,cAAc,GAAGxB,MAAM,CAAC,IAAD,CAA7B;AACA,QAAMyB,UAAU,GAAGzB,MAAM,CAACuB,QAAD,CAAzB;AAEA,QAAMG,kBAAkB,GAAGvB,WAAW,CAAC,MAAM;AAC3C,QAAIW,YAAY,CAACT,OAAjB,EAA0B;AACxB,YAAMsB,WAAW,GAAGH,cAAc,CAACnB,OAAnC;AAEA,YAAMuB,QAAQ,GAAGd,YAAY,CAACT,OAAb,CAAqBwB,IAAtC;;AAEA,UACE,CAAC,CAACF,WAAD,IACCA,WAAW,CAACG,KAAZ,KAAsBF,QAAQ,CAACE,KADhC,IAECH,WAAW,CAACI,MAAZ,KAAuBH,QAAQ,CAACG,MAFlC,KAGA,OAAOT,QAAP,KAAoB,UAJtB,EAKE;AACAA,QAAAA,QAAQ,CAACM,QAAD,CAAR;AACD;;AAEDJ,MAAAA,cAAc,CAACnB,OAAf,GAAyBuB,QAAzB;AACD;AACF,GAjBqC,EAiBnC,CAACN,QAAD,EAAWR,YAAX,CAjBmC,CAAtC;AAmBA,QAAME,UAAU,GAAGb,WAAW,CAAE6B,aAAD,IAAmB;AAChD,QAAI,OAAOP,UAAU,CAACpB,OAAlB,KAA8B,UAAlC,EAA8C;AAC5CoB,MAAAA,UAAU,CAACpB,OAAX,CAAmB2B,aAAnB;AACD;;AAED,QAAI,OAAOV,QAAP,KAAoB,UAAxB,EAAoC;AAClCI,MAAAA,kBAAkB;AACnB;AACF,GAR6B,EAQ3B,CAACA,kBAAD,EAAqBJ,QAArB,CAR2B,CAA9B;AAUAW,EAAAA,SAAS,CAAC,MAAM;AACd,QAAInB,YAAY,CAACT,OAAjB,EAA0B;AACxBqB,MAAAA,kBAAkB;AACnB;AACF,GAJQ,EAIN,CAACA,kBAAD,EAAqBZ,YAArB,CAJM,CAAT;AAMA,SAAOE,UAAP;AACD;;ACnDD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;;AACA,MAAMkB,SAAS,GAAG,CAChB;AAAEC,EAAAA,WAAF;AAAe1G,EAAAA,KAAf;AAAsB2G,EAAAA,QAAtB;AAAgCC,EAAAA,SAAhC;AAA2Cd,EAAAA,QAA3C;AAAqD,KAAGe;AAAxD,CADgB,EAEhBlH,GAFgB,KAGb;AACH6F,EAAAA,mBAAmB,CAAC7F,GAAD,EAAM,OAAO;AAC9BmH,IAAAA,aAAa,EAAE3E,IAAI,IAAI;AACrBkD,MAAAA,YAAY,CAACT,OAAb,CAAqBc,KAArB;AAEA3C,MAAAA,sBAAsB,CAACZ,IAAD,CAAtB;AAEAkD,MAAAA,YAAY,CAACT,OAAb,CAAqBc,KAArB;;AAEA,UAAIL,YAAY,CAACT,OAAb,CAAqBvC,SAArB,CAA+B0E,IAA/B,OAA0C,EAA9C,EAAkD;AAChDC,QAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,SAA1C;AACD,OAFD,MAEO;AACLD,QAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,QAA1C;AACD;;AAEDnB,MAAAA,QAAQ,CAACT,YAAY,CAACT,OAAb,CAAqBvC,SAAtB,CAAR;AACD,KAf6B;;AAgB9B,QAAIF,IAAJ,CAASsD,KAAT,EAAgB;AACdJ,MAAAA,YAAY,CAACT,OAAb,CAAqBvC,SAArB,GAAiCoD,KAAjC;;AAEA,UAAIA,KAAK,CAACsB,IAAN,OAAiB,EAArB,EAAyB;AACvBC,QAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,SAA1C;AACD,OAFD,MAEO;AACLD,QAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,QAA1C;AACD;;AAEDnB,MAAAA,QAAQ,CAACT,YAAY,CAACT,OAAb,CAAqBvC,SAAtB,CAAR;AACD,KA1B6B;;AA2B9B,QAAIF,IAAJ,GAAW;AACT,aAAOkD,YAAY,CAACT,OAAb,CAAqBvC,SAA5B;AACD,KA7B6B;;AA8B9B,QAAI1B,IAAJ,GAAW;AACT,aAAO0E,YAAY,CAACT,OAAb,CAAqBO,SAA5B;AACD,KAhC6B;;AAiC9B,QAAIiB,IAAJ,GAAW;AACT,aAAO;AACLC,QAAAA,KAAK,EAAEhB,YAAY,CAACT,OAAb,CAAqBsC,WADvB;AAELZ,QAAAA,MAAM,EAAEjB,YAAY,CAACT,OAAb,CAAqBuC;AAFxB,OAAP;AAID,KAtC6B;;AAuC9BzB,IAAAA,KAAK,GAAG;AACNL,MAAAA,YAAY,CAACT,OAAb,CAAqBc,KAArB;AACD;;AAzC6B,GAAP,CAAN,CAAnB;AA4CA;;AACA,QAAMsB,cAAc,GAAGzC,MAAM,CAAC,IAAD,CAA7B;AACA;;AACA,QAAMc,YAAY,GAAGd,MAAM,CAAC,IAAD,CAA3B;AAEA;AACF;AACA;AACA;;AACE,WAAS6C,aAAT,CAAuBC,KAAvB,EAA8B;AAC5B,QAAIA,KAAK,CAACC,GAAN,KAAc,OAAlB,EAA2B;AACzBT,MAAAA,KAAK,CAACU,OAAN,CAAcF,KAAd;AACD,KAFD,MAEO,IAAIA,KAAK,CAACC,GAAN,KAAc,SAAlB,EAA6B;AAClCT,MAAAA,KAAK,CAACW,SAAN,CAAgBH,KAAhB;AACD,KAFM,MAEA,IAAIA,KAAK,CAACC,GAAN,KAAc,WAAlB,EAA+B;AACpCT,MAAAA,KAAK,CAACY,WAAN,CAAkBJ,KAAlB;AACD,KAFM,MAEA;AACL,UAAIA,KAAK,CAACC,GAAN,CAAUrF,MAAV,KAAqB,CAAzB,EAA4B;AAC1B+E,QAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,QAA1C;AACD;AACF;;AAEDJ,IAAAA,KAAK,CAACa,SAAN,CAAgBL,KAAhB;AACD;AAED;;;AACA,WAASM,WAAT,GAAuB;AACrBd,IAAAA,KAAK,CAACe,OAAN;AACD;AAED;AACF;AACA;AACA;;;AACE,WAASC,WAAT,CAAqBR,KAArB,EAA4B;AAAA;;AAC1BR,IAAAA,KAAK,CAACiB,OAAN,CAAcT,KAAd;AAEA,UAAMU,KAAK,GAAG1C,YAAY,CAACT,OAA3B;;AAEA,QAAI,qBAAAmD,KAAK,CAAC5C,SAAN,sEAAiB4B,IAAjB,QAA4B,EAAhC,EAAoC;AAClCC,MAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,SAA1C;AACD,KAFD,MAEO;AACLD,MAAAA,cAAc,CAACpC,OAAf,CAAuB5E,KAAvB,CAA6BiH,UAA7B,GAA0C,QAA1C;AACD;;AAEDnB,IAAAA,QAAQ,CAACT,YAAY,CAACT,OAAb,CAAqBvC,SAAtB,CAAR;AACD;;AAED,sBACE;AAAK,IAAA,SAAS,EAAC,8BAAf;AAA8C,IAAA,KAAK,EAAErC;AAArD,kBACE;AAAK,IAAA,SAAS,EAAC,4BAAf;AAA4C,IAAA,OAAO,EAAE2H;AAArD,kBACE;AAAK,IAAA,GAAG,EAAEX,cAAV;AAA0B,IAAA,SAAS,EAAC;AAApC,KACGN,WADH,CADF,eAIE;AACE,IAAA,GAAG,EAAErB,YADP;AAEE,IAAA,SAAS,EAAE+B,aAFb;AAGE,IAAA,OAAO,EAAES,WAHX;AAIE,IAAA,QAAQ,EAAElB,QAJZ;AAKE,IAAA,eAAe,MALjB;AAME,IAAA,SAAS,EAAG,2BAA0BC,SAAS,GAAI,IAAGA,SAAU,EAAjB,GAAqB,EACjE,EAPL;AAQE,IAAA,MAAM,EAAEC,KAAK,CAACmB,MARhB;AASE,IAAA,MAAM,EAAEnB,KAAK,CAACoB,MAThB;AAUE,IAAA,OAAO,EAAEpB,KAAK,CAACqB,OAVjB;AAWE,mBAAY;AAXd,IAJF,CADF,CADF;AAsBD,CAtHD;;AAwHA,MAAMC,gBAAgB,gBAAGC,UAAU,CAAC3B,SAAD,CAAnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/emoji-utils.js","../src/utils/input-event-utils.js","../src/hooks/use-sanitize.js","../src/hooks/use-expose.js","../src/hooks/use-emit.js","../src/text-input.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/emoji-mart/dist-es/utils/data.js","../node_modules/emoji-mart/dist-es/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart/dist-es/utils/index.js","../node_modules/emoji-mart/dist-es/utils/store.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/emoji-index.js","../node_modules/emoji-mart/dist-es/utils/frequently.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/emoji-mart/dist-es/svgs/index.js","../node_modules/emoji-mart/dist-es/utils/shared-props.js","../node_modules/emoji-mart/dist-es/components/anchors.js","../node_modules/emoji-mart/dist-es/utils/shared-default-props.js","../node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","../node_modules/emoji-mart/dist-es/components/not-found.js","../node_modules/emoji-mart/dist-es/components/category.js","../node_modules/emoji-mart/dist-es/components/skins.js","../node_modules/emoji-mart/dist-es/components/skins-emoji.js","../node_modules/emoji-mart/dist-es/components/skins-dot.js","../node_modules/emoji-mart/dist-es/components/preview.js","../node_modules/emoji-mart/dist-es/components/search.js","../node_modules/emoji-mart/dist-es/components/picker/nimble-picker.js","../node_modules/emoji-mart/dist-es/components/picker/picker.js","../node_modules/emoji-mart/dist-es/components/emoji/emoji.js","../src/components/emoji-picker.js","../src/components/emoji-picker-wrapper.js","../src/utils/mention-utils.js","../src/hooks/use-mention.js","../src/components/mention-user-list.js","../src/components/mention-wrapper.js","../src/utils/observer.js","../src/hooks/use-event-listeners.js","../src/hooks/user-pollute.js","../src/index.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// @ts-check\n\nexport const TRANSPARENT_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\n/**\n * Replace all text with emoji with an image html tag\n * @param {string} text\n * @return {string}\n */\nexport function replaceAllTextEmojis(text) {\n let allEmojis = getAllEmojisFromText(text);\n\n // TODO: get all emoji style\n const allEmojiStyle = {};\n\n if (allEmojis) {\n allEmojis = [...new Set(allEmojis)]; // remove duplicates\n\n allEmojis.forEach(emoji => {\n const style = allEmojiStyle[emoji];\n\n if (!style) return;\n\n text = replaceAll(\n text,\n emoji,\n `<img\n style=\"${style}\"\n data-emoji=\"${emoji}\"\n src=\"${TRANSPARENT_GIF}\"\n />`\n );\n });\n }\n\n return text;\n}\n\n/**\n * Replace all occurrencies in a string\n * @param {string} str\n * @param {string} find\n * @param {string} replace\n * @return {string}\n */\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(find, \"g\"), replace);\n}\n\n/**\n * Get all emojis from the text\n * @param {string} text\n * @return {string[]}\n */\nfunction getAllEmojisFromText(text) {\n return text.match(\n /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g\n );\n}\n\n// /**\n// * Get all emoji stlye from emoji mart\n// * @return {Object.<string, string>}\n// */\n// function getAllEmojiStyle() {\n// /** @type {NodeListOf<Element>} */\n// const allEmojiButton = Array.prototype.slice.call(\n// document.querySelectorAll(\".emoji-mart-category-list > li > button\")\n// );\n\n// /** @type {Object.<string, string>} */\n// const allEmojiStyle = {};\n\n// allEmojiButton.forEach(emojiButton => {\n// const label = emojiButton.getAttribute(\"aria-label\");\n// const [emoji] = label.split(\",\");\n\n// const emojiSpanEl = emojiButton.querySelector(\"span\");\n\n// const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n// allEmojiStyle[emoji] = style;\n// });\n\n// return allEmojiStyle;\n// }\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param { import(\"../types/types\").EmojiMartItem } emoji\n * @return {string}\n */\nexport function getImageEmoji(emoji) {\n let shortNames = `${emoji.short_names}`;\n\n shortNames = replaceAll(shortNames, \",\", \", \");\n\n /** @type {HTMLSpanElement} */\n const emojiSpanEl =\n document.querySelector(\n `[aria-label=\"${emoji.native}, ${shortNames}\"] > span`\n ) || document.querySelector(`[aria-label=\"${emoji.id}\"] > span`);\n\n if (!emojiSpanEl) return \"\";\n\n const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n let dataEmoji = emoji.native;\n\n if (!dataEmoji && emoji.emoticons && emoji.emoticons.length > 0) {\n dataEmoji = emoji.emoticons[0];\n }\n\n return `<img style=\"${style}\" data-emoji=\"${dataEmoji}\" src=\"${TRANSPARENT_GIF}\" />`;\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllTextEmojiToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n container.innerHTML = container.innerHTML.replace(\n image.outerHTML,\n image.dataset.emoji\n );\n });\n\n return container.innerHTML;\n}\n","// @ts-check\n\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"./emoji-utils\";\n\n/**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\nexport function handleCopy(event) {\n const selectedText = window.getSelection();\n\n if (selectedText === null) {\n return\n }\n\n let container = document.createElement(\"div\");\n\n for (let i = 0, len = selectedText.rangeCount; i < len; ++i) {\n container.appendChild(selectedText.getRangeAt(i).cloneContents());\n }\n\n container = replaceEmojiToString(container);\n\n event.clipboardData.setData(\"text\", container.innerText);\n event.preventDefault();\n}\n\n/**\n *\n * @param {string} html\n */\nexport function handlePasteHtmlAtCaret(html) {\n let sel;\n let range;\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n\n if (sel === null) return\n\n if (sel.getRangeAt && sel.rangeCount) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // non-standard and not supported in all browsers (IE9, for one)\n const el = document.createElement(\"div\");\n el.innerHTML = html;\n const frag = document.createDocumentFragment();\n let node;\n let lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n}\n\n/**\n * Replace emoji img to its string value\n * @param {HTMLDivElement} container\n * @return {HTMLDivElement}\n */\nfunction replaceEmojiToString(container) {\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n image.outerHTML = image.dataset.emoji;\n });\n\n return container;\n}\n\n/**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\nexport function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = replaceAllTextEmojis(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n}\n\n/**\n * @typedef {object} HandleKeyDownOptions\n * @property {HTMLDivElement} placeholderEl\n * @property {number} maxLength\n * @property {HTMLDivElement} inputEl\n * @property {React.MutableRefObject<string>} cleanedTextRef\n * @property {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @property {boolean} cleanOnEnter\n * @property {function(): void} emitChange\n * @property {(function(string): void)=} onEnter\n * @property {(function(KeyboardEvent): void)=} onKeyDown\n * @property {(function(string): void)} updateHTML\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @typedef {Object} HandleSelectEmojiProps\n * @property {import(\"../types/types\").EmojiMartItem} emoji\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {boolean} keepOpened\n * @property {() => void} toggleShowPicker\n * @property {number=} maxLength\n */\n\n/**\n *\n * @param {HandleSelectEmojiProps} props\n */\nexport function handleSelectEmoji({\n emoji,\n textInputRef,\n keepOpened,\n toggleShowPicker,\n maxLength\n}) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n toggleShowPicker();\n }\n}\n\n/**\n *\n * @param {{text: string, html: string}} props\n * @return {number}\n */\nexport function totalCharacters({ text, html }) {\n const textCount = text.length;\n const emojisCount = (html.match(/<img/g) || []).length;\n\n return textCount + emojisCount;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Handle keyup event\n * @param {() => void} emitChange\n * @param {(event: KeyboardEvent) => void} onKeyDownMention\n * @param {React.MutableRefObject<string>} cleanedTextRef\n * @param {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @return {(event: KeyboardEvent) => void}\n */\nexport function handleKeyup(\n emitChange,\n onKeyDownMention,\n cleanedTextRef,\n textInputRef\n) {\n return event => {\n const text = replaceAllTextEmojiToString(textInputRef.current.innerHTML);\n cleanedTextRef.current = text;\n emitChange();\n onKeyDownMention(event);\n };\n}\n\n/**\n * Handle focus event\n * @param {function(FocusEvent): void} onFocus\n * @return {function(FocusEvent): void}\n */\nexport function handleFocus(onFocus) {\n return event => {\n onFocus(event);\n };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useSanitize() {\n /** @type {React.MutableRefObject<SanitizeFn[]>} */\n const sanitizeFnsRef = useRef([]);\n\n const sanitizedTextRef = useRef(\"\");\n\n /** @type {(fn: SanitizeFn) => void} */\n const addSanitizeFn = useCallback(fn => {\n sanitizeFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const sanitize = useCallback(html => {\n let result = sanitizeFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, html);\n\n result = replaceAllHtmlToString(result);\n\n sanitizedTextRef.current = result;\n\n return result;\n }, []);\n\n return { addSanitizeFn, sanitize, sanitizedTextRef };\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllHtmlToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n let text = container.innerText || \"\";\n\n // remove all ↵ for safari\n text = text.replace(/\\n/gi, \"\");\n\n return text;\n}\n","// @ts-check\n\nimport { useImperativeHandle } from \"react\";\nimport { useSanitize } from \"./use-sanitize\";\n\n/**\n * @typedef {Object} Props\n * @property {React.Ref<any>} ref\n * @property {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @property {(value: string) => void} setValue\n * @property {() => void} emitChange\n */\n\n/**\n *\n * @param {Props} props\n */\nexport function useExpose({ ref, textInputRef, setValue, emitChange }) {\n const { sanitize, sanitizedTextRef } = useSanitize();\n\n useImperativeHandle(ref, () => ({\n get value() {\n return sanitizedTextRef.current;\n },\n set value(value) {\n setValue(value);\n },\n focus: () => {\n if (textInputRef.current === null) return\n textInputRef.current.focus();\n },\n blur: () => {\n if (textInputRef.current !== null) {\n sanitize(textInputRef.current.html);\n\n }\n\n emitChange();\n }\n }));\n}\n","// @ts-check\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * useEmit\n * @param {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @param {(size: {width: number, height: number}) => void} onResize\n * @param {(text: string) => void} onChange\n */\nexport function useEmit(textInputRef, onResize, onChange) {\n /** @type {React.MutableRefObject<{width: number; height: number} | null>} */\n const currentSizeRef = useRef(null);\n const onChangeFn = useRef(onChange);\n\n const checkAndEmitResize = useCallback(() => {\n if (textInputRef.current !== null) {\n const currentSize = currentSizeRef.current;\n\n const nextSize = textInputRef.current.size;\n\n if (\n (!currentSize ||\n currentSize.width !== nextSize.width ||\n currentSize.height !== nextSize.height) &&\n typeof onResize === \"function\"\n ) {\n onResize(nextSize);\n }\n\n currentSizeRef.current = nextSize;\n }\n }, [onResize, textInputRef]);\n\n const emitChange = useCallback((sanitizedText) => {\n if (typeof onChangeFn.current === \"function\") {\n onChangeFn.current(sanitizedText);\n }\n\n if (typeof onResize === \"function\") {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, onResize]);\n\n useEffect(() => {\n if (textInputRef.current) {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, textInputRef]);\n\n return emitChange;\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useImperativeHandle, forwardRef, useRef } from \"react\";\nimport { handlePasteHtmlAtCaret } from \"./utils/input-event-utils\";\n\n/**\n * @typedef {Object} Props\n * @property {(event: React.KeyboardEvent) => void} onKeyDown\n * @property {(event: React.KeyboardEvent) => void} onKeyUp\n * @property {() => void} onFocus\n * @property {() => void} onBlur\n * @property {(sanitizedText: string) => void=} onChange\n * @property {(event: React.KeyboardEvent) => void} onArrowUp\n * @property {(event: React.KeyboardEvent) => void} onArrowDown\n * @property {(event: React.KeyboardEvent) => void} onEnter\n * @property {(event: React.ClipboardEvent) => void} onCopy\n * @property {(event: React.ClipboardEvent) => void} onPaste\n * @property {string} placeholder\n * @property {React.CSSProperties} style\n * @property {number} tabIndex\n * @property {string} className\n * @property {(html: string) => void} onChange\n */\n\n/**\n * @typedef {{\n * appendContent: (html: string) => void;\n * html: string;\n * text: string;\n * size: { width: number; height: number;};\n * focus: () => void;\n * }} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst TextInput = (\n { placeholder, style, tabIndex, className, onChange, ...props },\n ref\n) => {\n useImperativeHandle(ref, () => ({\n appendContent: html => {\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n handlePasteHtmlAtCaret(html);\n\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n if (textInputRef.current && placeholderRef.current && textInputRef.current.innerHTML.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else if (placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n if (textInputRef.current && typeof onChange === 'function') {\n onChange(textInputRef.current.innerHTML);\n }\n },\n set html(value) {\n if (textInputRef.current) {\n textInputRef.current.innerHTML = value;\n }\n \n if (placeholderRef.current) {\n if (value.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n },\n get html() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerHTML;\n },\n get text() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerText;\n },\n get size() {\n if (!textInputRef.current) {\n return {\n width: 0,\n height: 0\n }\n }\n\n return {\n width: textInputRef.current.offsetWidth,\n height: textInputRef.current.offsetHeight\n };\n },\n focus() {\n if (!textInputRef.current) return\n\n textInputRef.current.focus();\n }\n }));\n\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const placeholderRef = useRef(null);\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const textInputRef = useRef(null);\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n props.onEnter(event);\n } else if (event.key === \"ArrowUp\") {\n props.onArrowUp(event);\n } else if (event.key === \"ArrowDown\") {\n props.onArrowDown(event);\n } else {\n if (event.key.length === 1 && placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n props.onKeyDown(event);\n }\n\n /** */\n function handleClick() {\n props.onFocus();\n }\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyUp(event) {\n props.onKeyUp(event);\n\n const input = textInputRef.current;\n\n if (placeholderRef.current) {\n if (input?.innerText?.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n }\n\n return (\n <div className=\"react-input-emoji--container\" style={style}>\n <div className=\"react-input-emoji--wrapper\" onClick={handleClick}>\n <div ref={placeholderRef} className=\"react-input-emoji--placeholder\">\n {placeholder}\n </div>\n <div\n ref={textInputRef}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={tabIndex}\n contentEditable\n className={`react-input-emoji--input${className ? ` ${className}` : \"\"\n }`}\n onBlur={props.onBlur}\n onCopy={props.onCopy}\n onPaste={props.onPaste}\n data-testid=\"react-input-emoji--input\"\n />\n </div>\n </div>\n );\n};\n\nconst TextInputWithRef = forwardRef(TextInput);\n\nexport default TextInputWithRef;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","var mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\n (split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n return search.join(',');\n};\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nexport { buildSearch, compress, uncompress };","var _String = String;\nexport default _String.fromCodePoint || function stringFromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n\n if (!length) {\n return '';\n }\n\n var result = '';\n\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = codePoint % 0x400 + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport { buildSearch } from './data';\nimport stringFromCodePoint from '../polyfills/stringFromCodePoint';\nimport { uncompress } from './data';\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return \"0x\".concat(u);\n });\n return stringFromCodePoint.apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name,\n short_names = emoji.short_names,\n skin_tone = emoji.skin_tone,\n skin_variations = emoji.skin_variations,\n emoticons = emoji.emoticons,\n unified = emoji.unified,\n custom = emoji.custom,\n customCategory = emoji.customCategory,\n imageUrl = emoji.imageUrl,\n id = emoji.id || short_names[0],\n colons = \":\".concat(id, \":\");\n\n if (custom) {\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n customCategory: customCategory,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += \":skin-tone-\".concat(skin_tone, \":\");\n }\n\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n \"native\": unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(void 0, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!Object.keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = buildSearch(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (variationData) {\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (set && (variationData[\"has_img_\".concat(set)] == undefined || variationData[\"has_img_\".concat(set)]) || !set) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction getEmojiDataFromNative(nativeString, set, data) {\n if (data.compressed) {\n uncompress(data);\n }\n\n var skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];\n var skinCodes = ['1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n var skin;\n var skinCode;\n var baseNativeString = nativeString;\n skinTones.forEach(function (skinTone, skinToneIndex) {\n if (nativeString.indexOf(skinTone) > 0) {\n skin = skinToneIndex + 2;\n skinCode = skinCodes[skinToneIndex];\n }\n });\n var emojiData;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n var emojiUnified = emoji.unified;\n\n if (emoji.variations && emoji.variations.length) {\n emojiUnified = emoji.variations.shift();\n }\n\n if (skin && emoji.skin_variations && emoji.skin_variations[skinCode]) {\n emojiUnified = emoji.skin_variations[skinCode].unified;\n }\n\n if (unifiedToNative(emojiUnified) === baseNativeString) emojiData = emoji;\n }\n\n if (!emojiData) {\n return null;\n }\n\n emojiData.id = emojiData.short_names[0];\n return getSanitizedData(emojiData, skin, set, data);\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if (_typeof(value) === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} // Use requestIdleCallback() if available, else fall back to setTimeout().\n// Throttle so as not to run too frequently.\n\n\nfunction throttleIdleTask(func) {\n var doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n var running = false;\n return function throttled() {\n if (running) {\n return;\n }\n\n running = true;\n doIdleTask(function () {\n running = false;\n func();\n });\n };\n}\n\nexport { getData, getEmojiDataFromNative, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar, throttleIdleTask };","var NAMESPACE = 'emoji-mart';\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter;\nvar setter;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)] = JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n var value = window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)];\n\n if (value) {\n return JSON.parse(value);\n }\n } catch (e) {\n return;\n }\n }\n}\n\nexport default {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport { getData, getSanitizedData, intersect } from '..';\nimport { uncompress } from '../data';\nimport store from '../store';\n\nvar NimbleEmojiIndex =\n/*#__PURE__*/\nfunction () {\n function NimbleEmojiIndex(data, set) {\n _classCallCheck(this, NimbleEmojiIndex);\n\n if (data.compressed) {\n uncompress(data);\n }\n\n this.data = data || {};\n this.set = set || null;\n this.originalPool = {};\n this.index = {};\n this.emojis = {};\n this.emoticons = {};\n this.customEmojisList = [];\n this.buildIndex();\n }\n\n _createClass(NimbleEmojiIndex, [{\n key: \"buildIndex\",\n value: function buildIndex() {\n var _this = this;\n\n var _loop = function _loop(emoji) {\n var emojiData = _this.data.emojis[emoji],\n short_names = emojiData.short_names,\n emoticons = emojiData.emoticons,\n skin_variations = emojiData.skin_variations,\n id = short_names[0];\n\n if (emoticons) {\n emoticons.forEach(function (emoticon) {\n if (_this.emoticons[emoticon]) {\n return;\n }\n\n _this.emoticons[emoticon] = id;\n });\n } // If skin variations include them\n\n\n if (skin_variations) {\n _this.emojis[id] = {};\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n _this.emojis[id][skinTone] = getSanitizedData({\n id: id,\n skin: skinTone\n }, skinTone, _this.set, _this.data);\n }\n } else {\n _this.emojis[id] = getSanitizedData(id, null, _this.set, _this.data);\n }\n\n _this.originalPool[id] = emojiData;\n };\n\n for (var emoji in this.data.emojis) {\n _loop(emoji);\n }\n }\n }, {\n key: \"clearCustomEmojis\",\n value: function clearCustomEmojis(pool) {\n var _this2 = this;\n\n this.customEmojisList.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n delete pool[emojiId];\n delete _this2.emojis[emojiId];\n });\n }\n }, {\n key: \"addCustomToPool\",\n value: function addCustomToPool(custom, pool) {\n var _this3 = this;\n\n if (this.customEmojisList.length) this.clearCustomEmojis(pool);\n custom.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = getData(emoji, null, null, _this3.data);\n _this3.emojis[emojiId] = getSanitizedData(emoji, null, null, _this3.data);\n }\n });\n this.customEmojisList = custom;\n this.index = {};\n }\n }, {\n key: \"search\",\n value: function search(value) {\n var _this4 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n emojisToShowFilter = _ref.emojisToShowFilter,\n maxResults = _ref.maxResults,\n include = _ref.include,\n exclude = _ref.exclude,\n _ref$custom = _ref.custom,\n custom = _ref$custom === void 0 ? [] : _ref$custom;\n\n if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n var skinTone = store.get('skin') || 1;\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\n var results = null,\n pool = this.originalPool;\n\n if (value.length) {\n if (value == '-' || value == '-1') {\n return [this.emojis['-1'][skinTone]];\n }\n\n var values = value.toLowerCase().split(/[\\s|,|\\-|_]+/),\n allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n this.data.categories.forEach(function (category) {\n var isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n var isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n return;\n }\n\n category.emojis.forEach(function (emojiId) {\n return pool[emojiId] = _this4.data.emojis[emojiId];\n });\n });\n\n if (custom.length) {\n var customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;\n var customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values.map(function (value) {\n var aPool = pool,\n aIndex = _this4.index,\n length = 0;\n\n for (var charIndex = 0; charIndex < value.length; charIndex++) {\n var _char = value[charIndex];\n length++;\n aIndex[_char] || (aIndex[_char] = {});\n aIndex = aIndex[_char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\n aIndex.results = [];\n aIndex.pool = {};\n\n for (var id in aPool) {\n var emoji = aPool[id],\n search = emoji.search,\n sub = value.substr(0, length),\n subIndex = search.indexOf(sub);\n\n if (subIndex != -1) {\n var score = subIndex + 1;\n if (sub == id) score = 0;\n\n if (_this4.emojis[id] && _this4.emojis[id][skinTone]) {\n aIndex.results.push(_this4.emojis[id][skinTone]);\n } else {\n aIndex.results.push(_this4.emojis[id]);\n }\n\n aIndex.pool[id] = emoji;\n scores[id] = score;\n }\n }\n\n aIndex.results.sort(function (a, b) {\n var aScore = scores[a.id],\n bScore = scores[b.id];\n\n if (aScore == bScore) {\n return a.id.localeCompare(b.id);\n } else {\n return aScore - bScore;\n }\n });\n })();\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n }).filter(function (a) {\n return a;\n });\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter(function (result) {\n return emojisToShowFilter(pool[result.id]);\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n\n return results;\n }\n }]);\n\n return NimbleEmojiIndex;\n}();\n\nexport { NimbleEmojiIndex as default };","import data from '../../../data/all.json';\nimport NimbleEmojiIndex from './nimble-emoji-index';\nvar emojiIndex = new NimbleEmojiIndex(data);\nvar emojis = emojiIndex.emojis,\n emoticons = emojiIndex.emoticons;\n\nfunction search() {\n return emojiIndex.search.apply(emojiIndex, arguments);\n}\n\nexport default {\n search: search,\n emojis: emojis,\n emoticons: emoticons\n};","import store from './store';\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\nvar frequently, initialized;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = store.get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n var last = store.get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nexport default {\n add: add,\n get: get\n};","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nvar categories = {\n activity: function activity() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n }));\n },\n custom: function custom() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"g\", {\n transform: \"translate(2.000000, 1.000000)\"\n }, React.createElement(\"rect\", {\n id: \"Rectangle\",\n x: \"8\",\n y: \"0\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n })));\n },\n flags: function flags() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n }));\n },\n foods: function foods() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n }));\n },\n nature: function nature() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }), React.createElement(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n }));\n },\n objects: function objects() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }), React.createElement(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n }));\n },\n people: function people() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }), React.createElement(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n }));\n },\n places: function places() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }), React.createElement(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n }));\n },\n recent: function recent() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }), React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }));\n },\n symbols: function symbols() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n }));\n }\n};\nvar search = {\n search: function search() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n }));\n },\n \"delete\": function _delete() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n }));\n }\n};\nexport { categories, search };","import PropTypes from 'prop-types';\nvar EmojiPropTypes = {\n data: PropTypes.object.isRequired,\n onOver: PropTypes.func,\n onLeave: PropTypes.func,\n onClick: PropTypes.func,\n fallback: PropTypes.func,\n backgroundImageFn: PropTypes.func,\n \"native\": PropTypes.bool,\n forceSize: PropTypes.bool,\n tooltip: PropTypes.bool,\n useButton: PropTypes.bool,\n skin: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: PropTypes.oneOf([16, 20, 32, 64]),\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number,\n set: PropTypes.oneOf(['apple', 'google', 'twitter', 'facebook']),\n size: PropTypes.number.isRequired,\n emoji: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nvar PickerPropTypes = {\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onSkinChange: PropTypes.func,\n perLine: PropTypes.number,\n emojiSize: PropTypes.number,\n i18n: PropTypes.object,\n style: PropTypes.object,\n title: PropTypes.string,\n emoji: PropTypes.string,\n color: PropTypes.string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n \"native\": PropTypes.bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: PropTypes.func,\n showPreview: PropTypes.bool,\n showSkinTones: PropTypes.bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n useButton: EmojiPropTypes.useButton,\n theme: PropTypes.oneOf(['auto', 'light', 'dark']),\n include: PropTypes.arrayOf(PropTypes.string),\n exclude: PropTypes.arrayOf(PropTypes.string),\n recent: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n enableFrequentEmojiSort: PropTypes.bool,\n custom: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n short_names: PropTypes.arrayOf(PropTypes.string).isRequired,\n emoticons: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n imageUrl: PropTypes.string,\n spriteUrl: PropTypes.string,\n sheet_x: PropTypes.number,\n sheet_y: PropTypes.number,\n size: PropTypes.number,\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number\n })),\n skinEmoji: PropTypes.string,\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string,\n icons: PropTypes.object\n};\nexport { EmojiPropTypes, PickerPropTypes };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Anchors =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Anchors, _React$PureComponent);\n\n function Anchors(props) {\n var _this;\n\n _classCallCheck(this, Anchors);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Anchors).call(this, props));\n var defaultCategory = props.categories.filter(function (category) {\n return category.first;\n })[0];\n _this.state = {\n selected: defaultCategory.name\n };\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Anchors, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var index = e.currentTarget.getAttribute('data-index');\n var _this$props = this.props,\n categories = _this$props.categories,\n onAnchorClick = _this$props.onAnchorClick;\n onAnchorClick(categories[index], index);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n categories = _this$props2.categories,\n color = _this$props2.color,\n i18n = _this$props2.i18n,\n icons = _this$props2.icons,\n selected = this.state.selected;\n return React.createElement(\"nav\", {\n className: \"emoji-mart-anchors\",\n \"aria-label\": i18n.categorieslabel\n }, categories.map(function (category, i) {\n var id = category.id,\n name = category.name,\n anchor = category.anchor,\n isSelected = name == selected;\n\n if (anchor === false) {\n return null;\n }\n\n var iconId = id.startsWith('custom-') ? 'custom' : id;\n return React.createElement(\"button\", {\n key: id,\n \"aria-label\": i18n.categories[iconId],\n title: i18n.categories[iconId],\n \"data-index\": i,\n type: 'button',\n onClick: _this2.handleClick,\n className: \"emoji-mart-anchor \".concat(isSelected ? 'emoji-mart-anchor-selected' : ''),\n style: {\n color: isSelected ? color : null\n }\n }, React.createElement(\"div\", {\n className: \"emoji-mart-anchor-icon\"\n }, icons.categories[iconId]()), React.createElement(\"span\", {\n className: \"emoji-mart-anchor-bar\",\n style: {\n backgroundColor: color\n }\n }));\n }));\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport { Anchors as default };\nAnchors.propTypes\n/* remove-proptypes */\n= {\n categories: PropTypes.array,\n onAnchorClick: PropTypes.func,\n icons: PropTypes.object\n};\nAnchors.defaultProps = {\n categories: [],\n onAnchorClick: function onAnchorClick() {},\n icons: {}\n};","var EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n sheetColumns: 57,\n sheetRows: 57,\n \"native\": false,\n forceSize: false,\n tooltip: false,\n useButton: true,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return \"https://unpkg.com/emoji-datasource-\".concat(set, \"@\").concat(\"5.0.1\", \"/img/\").concat(set, \"/sheets-256/\").concat(sheetSize, \".png\");\n }\n};\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n theme: 'light',\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n \"native\": EmojiDefaultProps[\"native\"],\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n useButton: EmojiDefaultProps.useButton,\n autoFocus: false,\n enableFrequentEmojiSort: false,\n custom: [],\n skinEmoji: '',\n notFound: function notFound() {},\n notFoundEmoji: 'sleuth_or_spy',\n icons: {}\n};\nexport { PickerDefaultProps, EmojiDefaultProps };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar _getData = function _getData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getData(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props),\n sheet_x = _getData2.sheet_x,\n sheet_y = _getData2.sheet_y,\n multiplyX = 100 / (props.sheetColumns - 1),\n multiplyY = 100 / (props.sheetRows - 1);\n\n return \"\".concat(multiplyX * sheet_x, \"% \").concat(multiplyY * sheet_y, \"%\");\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick,\n emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n\n var onOver = props.onOver,\n emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n\n var onLeave = props.onLeave,\n emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n\n if (!data) {\n if (props.fallback) {\n return props.fallback(null, props);\n } else {\n return null;\n }\n }\n\n var unified = data.unified,\n custom = data.custom,\n short_names = data.short_names,\n imageUrl = data.imageUrl,\n style = {},\n children = props.children,\n className = 'emoji-mart-emoji',\n nativeEmoji = unified && unifiedToNative(unified),\n label = [nativeEmoji].concat(short_names).filter(Boolean).join(', '),\n title = null;\n\n if (!unified && !custom) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n }\n\n if (props.tooltip) {\n title = short_names[0];\n }\n\n if (props[\"native\"] && unified) {\n className += ' emoji-mart-emoji-native';\n style = {\n fontSize: props.size\n };\n children = nativeEmoji;\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n style.wordBreak = 'keep-all';\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block'\n };\n\n if (data.spriteUrl) {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(data.spriteUrl, \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n });\n } else {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(imageUrl, \")\"),\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n });\n }\n } else {\n var setHasEmoji = data[\"has_img_\".concat(props.set)] == undefined || data[\"has_img_\".concat(props.set)];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: \"url(\".concat(props.backgroundImageFn(props.set, props.sheetSize), \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n var Tag = {\n name: 'span',\n props: {}\n };\n\n if (props.onClick && props.useButton) {\n Tag.name = 'button';\n Tag.props = {\n type: 'button'\n };\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return \"<\".concat(Tag.name, \" style='\").concat(style, \"' aria-label='\").concat(label, \"' \").concat(title ? \"title='\".concat(title, \"'\") : '', \" class='\").concat(className, \"'>\").concat(children || '', \"</\").concat(Tag.name, \">\");\n } else {\n return React.createElement(Tag.name, _extends({\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n \"aria-label\": label,\n title: title,\n className: className\n }, Tag.props), React.createElement(\"span\", {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.propTypes\n/* remove-proptypes */\n= _objectSpread({}, EmojiPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimbleEmoji.defaultProps = EmojiDefaultProps;\nexport default NimbleEmoji;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\n\nvar NotFound =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NotFound, _React$PureComponent);\n\n function NotFound() {\n _classCallCheck(this, NotFound);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NotFound).apply(this, arguments));\n }\n\n _createClass(NotFound, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n emojiProps = _this$props.emojiProps,\n i18n = _this$props.i18n,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var component = notFound && notFound() || React.createElement(\"div\", {\n className: \"emoji-mart-no-results\"\n }, NimbleEmoji(_objectSpread({\n data: data\n }, emojiProps, {\n size: 38,\n emoji: notFoundEmoji,\n onOver: null,\n onLeave: null,\n onClick: null\n })), React.createElement(\"div\", {\n className: \"emoji-mart-no-results-label\"\n }, i18n.notfound));\n return component;\n }\n }]);\n\n return NotFound;\n}(React.PureComponent);\n\nexport { NotFound as default };\nNotFound.propTypes\n/* remove-proptypes */\n= {\n notFound: PropTypes.func.isRequired,\n emojiProps: PropTypes.object.isRequired\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport frequently from '../utils/frequently';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport NotFound from './not-found';\n\nvar Category =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Category, _React$Component);\n\n function Category(props) {\n var _this;\n\n _classCallCheck(this, Category);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Category).call(this, props));\n _this.data = props.data;\n _this.setContainerRef = _this.setContainerRef.bind(_assertThisInitialized(_this));\n _this.setLabelRef = _this.setLabelRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Category, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.margin = 0;\n this.minMargin = 0;\n this.memoizeSize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$props = this.props,\n name = _this$props.name,\n perLine = _this$props.perLine,\n _native = _this$props[\"native\"],\n hasStickyPosition = _this$props.hasStickyPosition,\n emojis = _this$props.emojis,\n emojiProps = _this$props.emojiProps,\n skin = emojiProps.skin,\n size = emojiProps.size,\n set = emojiProps.set,\n nextPerLine = nextProps.perLine,\n nextNative = nextProps[\"native\"],\n nextHasStickyPosition = nextProps.hasStickyPosition,\n nextEmojis = nextProps.emojis,\n nextEmojiProps = nextProps.emojiProps,\n nextSkin = nextEmojiProps.skin,\n nextSize = nextEmojiProps.size,\n nextSet = nextEmojiProps.set,\n shouldUpdate = false;\n\n if (name == 'Recent' && perLine != nextPerLine) {\n shouldUpdate = true;\n }\n\n if (name == 'Search') {\n shouldUpdate = !(emojis == nextEmojis);\n }\n\n if (skin != nextSkin || size != nextSize || _native != nextNative || set != nextSet || hasStickyPosition != nextHasStickyPosition) {\n shouldUpdate = true;\n }\n\n return shouldUpdate;\n }\n }, {\n key: \"memoizeSize\",\n value: function memoizeSize() {\n if (!this.container) {\n // probably this is a test environment, e.g. jest\n this.top = 0;\n this.maxMargin = 0;\n return;\n }\n\n var parent = this.container.parentElement;\n\n var _this$container$getBo = this.container.getBoundingClientRect(),\n top = _this$container$getBo.top,\n height = _this$container$getBo.height;\n\n var _parent$getBoundingCl = parent.getBoundingClientRect(),\n parentTop = _parent$getBoundingCl.top;\n\n var _this$label$getBoundi = this.label.getBoundingClientRect(),\n labelHeight = _this$label$getBoundi.height;\n\n this.top = top - parentTop + parent.scrollTop;\n\n if (height == 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll(scrollTop) {\n var margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n if (margin == this.margin) return;\n\n if (!this.props.hasStickyPosition) {\n this.label.style.top = \"\".concat(margin, \"px\");\n }\n\n this.margin = margin;\n return true;\n }\n }, {\n key: \"getEmojis\",\n value: function getEmojis() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n name = _this$props2.name,\n emojis = _this$props2.emojis,\n recent = _this$props2.recent,\n perLine = _this$props2.perLine;\n\n if (name == 'Recent') {\n var custom = this.props.custom;\n var frequentlyUsed = recent || frequently.get(perLine);\n\n if (frequentlyUsed.length) {\n emojis = frequentlyUsed.map(function (id) {\n var emoji = custom.filter(function (e) {\n return e.id === id;\n })[0];\n\n if (emoji) {\n return emoji;\n }\n\n return id;\n }).filter(function (id) {\n return !!getData(id, null, null, _this2.data);\n });\n }\n\n if (emojis.length === 0 && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (emojis) {\n emojis = emojis.slice(0);\n }\n\n return emojis;\n }\n }, {\n key: \"updateDisplay\",\n value: function updateDisplay(display) {\n var emojis = this.getEmojis();\n\n if (!emojis || !this.container) {\n return;\n }\n\n this.container.style.display = display;\n }\n }, {\n key: \"setContainerRef\",\n value: function setContainerRef(c) {\n this.container = c;\n }\n }, {\n key: \"setLabelRef\",\n value: function setLabelRef(c) {\n this.label = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n name = _this$props3.name,\n hasStickyPosition = _this$props3.hasStickyPosition,\n emojiProps = _this$props3.emojiProps,\n i18n = _this$props3.i18n,\n notFound = _this$props3.notFound,\n notFoundEmoji = _this$props3.notFoundEmoji,\n emojis = this.getEmojis(),\n labelStyles = {},\n labelSpanStyles = {},\n containerStyles = {};\n\n if (!emojis) {\n containerStyles = {\n display: 'none'\n };\n }\n\n if (!hasStickyPosition) {\n labelStyles = {\n height: 28\n };\n labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n var label = i18n.categories[id] || name;\n return React.createElement(\"section\", {\n ref: this.setContainerRef,\n className: \"emoji-mart-category\",\n \"aria-label\": label,\n style: containerStyles\n }, React.createElement(\"div\", {\n style: labelStyles,\n \"data-name\": name,\n className: \"emoji-mart-category-label\"\n }, React.createElement(\"span\", {\n style: labelSpanStyles,\n ref: this.setLabelRef,\n \"aria-hidden\": true\n /* already labeled by the section aria-label */\n\n }, label)), React.createElement(\"ul\", {\n className: \"emoji-mart-category-list\"\n }, emojis && emojis.map(function (emoji) {\n return React.createElement(\"li\", {\n key: emoji.short_names && emoji.short_names.join('_') || emoji\n }, NimbleEmoji(_objectSpread({\n emoji: emoji,\n data: _this3.data\n }, emojiProps)));\n })), emojis && !emojis.length && React.createElement(NotFound, {\n i18n: i18n,\n notFound: notFound,\n notFoundEmoji: notFoundEmoji,\n data: this.data,\n emojiProps: emojiProps\n }));\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport { Category as default };\nCategory.propTypes\n/* remove-proptypes */\n= {\n emojis: PropTypes.array,\n hasStickyPosition: PropTypes.bool,\n name: PropTypes.string.isRequired,\n \"native\": PropTypes.bool.isRequired,\n perLine: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n recent: PropTypes.arrayOf(PropTypes.string),\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string.isRequired\n};\nCategory.defaultProps = {\n emojis: [],\n hasStickyPosition: true\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Skins =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Skins, _React$PureComponent);\n\n function Skins(props) {\n var _this;\n\n _classCallCheck(this, Skins);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Skins).call(this, props));\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n _createClass(Skins, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport { Skins as default };\nSkins.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired\n};\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport Skins from './skins';\n\nvar SkinsEmoji =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsEmoji, _Skins);\n\n function SkinsEmoji(props) {\n var _this;\n\n _classCallCheck(this, SkinsEmoji);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsEmoji).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsEmoji, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n emojiProps = _this$props.emojiProps,\n data = _this$props.data,\n skinEmoji = _this$props.skinEmoji,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n skinToneNodes.push(React.createElement(\"span\", {\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch custom\".concat(selected ? ' selected' : '')\n }, React.createElement(\"span\", {\n onClick: this.handleClick,\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin-tone-\".concat(skinTone)\n }, NimbleEmoji({\n emoji: skinEmoji,\n data: data,\n skin: skinTone,\n backgroundImageFn: emojiProps.backgroundImageFn,\n \"native\": emojiProps[\"native\"],\n set: emojiProps.set,\n sheetSize: emojiProps.sheetSize,\n size: 23\n }))));\n }\n\n return React.createElement(\"div\", {\n className: \"emoji-mart-skin-swatches custom\".concat(opened ? ' opened' : '')\n }, React.createElement(\"div\", {\n className: \"emoji-mart-skin-text\".concat(opened ? ' opened' : '')\n }, i18n.skintext), skinToneNodes);\n }\n }]);\n\n return SkinsEmoji;\n}(Skins);\n\nexport { SkinsEmoji as default };\nSkinsEmoji.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinTone: PropTypes.number,\n skinEmoji: PropTypes.string.isRequired,\n i18n: PropTypes.object\n};\nSkinsEmoji.defaultProps = {\n onChange: function onChange() {},\n skinTone: null\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Skins from './skins';\n\nvar SkinsDot =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsDot, _Skins);\n\n function SkinsDot(props) {\n var _this;\n\n _classCallCheck(this, SkinsDot);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsDot).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsDot, [{\n key: \"handleKeyDown\",\n value: function handleKeyDown(event) {\n // if either enter or space is pressed, then execute\n if (event.keyCode === 13 || event.keyCode === 32) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n var visible = opened || selected;\n skinToneNodes.push(React.createElement(\"span\", _extends({\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch\".concat(selected ? ' selected' : ''),\n \"aria-label\": i18n.skintones[skinTone],\n \"aria-hidden\": !visible\n }, opened ? {\n role: 'menuitem'\n } : {}), React.createElement(\"span\", _extends({\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n role: \"button\"\n }, selected ? {\n 'aria-haspopup': true,\n 'aria-expanded': !!opened\n } : {}, opened ? {\n 'aria-pressed': !!selected\n } : {}, {\n tabIndex: visible ? '0' : '',\n \"aria-label\": i18n.skintones[skinTone],\n title: i18n.skintones[skinTone],\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin emoji-mart-skin-tone-\".concat(skinTone)\n }))));\n }\n\n return React.createElement(\"section\", {\n className: \"emoji-mart-skin-swatches\".concat(opened ? ' opened' : ''),\n \"aria-label\": i18n.skintext\n }, React.createElement(\"div\", opened ? {\n role: 'menubar'\n } : {}, skinToneNodes));\n }\n }]);\n\n return SkinsDot;\n}(Skins);\n\nexport { SkinsDot as default };\nSkinsDot.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n i18n: PropTypes.object\n};\nSkinsDot.defaultProps = {\n onChange: function onChange() {}\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport SkinsEmoji from './skins-emoji';\nimport SkinsDot from './skins-dot';\n\nvar Preview =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Preview, _React$PureComponent);\n\n function Preview(props) {\n var _this;\n\n _classCallCheck(this, Preview);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Preview).call(this, props));\n _this.data = props.data;\n _this.state = {\n emoji: null\n };\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"render\",\n value: function render() {\n var emoji = this.state.emoji,\n _this$props = this.props,\n emojiProps = _this$props.emojiProps,\n skinsProps = _this$props.skinsProps,\n showSkinTones = _this$props.showSkinTones,\n title = _this$props.title,\n idleEmoji = _this$props.emoji,\n i18n = _this$props.i18n,\n showPreview = _this$props.showPreview;\n\n if (emoji && showPreview) {\n var emojiData = getData(emoji, null, null, this.data),\n _emojiData$emoticons = emojiData.emoticons,\n emoticons = _emojiData$emoticons === void 0 ? [] : _emojiData$emoticons,\n knownEmoticons = [],\n listedEmoticons = [];\n emoticons.forEach(function (emoticon) {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, NimbleEmoji(_objectSpread({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-name\"\n }, emoji.name), React.createElement(\"div\", {\n className: \"emoji-mart-preview-shortnames\"\n }, emojiData.short_names.map(function (short_name) {\n return React.createElement(\"span\", {\n key: short_name,\n className: \"emoji-mart-preview-shortname\"\n }, \":\", short_name, \":\");\n })), React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoticons\"\n }, listedEmoticons.map(function (emoticon) {\n return React.createElement(\"span\", {\n key: emoticon,\n className: \"emoji-mart-preview-emoticon\"\n }, emoticon);\n }))));\n } else {\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, idleEmoji && idleEmoji.length && NimbleEmoji(_objectSpread({\n emoji: idleEmoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"span\", {\n className: \"emoji-mart-title-label\"\n }, title)), showSkinTones && React.createElement(\"div\", {\n className: \"emoji-mart-preview-skins\".concat(skinsProps.skinEmoji ? ' custom' : '')\n }, skinsProps.skinEmoji ? React.createElement(SkinsEmoji, {\n skin: skinsProps.skin,\n emojiProps: emojiProps,\n data: this.data,\n skinEmoji: skinsProps.skinEmoji,\n i18n: i18n,\n onChange: skinsProps.onChange\n }) : React.createElement(SkinsDot, {\n skin: skinsProps.skin,\n i18n: i18n,\n onChange: skinsProps.onChange\n })));\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport { Preview as default };\nPreview.propTypes\n/* remove-proptypes */\n= {\n showSkinTones: PropTypes.bool,\n title: PropTypes.string.isRequired,\n emoji: PropTypes.string.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinsProps: PropTypes.object.isRequired\n};\nPreview.defaultProps = {\n showSkinTones: true,\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { search as icons } from '../svgs';\nimport NimbleEmojiIndex from '../utils/emoji-index/nimble-emoji-index';\nimport { throttleIdleTask } from '../utils/index';\nvar id = 0;\n\nvar Search =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Search, _React$PureComponent);\n\n function Search(props) {\n var _this;\n\n _classCallCheck(this, Search);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Search).call(this, props));\n _this.state = {\n icon: icons.search,\n isSearching: false,\n id: ++id\n };\n _this.data = props.data;\n _this.emojiIndex = new NimbleEmojiIndex(_this.data);\n _this.setRef = _this.setRef.bind(_assertThisInitialized(_this));\n _this.clear = _this.clear.bind(_assertThisInitialized(_this));\n _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this)); // throttle keyboard input so that typing isn't delayed\n\n _this.handleChange = throttleIdleTask(_this.handleChange.bind(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(Search, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // in some cases (e.g. preact) the input may already be pre-populated\n // this.input is undefined in Jest tests\n if (this.input && this.input.value) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"search\",\n value: function search(value) {\n if (value == '') this.setState({\n icon: icons.search,\n isSearching: false\n });else this.setState({\n icon: icons[\"delete\"],\n isSearching: true\n });\n this.props.onSearch(this.emojiIndex.search(value, {\n emojisToShowFilter: this.props.emojisToShowFilter,\n maxResults: this.props.maxResults,\n include: this.props.include,\n exclude: this.props.exclude,\n custom: this.props.custom\n }));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.input.value == '') return;\n this.input.value = '';\n this.input.focus();\n this.search('');\n }\n }, {\n key: \"handleChange\",\n value: function handleChange() {\n if (this.input) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(e) {\n if (e.keyCode === 13) {\n this.clear();\n }\n }\n }, {\n key: \"setRef\",\n value: function setRef(c) {\n this.input = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n i18n = _this$props.i18n,\n autoFocus = _this$props.autoFocus;\n var _this$state = this.state,\n icon = _this$state.icon,\n isSearching = _this$state.isSearching,\n id = _this$state.id;\n var inputId = \"emoji-mart-search-\".concat(id);\n return React.createElement(\"section\", {\n className: \"emoji-mart-search\",\n \"aria-label\": i18n.search\n }, React.createElement(\"input\", {\n id: inputId,\n ref: this.setRef,\n type: \"search\",\n onChange: this.handleChange,\n placeholder: i18n.search,\n autoFocus: autoFocus\n }), React.createElement(\"label\", {\n className: \"emoji-mart-sr-only\",\n htmlFor: inputId\n }, i18n.search), React.createElement(\"button\", {\n className: \"emoji-mart-search-icon\",\n onClick: this.clear,\n onKeyUp: this.handleKeyUp,\n \"aria-label\": i18n.clear,\n disabled: !isSearching\n }, icon()));\n }\n }]);\n\n return Search;\n}(React.PureComponent);\n\nexport { Search as default };\nSearch.propTypes\n/* remove-proptypes */\n= {\n onSearch: PropTypes.func,\n maxResults: PropTypes.number,\n emojisToShowFilter: PropTypes.func,\n autoFocus: PropTypes.bool\n};\nSearch.defaultProps = {\n onSearch: function onSearch() {},\n maxResults: 75,\n emojisToShowFilter: null,\n autoFocus: false\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as icons from '../../svgs';\nimport store from '../../utils/store';\nimport frequently from '../../utils/frequently';\nimport { deepMerge, measureScrollbar, getSanitizedData } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport Anchors from '../anchors';\nimport Category from '../category';\nimport Preview from '../preview';\nimport Search from '../search';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\nvar I18N = {\n search: 'Search',\n clear: 'Clear',\n // Accessible label on \"clear\" button\n notfound: 'No Emoji Found',\n skintext: 'Choose your default skin tone',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom'\n },\n categorieslabel: 'Emoji categories',\n // Accessible title for the list of categories\n skintones: {\n 1: 'Default Skin Tone',\n 2: 'Light Skin Tone',\n 3: 'Medium-Light Skin Tone',\n 4: 'Medium Skin Tone',\n 5: 'Medium-Dark Skin Tone',\n 6: 'Dark Skin Tone'\n }\n};\n\nvar NimblePicker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NimblePicker, _React$PureComponent);\n\n function NimblePicker(props) {\n var _this;\n\n _classCallCheck(this, NimblePicker);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NimblePicker).call(this, props));\n _this.CUSTOM = [];\n _this.RECENT_CATEGORY = {\n id: 'recent',\n name: 'Recent',\n emojis: null\n };\n _this.SEARCH_CATEGORY = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false\n };\n\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n _this.data = props.data;\n _this.i18n = deepMerge(I18N, props.i18n);\n _this.icons = deepMerge(icons, props.icons);\n _this.state = {\n firstRender: true\n };\n _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n var customCategories = {};\n var customCategoriesCreated = 0;\n props.custom.forEach(function (emoji) {\n if (!customCategories[emoji.customCategory]) {\n customCategories[emoji.customCategory] = {\n id: emoji.customCategory ? \"custom-\".concat(emoji.customCategory) : 'custom',\n name: emoji.customCategory || 'Custom',\n emojis: [],\n anchor: customCategoriesCreated === 0\n };\n customCategoriesCreated++;\n }\n\n var category = customCategories[emoji.customCategory];\n\n var customEmoji = _objectSpread({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n\n category.emojis.push(customEmoji);\n\n _this.CUSTOM.push(customEmoji);\n });\n allCategories = allCategories.concat(Object.keys(customCategories).map(function (key) {\n return customCategories[key];\n }));\n }\n\n _this.hideRecent = true;\n\n if (props.include != undefined) {\n allCategories.sort(function (a, b) {\n if (props.include.indexOf(a.id) > props.include.indexOf(b.id)) {\n return 1;\n }\n\n return -1;\n });\n }\n\n for (var categoryIndex = 0; categoryIndex < allCategories.length; categoryIndex++) {\n var category = allCategories[categoryIndex];\n var isIncluded = props.include && props.include.length ? props.include.indexOf(category.id) > -1 : true;\n var isExcluded = props.exclude && props.exclude.length ? props.exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n\n if (props.emojisToShowFilter(_this.data.emojis[emoji] || emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n var newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id\n };\n\n _this.categories.push(newCategory);\n }\n } else {\n _this.categories.push(category);\n }\n }\n\n var includeRecent = props.include && props.include.length ? props.include.indexOf(_this.RECENT_CATEGORY.id) > -1 : true;\n var excludeRecent = props.exclude && props.exclude.length ? props.exclude.indexOf(_this.RECENT_CATEGORY.id) > -1 : false;\n\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n\n _this.categories.unshift(_this.RECENT_CATEGORY);\n }\n\n if (_this.categories[0]) {\n _this.categories[0].first = true;\n }\n\n _this.categories.unshift(_this.SEARCH_CATEGORY);\n\n _this.setAnchorsRef = _this.setAnchorsRef.bind(_assertThisInitialized(_this));\n _this.handleAnchorClick = _this.handleAnchorClick.bind(_assertThisInitialized(_this));\n _this.setSearchRef = _this.setSearchRef.bind(_assertThisInitialized(_this));\n _this.handleSearch = _this.handleSearch.bind(_assertThisInitialized(_this));\n _this.setScrollRef = _this.setScrollRef.bind(_assertThisInitialized(_this));\n _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));\n _this.handleScrollPaint = _this.handleScrollPaint.bind(_assertThisInitialized(_this));\n _this.handleEmojiOver = _this.handleEmojiOver.bind(_assertThisInitialized(_this));\n _this.handleEmojiLeave = _this.handleEmojiLeave.bind(_assertThisInitialized(_this));\n _this.handleEmojiClick = _this.handleEmojiClick.bind(_assertThisInitialized(_this));\n _this.handleEmojiSelect = _this.handleEmojiSelect.bind(_assertThisInitialized(_this));\n _this.setPreviewRef = _this.setPreviewRef.bind(_assertThisInitialized(_this));\n _this.handleSkinChange = _this.handleSkinChange.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.handleDarkMatchMediaChange = _this.handleDarkMatchMediaChange.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NimblePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.state.firstRender) {\n this.testStickyPosition();\n this.firstRenderTimeout = setTimeout(function () {\n _this2.setState({\n firstRender: false\n });\n }, 60);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateCategoriesSize();\n this.handleScroll();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.SEARCH_CATEGORY.emojis = null;\n clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n\n if (this.darkMatchMedia) {\n this.darkMatchMedia.removeListener(this.handleDarkMatchMediaChange);\n }\n }\n }, {\n key: \"testStickyPosition\",\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = \"\".concat(prefix, \"sticky\");\n });\n this.hasStickyPosition = !!stickyTestElement.style.position.length;\n }\n }, {\n key: \"getPreferredTheme\",\n value: function getPreferredTheme() {\n if (this.props.theme != 'auto') return this.props.theme;\n if (this.state.theme) return this.state.theme;\n if (typeof matchMedia !== 'function') return PickerDefaultProps.theme;\n\n if (!this.darkMatchMedia) {\n this.darkMatchMedia = matchMedia('(prefers-color-scheme: dark)');\n this.darkMatchMedia.addListener(this.handleDarkMatchMediaChange);\n }\n\n if (this.darkMatchMedia.media.match(/^not/)) return PickerDefaultProps.theme;\n return this.darkMatchMedia.matches ? 'dark' : 'light';\n }\n }, {\n key: \"handleDarkMatchMediaChange\",\n value: function handleDarkMatchMediaChange() {\n this.setState({\n theme: this.darkMatchMedia.matches ? 'dark' : 'light'\n });\n }\n }, {\n key: \"handleEmojiOver\",\n value: function handleEmojiOver(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n } // Use Array.prototype.find() when it is more widely supported.\n\n\n var emojiData = this.CUSTOM.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({\n emoji: emoji\n });\n clearTimeout(this.leaveTimeout);\n }\n }, {\n key: \"handleEmojiLeave\",\n value: function handleEmojiLeave(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n this.leaveTimeout = setTimeout(function () {\n preview.setState({\n emoji: null\n });\n }, 16);\n }\n }, {\n key: \"handleEmojiClick\",\n value: function handleEmojiClick(emoji, e) {\n this.props.onClick(emoji, e);\n this.handleEmojiSelect(emoji);\n }\n }, {\n key: \"handleEmojiSelect\",\n value: function handleEmojiSelect(emoji) {\n var _this3 = this;\n\n this.props.onSelect(emoji);\n if (!this.hideRecent && !this.props.recent) frequently.add(emoji);\n var component = this.categoryRefs['category-1'];\n\n if (component) {\n var maxMargin = component.maxMargin;\n\n if (this.props.enableFrequentEmojiSort) {\n component.forceUpdate();\n }\n\n requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n\n _this3.handleScrollPaint();\n\n if (_this3.SEARCH_CATEGORY.emojis) {\n component.updateDisplay('none');\n }\n });\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll() {\n if (!this.waitingForPaint) {\n this.waitingForPaint = true;\n requestAnimationFrame(this.handleScrollPaint);\n }\n }\n }, {\n key: \"handleScrollPaint\",\n value: function handleScrollPaint() {\n this.waitingForPaint = false;\n\n if (!this.scroll) {\n return;\n }\n\n var activeCategory = null;\n\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n var target = this.scroll,\n scrollTop = target.scrollTop,\n scrollingDown = scrollTop > (this.scrollTop || 0),\n minTop = 0;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var ii = scrollingDown ? this.categories.length - 1 - i : i,\n category = this.categories[ii],\n component = this.categoryRefs[\"category-\".concat(ii)];\n\n if (component) {\n var active = component.handleScroll(scrollTop);\n\n if (!minTop || component.top < minTop) {\n if (component.top > 0) {\n minTop = component.top;\n }\n }\n\n if (active && !activeCategory) {\n activeCategory = category;\n }\n }\n }\n\n if (scrollTop < minTop) {\n activeCategory = this.categories.filter(function (category) {\n return !(category.anchor === false);\n })[0];\n } else if (scrollTop + this.clientHeight >= this.scrollHeight) {\n activeCategory = this.categories[this.categories.length - 1];\n }\n }\n\n if (activeCategory) {\n var anchors = this.anchors,\n _activeCategory = activeCategory,\n categoryName = _activeCategory.name;\n\n if (anchors.state.selected != categoryName) {\n anchors.setState({\n selected: categoryName\n });\n }\n }\n\n this.scrollTop = scrollTop;\n }\n }, {\n key: \"handleSearch\",\n value: function handleSearch(emojis) {\n this.SEARCH_CATEGORY.emojis = emojis;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n\n if (component && component.props.name != 'Search') {\n var display = emojis ? 'none' : 'inherit';\n component.updateDisplay(display);\n }\n }\n\n this.forceUpdate();\n\n if (this.scroll) {\n this.scroll.scrollTop = 0;\n }\n\n this.handleScroll();\n }\n }, {\n key: \"handleAnchorClick\",\n value: function handleAnchorClick(category, i) {\n var component = this.categoryRefs[\"category-\".concat(i)],\n scroll = this.scroll,\n anchors = this.anchors,\n scrollToComponent = null;\n\n scrollToComponent = function scrollToComponent() {\n if (component) {\n var top = component.top;\n\n if (category.first) {\n top = 0;\n } else {\n top += 1;\n }\n\n scroll.scrollTop = top;\n }\n };\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.search.clear();\n requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: \"handleSkinChange\",\n value: function handleSkinChange(skin) {\n var newState = {\n skin: skin\n },\n onSkinChange = this.props.onSkinChange;\n this.setState(newState);\n store.update(newState);\n onSkinChange(skin);\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown(e) {\n var handled = false;\n\n switch (e.keyCode) {\n case 13:\n var emoji;\n\n if (this.SEARCH_CATEGORY.emojis && this.SEARCH_CATEGORY.emojis.length && (emoji = getSanitizedData(this.SEARCH_CATEGORY.emojis[0], this.state.skin, this.props.set, this.props.data))) {\n this.handleEmojiSelect(emoji);\n handled = true;\n }\n\n break;\n }\n\n if (handled) {\n e.preventDefault();\n }\n }\n }, {\n key: \"updateCategoriesSize\",\n value: function updateCategoriesSize() {\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n if (component) component.memoizeSize();\n }\n\n if (this.scroll) {\n var target = this.scroll;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n }\n }\n }, {\n key: \"getCategories\",\n value: function getCategories() {\n return this.state.firstRender ? this.categories.slice(0, 3) : this.categories;\n }\n }, {\n key: \"setAnchorsRef\",\n value: function setAnchorsRef(c) {\n this.anchors = c;\n }\n }, {\n key: \"setSearchRef\",\n value: function setSearchRef(c) {\n this.search = c;\n }\n }, {\n key: \"setPreviewRef\",\n value: function setPreviewRef(c) {\n this.preview = c;\n }\n }, {\n key: \"setScrollRef\",\n value: function setScrollRef(c) {\n this.scroll = c;\n }\n }, {\n key: \"setCategoryRef\",\n value: function setCategoryRef(name, c) {\n if (!this.categoryRefs) {\n this.categoryRefs = {};\n }\n\n this.categoryRefs[name] = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$props = this.props,\n perLine = _this$props.perLine,\n emojiSize = _this$props.emojiSize,\n set = _this$props.set,\n sheetSize = _this$props.sheetSize,\n sheetColumns = _this$props.sheetColumns,\n sheetRows = _this$props.sheetRows,\n style = _this$props.style,\n title = _this$props.title,\n emoji = _this$props.emoji,\n color = _this$props.color,\n _native = _this$props[\"native\"],\n backgroundImageFn = _this$props.backgroundImageFn,\n emojisToShowFilter = _this$props.emojisToShowFilter,\n showPreview = _this$props.showPreview,\n showSkinTones = _this$props.showSkinTones,\n emojiTooltip = _this$props.emojiTooltip,\n useButton = _this$props.useButton,\n include = _this$props.include,\n exclude = _this$props.exclude,\n recent = _this$props.recent,\n autoFocus = _this$props.autoFocus,\n skinEmoji = _this$props.skinEmoji,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var width = perLine * (emojiSize + 12) + 12 + 2 + measureScrollbar();\n var theme = this.getPreferredTheme();\n var skin = this.props.skin || this.state.skin || store.get('skin') || this.props.defaultSkin;\n return React.createElement(\"section\", {\n style: _objectSpread({\n width: width\n }, style),\n className: \"emoji-mart emoji-mart-\".concat(theme),\n \"aria-label\": title,\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Anchors, {\n ref: this.setAnchorsRef,\n data: this.data,\n i18n: this.i18n,\n color: color,\n categories: this.categories,\n onAnchorClick: this.handleAnchorClick,\n icons: this.icons\n })), React.createElement(Search, {\n ref: this.setSearchRef,\n onSearch: this.handleSearch,\n data: this.data,\n i18n: this.i18n,\n emojisToShowFilter: emojisToShowFilter,\n include: include,\n exclude: exclude,\n custom: this.CUSTOM,\n autoFocus: autoFocus\n }), React.createElement(\"div\", {\n ref: this.setScrollRef,\n className: \"emoji-mart-scroll\",\n onScroll: this.handleScroll\n }, this.getCategories().map(function (category, i) {\n return React.createElement(Category, {\n ref: _this4.setCategoryRef.bind(_this4, \"category-\".concat(i)),\n key: category.name,\n id: category.id,\n name: category.name,\n emojis: category.emojis,\n perLine: perLine,\n \"native\": _native,\n hasStickyPosition: _this4.hasStickyPosition,\n data: _this4.data,\n i18n: _this4.i18n,\n recent: category.id == _this4.RECENT_CATEGORY.id ? recent : undefined,\n custom: category.id == _this4.RECENT_CATEGORY.id ? _this4.CUSTOM : undefined,\n emojiProps: {\n \"native\": _native,\n skin: skin,\n size: emojiSize,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n forceSize: _native,\n tooltip: emojiTooltip,\n backgroundImageFn: backgroundImageFn,\n useButton: useButton,\n onOver: _this4.handleEmojiOver,\n onLeave: _this4.handleEmojiLeave,\n onClick: _this4.handleEmojiClick\n },\n notFound: notFound,\n notFoundEmoji: notFoundEmoji\n });\n })), (showPreview || showSkinTones) && React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Preview, {\n ref: this.setPreviewRef,\n data: this.data,\n title: title,\n emoji: emoji,\n showSkinTones: showSkinTones,\n showPreview: showPreview,\n emojiProps: {\n \"native\": _native,\n size: 38,\n skin: skin,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n backgroundImageFn: backgroundImageFn\n },\n skinsProps: {\n skin: skin,\n onChange: this.handleSkinChange,\n skinEmoji: skinEmoji\n },\n i18n: this.i18n\n })));\n }\n }]);\n\n return NimblePicker;\n}(React.PureComponent);\n\nexport { NimblePicker as default };\nNimblePicker.propTypes\n/* remove-proptypes */\n= _objectSpread({}, PickerPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimblePicker.defaultProps = _objectSpread({}, PickerDefaultProps);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\n\nvar Picker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Picker, _React$PureComponent);\n\n function Picker() {\n _classCallCheck(this, Picker);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Picker).apply(this, arguments));\n }\n\n _createClass(Picker, [{\n key: \"render\",\n value: function render() {\n return React.createElement(NimblePicker, _extends({}, this.props, this.state));\n }\n }]);\n\n return Picker;\n}(React.PureComponent);\n\nexport { Picker as default };\nPicker.propTypes\n/* remove-proptypes */\n= PickerPropTypes;\nPicker.defaultProps = _objectSpread({}, PickerDefaultProps, {\n data: data\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar Emoji = function Emoji(props) {\n for (var k in Emoji.defaultProps) {\n if (props[k] == undefined && Emoji.defaultProps[k] != undefined) {\n props[k] = Emoji.defaultProps[k];\n }\n }\n\n return NimbleEmoji(_objectSpread({}, props));\n};\n\nEmoji.propTypes\n/* remove-proptypes */\n= EmojiPropTypes;\nEmoji.defaultProps = _objectSpread({}, EmojiDefaultProps, {\n data: data\n});\nexport default Emoji;","// vendors\nimport React, { memo, useMemo } from \"react\";\nimport { Picker } from \"emoji-mart\";\nimport t from \"prop-types\";\nimport \"emoji-mart/css/emoji-mart.css\";\n\n/**\n * @typedef {object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {function(import(\"../types/types\").EmojiMartItem): void} onSelectEmoji\n * @property {boolean} disableRecent\n * @property {object[]} customEmojis\n */\n\n/**\n * Emoji Picker Component\n * @param {Props} props\n * @return {React.FC}\n */\nfunction EmojiPicker(props) {\n const {\n theme,\n onSelectEmoji,\n disableRecent,\n customEmojis\n } = props;\n\n const excludePicker = useMemo(() => {\n /** @type import(\"emoji-mart\").CategoryName[] */\n const exclude = [];\n\n if (disableRecent) {\n exclude.push(\"recent\");\n }\n\n return exclude;\n }, [disableRecent]);\n\n return (\n <Picker\n theme={theme}\n set=\"apple\"\n showPreview={false}\n showSkinTones={false}\n onSelect={onSelectEmoji}\n exclude={excludePicker}\n custom={customEmojis}\n />\n );\n}\n\nEmojiPicker.propTypes = {\n theme: t.oneOf(['light', 'dark', 'auto']),\n onSelectEmoji: t.func,\n disableRecent: t.bool,\n customEmojis: t.array\n};\n\nexport default memo(EmojiPicker);\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useState } from \"react\";\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"../utils/emoji-utils\";\n\nimport EmojiPicker from \"./emoji-picker\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {boolean} keepOpened\n * @property {boolean} disableRecent\n * @property {object[]=} customEmojis\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n * @property {(fn: PolluteFn) => void} addPolluteFn\n * @property {(html: string) => void} appendContent\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst EmojiPickerWrapper = (props) => {\n const {\n theme,\n keepOpened,\n disableRecent,\n customEmojis,\n addSanitizeFn,\n addPolluteFn,\n appendContent,\n } = props;\n\n const [showPicker, setShowPicker] = useState(false);\n\n useEffect(() => {\n addSanitizeFn(replaceAllTextEmojiToString);\n }, [addSanitizeFn]);\n\n useEffect(() => {\n addPolluteFn(replaceAllTextEmojis);\n }, [addPolluteFn]);\n\n useEffect(() => {\n /**\n *\n * @param {MouseEvent} event\n */\n function checkClickOutside(event) {\n /** @type {HTMLElement} */\n // @ts-ignore\n const element = event.target;\n\n if (\n element.classList.contains(\"react-input-emoji--button\") ||\n element.classList.contains(\"react-input-emoji--button--icon\")\n ) {\n return;\n }\n\n setShowPicker(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n /**\n *\n * @param {React.MouseEvent} event\n */\n function toggleShowPicker(event) {\n event.stopPropagation();\n event.preventDefault();\n\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {import(\"../types/types\").EmojiMartItem} emoji\n */\n function handleSelectEmoji(emoji) {\n appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n }\n\n return (\n <>\n <div className=\"react-emoji-picker--container\">\n {showPicker && (\n <div\n className=\"react-emoji-picker--wrapper\"\n onClick={evt => evt.stopPropagation()}\n >\n <div className=\"react-emoji-picker\">\n <EmojiPicker\n theme={theme}\n onSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n </div>\n </div>\n )}\n </div>\n <button\n type=\"button\"\n className={`react-input-emoji--button${showPicker ? \" react-input-emoji--button__show\" : \"\"\n }`}\n onClick={toggleShowPicker}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n className=\"react-input-emoji--button--icon\"\n >\n {/* eslint-disable-next-line max-len */}\n <path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\" />\n {/* eslint-disable-next-line max-len */}\n <path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\" />\n </svg>\n </button>\n </>\n );\n};\n\nexport default EmojiPickerWrapper;\n","// @ts-check\n\n/**\n *\n * @return {string | null}\n */\nexport function getTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return null;\n\n const text = range.text.substring(range.begin, range.end);\n\n return text || null;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function deleteTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return;\n\n // @ts-ignore\n range.element.deleteData(range.begin, range.end - range.begin);\n}\n\n/**\n *\n * @return {{begin: number, end: number, text: string, element: Node} | null}\n */\nfunction getRangeFromAtToCaret() {\n const elementWithFocus = getElementWithFocus();\n\n if (!elementWithFocus) {\n return null;\n }\n\n const { element, caretOffset } = elementWithFocus;\n const text = element.textContent;\n const lastAt = text.lastIndexOf(\"@\");\n\n if (\n lastAt === -1 ||\n lastAt >= caretOffset ||\n (lastAt !== 0 && text[lastAt - 1] !== \" \")\n ) {\n return null;\n }\n\n return { begin: lastAt, end: caretOffset, text, element };\n}\n\n/**\n *\n * @return {{element: Node, caretOffset: number}}\n */\nexport function getElementWithFocus() {\n const element = getSelectionStart();\n\n if (element === null) {\n return null;\n }\n\n let caretOffset = 0;\n if (typeof window.getSelection != \"undefined\") {\n const range = window.getSelection().getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n caretOffset = preCaretRange.toString().length;\n } else if (\n // @ts-ignore\n typeof document.selection != \"undefined\" &&\n // @ts-ignore\n document.selection.type != \"Control\"\n ) {\n // @ts-ignore\n const textRange = document.selection.createRange();\n // @ts-ignore\n const preCaretTextRange = document.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n\n return { element, caretOffset };\n}\n\n/**\n *\n * @return {Node | null}\n */\nfunction getSelectionStart() {\n const node = document.getSelection().anchorNode;\n return node?.nodeType == 3 ? node : null;\n}\n","// @ts-check\nimport { useCallback, useState } from \"react\";\nimport {\n deleteTextFromAtToCaret,\n getElementWithFocus,\n getTextFromAtToCaret\n} from \"../utils/mention-utils\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {(text: string) => Promise<MentionUser[]>=} searchMention\n * @returns {{mentionSearchText: string | null, mentionUsers: MentionUser[], onKeyUp: (event: React.KeyboardEvent) => void, onFocus: () => void, onSelectUser: () => void, loading: boolean}}\n */\nexport function useMention(searchMention) {\n const [loading, setLoading] = useState(false);\n\n /** @type {[MentionUser[], React.Dispatch<React.SetStateAction<MentionUser[]>>]} */\n const [mentionUsers, setMentionUsers] = useState([]);\n\n /** @type {[string | null, React.Dispatch<React.SetStateAction<string | null>>]} */\n const [mentionSearchText, setMentionSearchText] = useState(null);\n\n const onSelectUser = useCallback(() => {\n deleteTextFromAtToCaret();\n setMentionUsers([]);\n }, []);\n\n /** */\n const checkMentionText = useCallback(async () => {\n const metionText = getTextFromAtToCaret();\n\n setMentionSearchText(metionText);\n\n if (metionText === null) {\n setMentionUsers([]);\n } else {\n setLoading(true);\n const users = await searchMention(metionText);\n setLoading(false);\n setMentionUsers(users);\n }\n }, [searchMention]);\n\n /** @type {(event: React.KeyboardEvent) => void} */\n const onKeyUp = useCallback(\n async event => {\n if (typeof searchMention !== \"function\") return;\n\n if (\n event.key === \"Backspace\" &&\n getElementWithFocus()?.element.parentElement.hasAttribute(\n \"data-mention-id\"\n )\n ) {\n const elementWithFocus = getElementWithFocus();\n elementWithFocus.element.parentElement.remove();\n } else if (\n ![\"ArrowUp\", \"ArrowDown\", \"Esc\", \"Escape\"].includes(event.key)\n ) {\n checkMentionText();\n }\n },\n [checkMentionText, searchMention]\n );\n\n const onFocus = useCallback(() => {\n checkMentionText();\n }, [checkMentionText]);\n\n return {\n mentionSearchText,\n mentionUsers,\n onKeyUp,\n onFocus,\n onSelectUser,\n loading\n };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, {\n useImperativeHandle,\n useState,\n forwardRef,\n useMemo,\n useEffect\n} from \"react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {Object} Props\n * @property {MentionUser[]} users\n * @property {string | null} mentionSearchText\n * @property {(user: MentionUser) => void} onSelect\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n */\n\n/**\n * @typedef {{prevUser: () => void; nextUser: () => void;}} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst MentionUserList = (\n { users, mentionSearchText, onSelect, addEventListener },\n ref\n) => {\n const [selectedUser, setSelectedUser] = useState(0);\n\n useImperativeHandle(ref, () => ({\n prevUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === 0) {\n return 0;\n }\n\n return currentSelectedUser - 1;\n });\n },\n nextUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === users.length - 1) {\n return users.length - 1;\n }\n\n return currentSelectedUser + 1;\n });\n }\n }));\n\n useEffect(() => {\n setSelectedUser(0);\n }, [users]);\n\n /**\n *\n * @param {string} selectedText\n * @param {string} rest\n * @return {string}\n */\n function getMentionSelectedNameEl(selectedText, rest) {\n return `<span class=\"react-input-emoji--mention--item--name__selected\" data-testid=\"metion-selected-word\">${selectedText}</span>${rest}`;\n }\n\n /** @type {(MentionUser & {nameHtml: string})[]} */\n const usersFiltered = useMemo(() => {\n const searchText = mentionSearchText\n ? mentionSearchText.substring(1).toLocaleLowerCase()\n : \"\";\n return users.map(user => {\n let nameHtml = user.name;\n\n if (mentionSearchText && mentionSearchText.length > 1) {\n if (user.name.toLowerCase().startsWith(searchText)) {\n nameHtml = getMentionSelectedNameEl(\n user.name.substring(0, searchText.length),\n user.name.substring(searchText.length)\n );\n } else {\n const names = user.name.split(\" \");\n\n nameHtml = names\n .map(name => {\n if (name.toLocaleLowerCase().startsWith(searchText)) {\n return getMentionSelectedNameEl(\n name.substring(0, searchText.length),\n name.substring(searchText.length)\n );\n }\n return name;\n })\n .join(\" \");\n }\n }\n\n return {\n ...user,\n nameHtml\n };\n });\n }, [mentionSearchText, users]);\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {MentionUser} user\n * @returns {(event: React.MouseEvent) => void} event\n */\n function handleClick(user) {\n return event => {\n event.stopPropagation();\n event.preventDefault();\n\n onSelect(user);\n };\n }\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"enter\", event => {\n event.stopPropagation();\n event.preventDefault();\n onSelect(usersFiltered[selectedUser]);\n });\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onSelect, selectedUser, usersFiltered]);\n\n return (\n <ul\n className=\"react-input-emoji--mention--list\"\n data-testid=\"mention-user-list\"\n >\n {usersFiltered.map((user, index) => (\n <li key={user.id}>\n <button\n type=\"button\"\n onClick={handleClick(user)}\n className={`react-input-emoji--mention--item${\n selectedUser === index\n ? \" react-input-emoji--mention--item__selected\"\n : \"\"\n }`}\n onMouseOver={() => setSelectedUser(index)}\n >\n <img\n className=\"react-input-emoji--mention--item--img\"\n src={user.image}\n />\n <div\n className=\"react-input-emoji--mention--item--name\"\n dangerouslySetInnerHTML={{ __html: user.nameHtml }}\n />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst MentionUserListWithRef = forwardRef(MentionUserList);\n\nMentionUserListWithRef.propTypes = {\n users: t.array.isRequired\n};\n\nexport default MentionUserListWithRef;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// hooks\nimport { useMention } from \"../hooks/use-mention\";\n\n// components\nimport MentionUserList from \"./mention-user-list\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n * @property {(html: string) => void} appendContent\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst MentionWrapper = ({\n searchMention,\n addEventListener,\n appendContent,\n addSanitizeFn\n}) => {\n /** @type {React.MutableRefObject<import('./mention-user-list').Ref | null>} */\n const metionUserListRef = useRef(null);\n const [showUserList, setShowUserList] = useState(false);\n\n const {\n mentionSearchText,\n mentionUsers,\n loading,\n onKeyUp,\n onFocus,\n onSelectUser\n } = useMention(searchMention);\n\n useEffect(() => {\n addSanitizeFn(html => {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const mentionsEl = Array.prototype.slice.call(\n container.querySelectorAll(\".react-input-emoji--mention--text\")\n );\n\n mentionsEl.forEach(mentionEl => {\n container.innerHTML = container.innerHTML.replace(\n mentionEl.outerHTML,\n `@[${mentionEl.dataset.mentionName}](userId:${mentionEl.dataset.mentionId})`\n );\n });\n\n return container.innerHTML;\n });\n }, [addSanitizeFn]);\n\n useEffect(() => {\n setShowUserList(mentionUsers.length > 0);\n }, [mentionUsers]);\n\n useEffect(() => {\n /** */\n function checkClickOutside() {\n setShowUserList(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"keyUp\", onKeyUp);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onKeyUp]);\n\n useEffect(() => {\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n switch (event.key) {\n case \"Esc\": // IE/Edge specific value\n case \"Escape\":\n setShowUserList(false);\n break;\n default:\n break;\n }\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeyDown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener]);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"focus\", onFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onFocus]);\n\n useEffect(() => {\n if (showUserList) {\n const unsubscribeArrowUp = addEventListener(\"arrowUp\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.prevUser();\n });\n\n const unsubscribeArrowDown = addEventListener(\"arrowDown\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.nextUser();\n });\n\n return () => {\n unsubscribeArrowUp();\n unsubscribeArrowDown();\n };\n }\n }, [addEventListener, showUserList]);\n\n /**\n *\n * @param {MetionUser} user\n */\n function handleSelect(user) {\n onSelectUser();\n appendContent(\n `<span class=\"react-input-emoji--mention--text\" data-mention-id=\"${user.id}\" data-mention-name=\"${user.name}\">@${user.name}</span> `\n );\n }\n\n return (\n <>\n {loading ? (\n <div className=\"react-input-emoji--mention--container\">\n <div className=\"react-input-emoji--mention--loading\">\n <div className=\"react-input-emoji--mention--loading--spinner\">\n Loading...\n </div>\n </div>\n </div>\n ) : (\n showUserList && (\n <div\n className=\"react-input-emoji--mention--container\"\n onClick={evt => evt.stopPropagation()}\n >\n <MentionUserList\n ref={metionUserListRef}\n mentionSearchText={mentionSearchText}\n users={mentionUsers}\n onSelect={handleSelect}\n addEventListener={addEventListener}\n />\n </div>\n )\n )}\n </>\n );\n};\n\nexport default MentionWrapper;\n","// @ts-check\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @template T\n * @returns {import('../types/types').ListenerObj<T>}\n */\nexport function createObserver() {\n /** @type {import('../types/types').Listerner<T>[]} */\n let listeners = [];\n\n return {\n subscribe: listener => {\n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n },\n publish: event => {\n listeners.forEach(listener => listener(event));\n },\n get currentListerners() {\n return listeners;\n }\n };\n}\n","// @ts-check\n\nimport { useCallback, useMemo } from \"react\";\nimport { createObserver } from \"../utils/observer\";\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useEventListeners() {\n /** @type {TextInputListeners} */\n const listeners = useMemo(\n () => ({\n keyDown: createObserver(),\n keyUp: createObserver(),\n arrowUp: createObserver(),\n arrowDown: createObserver(),\n enter: createObserver(),\n focus: createObserver(),\n blur: createObserver()\n }),\n []\n );\n\n /**\n * @template {keyof TextInputListeners} T, K\n * @type {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void}\n */\n const addEventListener = useCallback(\n (event, fn) => {\n return listeners[event].subscribe(fn);\n },\n [listeners]\n );\n\n return { addEventListener, listeners };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function usePollute() {\n /** @type {React.MutableRefObject<PolluteFn[]>} */\n const polluteFnsRef = useRef([]);\n\n /** @type {(fn: PolluteFn) => void} */\n const addPolluteFn = useCallback(fn => {\n polluteFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const pollute = useCallback(text => {\n const result = polluteFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, text);\n\n return result;\n }, []);\n\n return { addPolluteFn, pollute };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, forwardRef, useCallback } from \"react\";\n\n// css\nimport \"./styles.css\";\n\n// utils\nimport { replaceAllTextEmojis } from \"./utils/emoji-utils\";\nimport {\n totalCharacters\n} from \"./utils/input-event-utils\";\n\n// hooks\nimport { useExpose } from \"./hooks/use-expose\";\nimport { useEmit } from \"./hooks/use-emit\";\n\n// components\nimport TextInput from \"./text-input\";\nimport EmojiPickerWrapper from \"./components/emoji-picker-wrapper\";\nimport MentionWrapper from \"./components/mention-wrapper\";\nimport { useEventListeners } from \"./hooks/use-event-listeners\";\nimport { useSanitize } from \"./hooks/use-sanitize\";\nimport { usePollute } from \"./hooks/user-pollute\";\n\n/**\n * @typedef {import('./types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('./types/types').ListenerObj<any>} ListenerObj\n */\n\n/**\n * @typedef {object} Props\n * @property {string} value\n * @property {(value: string) => void} onChange\n * @property {\"light\" | \"dark\" | \"auto\"} theme\n * @property {boolean} cleanOnEnter\n * @property {(text: string) => void} onEnter\n * @property {string} placeholder\n * @property {(size: {width: number, height: number}) => void} onResize\n * @property {() => void} onClick\n * @property {() => void} onFocus\n * @property {() => void=} onBlur\n * @property {number} maxLength\n * @property {boolean} keepOpened\n * @property {(event: KeyboardEvent) => void} onKeyDown\n * @property {string} inputClass\n * @property {boolean} disableRecent\n * @property {number} tabIndex\n * @property {number} height\n * @property {number} borderRadius\n * @property {string} borderColor\n * @property {number} fontSize\n * @property {string} fontFamily\n * @property {object[]=} customEmojis\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n */\n\n/**\n * Input Emoji Component\n * @param {Props} props\n * @param {React.Ref<any>} ref\n * @return {JSX.Element}\n */\nfunction InputEmoji(props, ref) {\n const {\n onChange,\n onEnter,\n onResize,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n theme,\n cleanOnEnter,\n placeholder,\n maxLength,\n keepOpened,\n inputClass,\n disableRecent,\n tabIndex,\n value,\n customEmojis,\n searchMention,\n // style\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n } = props;\n\n /** @type {React.MutableRefObject<import('./text-input').Ref | null>} */\n const textInputRef = useRef(null);\n\n const { addEventListener, listeners } = useEventListeners();\n\n const { addSanitizeFn, sanitize, sanitizedTextRef } = useSanitize();\n\n const { addPolluteFn, pollute } = usePollute();\n\n const updateHTML = useCallback(\n (nextValue = \"\") => {\n if (textInputRef.current === null) return\n\n textInputRef.current.html = replaceAllTextEmojis(nextValue);\n sanitizedTextRef.current = nextValue;\n },\n [sanitizedTextRef]\n );\n\n const setValue = useCallback(\n value => {\n updateHTML(value);\n },\n [updateHTML]\n );\n\n const emitChange = useEmit(textInputRef, onResize, onChange);\n\n useExpose({\n ref,\n setValue,\n textInputRef,\n emitChange\n });\n\n useEffect(() => {\n if (sanitizedTextRef.current !== value) {\n setValue(value);\n }\n }, [sanitizedTextRef, setValue, value]);\n\n useEffect(() => {\n updateHTML();\n }, [updateHTML]);\n\n useEffect(() => {\n /**\n * Handle keydown event\n * @param {React.KeyboardEvent} event\n * @return {boolean}\n */\n function handleKeydown(event) {\n if (\n typeof maxLength !== \"undefined\" &&\n event.key !== \"Backspace\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n event.preventDefault();\n }\n\n if (event.key === \"Enter\" && textInputRef.current) {\n event.preventDefault();\n\n const text = sanitize(textInputRef.current.html);\n\n emitChange(sanitizedTextRef.current);\n\n if (\n typeof onEnter === \"function\" &&\n listeners.enter.currentListerners.length === 0\n ) {\n onEnter(text);\n }\n\n if (cleanOnEnter && listeners.enter.currentListerners.length === 0) {\n updateHTML(\"\");\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return false;\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return true;\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeydown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, cleanOnEnter, emitChange, listeners.enter.currentListerners.length, maxLength, onEnter, onKeyDown, sanitize, sanitizedTextRef, updateHTML]);\n\n useEffect(() => {\n /** */\n function handleFocus() {\n if (typeof onClick === \"function\") {\n onClick();\n }\n\n if (typeof onFocus === \"function\") {\n onFocus();\n }\n }\n\n const unsubscribe = addEventListener(\"focus\", handleFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onClick, onFocus]);\n\n useEffect(() => {\n /** */\n function handleBlur() {\n if (typeof onBlur === 'function') {\n onBlur()\n }\n }\n\n const unsubscribe = addEventListener('blur', handleBlur);\n\n return () => {\n unsubscribe()\n }\n }, [addEventListener, onBlur])\n\n /**\n *\n * @param {string} html\n */\n function handleTextInputChange(html) {\n sanitize(html);\n emitChange(sanitizedTextRef.current);\n }\n\n /**\n *\n * @param {string} html\n */\n function appendContent(html) {\n if (\n typeof maxLength !== \"undefined\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n if (textInputRef.current !== null) {\n textInputRef.current.appendContent(html);\n }\n }\n\n /**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\n function handleCopy(event) {\n event.clipboardData.setData(\"text\", sanitizedTextRef.current);\n event.preventDefault();\n }\n\n /**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\n function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = pollute(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n }\n\n return (\n <div className=\"react-emoji\">\n <MentionWrapper\n searchMention={searchMention}\n addEventListener={addEventListener}\n appendContent={appendContent}\n addSanitizeFn={addSanitizeFn}\n />\n <TextInput\n ref={textInputRef}\n onCopy={handleCopy}\n onPaste={handlePaste}\n onBlur={listeners.blur.publish}\n onFocus={listeners.focus.publish}\n onArrowUp={listeners.arrowUp.publish}\n onArrowDown={listeners.arrowDown.publish}\n onKeyUp={listeners.keyUp.publish}\n onKeyDown={listeners.keyDown.publish}\n onEnter={listeners.enter.publish}\n placeholder={placeholder}\n style={{\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n }}\n tabIndex={tabIndex}\n className={inputClass}\n onChange={handleTextInputChange}\n />\n <EmojiPickerWrapper\n theme={theme}\n keepOpened={keepOpened}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n addSanitizeFn={addSanitizeFn}\n addPolluteFn={addPolluteFn}\n appendContent={appendContent}\n />\n </div>\n );\n}\n\nconst InputEmojiWithRef = forwardRef(InputEmoji);\n\nInputEmojiWithRef.defaultProps = {\n theme: /** @type {const} */ (\"auto\"),\n height: 30,\n placeholder: \"Type a message\",\n borderRadius: 21,\n borderColor: \"#EAEAEA\",\n fontSize: 15,\n fontFamily: \"sans-serif\",\n tabIndex: 0,\n customEmojis: []\n};\n\nexport default InputEmojiWithRef;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TRANSPARENT_GIF","replaceAllTextEmojis","text","allEmojis","getAllEmojisFromText","allEmojiStyle","Set","forEach","emoji","replaceAll","str","find","replace","RegExp","match","getImageEmoji","shortNames","short_names","emojiSpanEl","querySelector","native","id","dataEmoji","emoticons","length","replaceAllTextEmojiToString","html","container","innerHTML","images","Array","prototype","slice","call","querySelectorAll","image","outerHTML","dataset","handlePasteHtmlAtCaret","sel","range","window","getSelection","getRangeAt","rangeCount","deleteContents","el","frag","createDocumentFragment","node","lastNode","insertNode","cloneRange","setStartAfter","collapse","removeAllRanges","addRange","totalCharacters","textCount","emojisCount","useSanitize","sanitizeFnsRef","useRef","sanitizedTextRef","addSanitizeFn","useCallback","fn","current","push","sanitize","result","reduce","acc","replaceAllHtmlToString","innerText","useExpose","textInputRef","setValue","emitChange","useImperativeHandle","value","focus","blur","useEmit","onResize","onChange","currentSizeRef","onChangeFn","checkAndEmitResize","currentSize","nextSize","size","width","height","sanitizedText","useEffect","TextInput","placeholder","tabIndex","className","props","appendContent","placeholderRef","trim","visibility","offsetWidth","offsetHeight","handleKeyDown","event","key","onEnter","onArrowUp","onArrowDown","onKeyDown","handleClick","onFocus","handleKeyUp","onKeyUp","input","onBlur","onCopy","onPaste","TextInputWithRef","forwardRef","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","i","descriptor","enumerable","configurable","writable","Object","defineProperty","_createClass","protoProps","staticProps","_typeof","obj","Symbol","iterator","constructor","mapping","name","unified","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","added_in","buildSearch","search","addToSearch","strings","split","isArray","string","s","toLowerCase","indexOf","join","uncompress","data","compressed","emojis","unshift","sheet_x","sheet_y","toFixed","_String","String","fromCodePoint","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","arguments","codePoint","Number","isFinite","Math","floor","RangeError","fromCharCode","apply","COLONS_REGEX","SKINS","unifiedToNative","unicodes","codePoints","map","u","concat","skin_tone","skin_variations","custom","customCategory","imageUrl","colons","skin","getSanitizedData","getData","set","emojiData","matches","parseInt","aliases","hasOwnProperty","keys","variations","JSON","parse","stringify","skinKey","variationData","undefined","k","v","shift","uniq","arr","item","intersect","a","b","uniqA","uniqB","filter","deepMerge","o","originalValue","measureScrollbar","div","overflow","position","top","body","scrollbarWidth","clientWidth","removeChild","throttleIdleTask","func","doIdleTask","requestIdleCallback","setTimeout","running","throttled","NAMESPACE","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","localStorage","e","get","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_this","_loop","emoticon","skinTone","clearCustomEmojis","pool","_this2","emojiId","addCustomToPool","_this3","_this4","_ref","emojisToShowFilter","maxResults","include","exclude","_ref$custom","store","results","values","allResults","categories","category","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","_char","scores","sub","substr","subIndex","score","sort","aScore","bScore","localeCompare","emojiIndex","DEFAULTS","frequently","initialized","defaults","init","add","perLine","quantity","frequentlyKeys","sorted","reverse","sliced","last","pop","_defineProperty","_extends","assign","bind","source","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_inherits","subClass","superClass","create","activity","React","xmlns","viewBox","d","transform","x","y","rx","flags","foods","nature","objects","people","places","recent","symbols","opacity","_delete","EmojiPropTypes","PropTypes","object","isRequired","onOver","onLeave","onClick","fallback","backgroundImageFn","bool","forceSize","tooltip","useButton","oneOf","sheetSize","sheetColumns","number","sheetRows","oneOfType","PickerPropTypes","onSelect","onSkinChange","emojiSize","i18n","title","color","showPreview","showSkinTones","emojiTooltip","theme","arrayOf","autoFocus","enableFrequentEmojiSort","shape","spriteUrl","skinEmoji","notFound","notFoundEmoji","icons","Anchors","_React$PureComponent","defaultCategory","first","selected","currentTarget","getAttribute","_this$props","onAnchorClick","render","_this$props2","categorieslabel","anchor","isSelected","iconId","startsWith","backgroundColor","PureComponent","propTypes","array","defaultProps","EmojiDefaultProps","PickerDefaultProps","defaultSkin","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","_getData","_getPosition","_getData2","multiplyX","multiplyY","_getSanitizedData","_handleClick","_handleOver","_handleLeave","_isNumeric","isNaN","parseFloat","_convertStyleToCSS","NimbleEmoji","children","nativeEmoji","label","Boolean","fontSize","display","wordBreak","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","setHasEmoji","Tag","onMouseEnter","onMouseLeave","NotFound","emojiProps","component","notfound","Category","_React$Component","setContainerRef","setLabelRef","componentDidMount","margin","minMargin","memoizeSize","shouldComponentUpdate","nextProps","nextState","_native","hasStickyPosition","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSet","shouldUpdate","maxMargin","parent","parentElement","_this$container$getBo","getBoundingClientRect","_parent$getBoundingCl","parentTop","_this$label$getBoundi","labelHeight","scrollTop","handleScroll","getEmojis","frequentlyUsed","updateDisplay","c","_this$props3","labelStyles","labelSpanStyles","containerStyles","Component","Skins","opened","setState","SkinsEmoji","_Skins","skinToneNodes","skintext","SkinsDot","keyCode","preventDefault","visible","skintones","role","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","short_name","Search","icon","isSearching","setRef","clear","handleChange","onSearch","_this$state","inputId","htmlFor","disabled","I18N","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","customEmoji","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleDarkMatchMediaChange","testStickyPosition","firstRenderTimeout","componentDidUpdate","updateCategoriesSize","componentWillUnmount","clearTimeout","leaveTimeout","darkMatchMedia","removeListener","stickyTestElement","prefixes","prefix","getPreferredTheme","matchMedia","addListener","media","preview","categoryRefs","forceUpdate","requestAnimationFrame","scroll","waitingForPaint","activeCategory","scrollingDown","minTop","l","ii","active","clientHeight","scrollHeight","anchors","_activeCategory","categoryName","scrollToComponent","newState","handled","getCategories","setCategoryRef","onScroll","Picker","EmojiPicker","onSelectEmoji","disableRecent","customEmojis","excludePicker","useMemo","t","memo","EmojiPickerWrapper","keepOpened","addPolluteFn","showPicker","setShowPicker","useState","checkClickOutside","element","classList","contains","addEventListener","removeEventListener","toggleShowPicker","stopPropagation","currentShowPicker","handleSelectEmoji","evt","getTextFromAtToCaret","getRangeFromAtToCaret","substring","begin","end","deleteTextFromAtToCaret","deleteData","elementWithFocus","getElementWithFocus","caretOffset","textContent","lastAt","lastIndexOf","getSelectionStart","preCaretRange","selectNodeContents","setEnd","endContainer","endOffset","toString","selection","textRange","createRange","preCaretTextRange","createTextRange","moveToElementText","setEndPoint","anchorNode","nodeType","useMention","searchMention","loading","setLoading","mentionUsers","setMentionUsers","mentionSearchText","setMentionSearchText","onSelectUser","checkMentionText","metionText","users","hasAttribute","remove","includes","MentionUserList","selectedUser","setSelectedUser","prevUser","currentSelectedUser","nextUser","getMentionSelectedNameEl","selectedText","rest","usersFiltered","searchText","toLocaleLowerCase","user","nameHtml","names","unsubscribe","__html","MentionUserListWithRef","MentionWrapper","metionUserListRef","showUserList","setShowUserList","mentionsEl","mentionEl","mentionName","mentionId","unsubscribeArrowUp","unsubscribeArrowDown","handleSelect","createObserver","listeners","subscribe","listener","publish","currentListerners","useEventListeners","keyDown","keyUp","arrowUp","arrowDown","enter","usePollute","polluteFnsRef","pollute","InputEmoji","cleanOnEnter","maxLength","inputClass","borderRadius","borderColor","fontFamily","updateHTML","nextValue","handleKeydown","nativeEvent","handleFocus","handleBlur","handleTextInputChange","handleCopy","clipboardData","setData","handlePaste","content","execCommand","InputEmojiWithRef"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|