diff --git a/extensions/emoji/js/dist/forum.js b/extensions/emoji/js/dist/forum.js index 308f8ace2..19c8b7b58 100644 --- a/extensions/emoji/js/dist/forum.js +++ b/extensions/emoji/js/dist/forum.js @@ -1,2 +1,2 @@ -module.exports=function(e){var a={};function d(u){if(a[u])return a[u].exports;var o=a[u]={i:u,l:!1,exports:{}};return e[u].call(o.exports,o,o.exports,d),o.l=!0,o.exports}return d.m=e,d.c=a,d.d=function(e,a,u){d.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:u})},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.t=function(e,a){if(1&a&&(e=d(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var u=Object.create(null);if(d.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var o in e)d.d(u,o,function(a){return e[a]}.bind(null,o));return u},d.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(a,"a",a),a},d.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},d.p="",d(d.s=12)}([function(e,a){e.exports=flarum.core.compat.extend},function(e,a,d){(function(a){var d=a.location||{},u=function(){"use strict";var e={base:"https://twemoji.maxcdn.com/2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(e){var a="string"==typeof e?parseInt(e,16):e;if(a<65536)return r(a);return r(55296+((a-=65536)>>10),56320+(1023&a))},toCodePoint:g},onerror:function(){this.parentNode&&this.parentNode.replaceChild(i(this.alt,!1),this)},parse:function(a,u){u&&"function"!=typeof u||(u={callback:u});return("string"==typeof a?function(e,a){return s(e,function(e){var d,u,o=e,t=c(e),r=a.callback(t,a);if(t&&r){for(u in o="")}return o})}:function(e,a){var u,o,n,r,l,_,f,s,g,m,p,b,h,w=function e(a,d){var u,o,n=a.childNodes,r=n.length;for(;r--;)u=n[r],3===(o=u.nodeType)?d.push(u):1!==o||"ownerSVGElement"in u||t.test(u.nodeName.toLowerCase())||e(u,d);return d}(e,[]),k=w.length;for(;k--;){for(n=!1,r=document.createDocumentFragment(),l=w[k],_=l.nodeValue,s=0;f=d.exec(_);){if((g=f.index)!==s&&r.appendChild(i(_.slice(s,g),!0)),p=f[0],b=c(p),s=g+p.length,h=a.callback(b,a),b&&h){for(o in(m=new Image).onerror=a.onerror,m.setAttribute("draggable","false"),u=a.attributes(p,b))u.hasOwnProperty(o)&&0!==o.indexOf("on")&&!m.hasAttribute(o)&&m.setAttribute(o,u[o]);m.className=a.className,m.alt=p,m.src=h,n=!0,r.appendChild(m)}m||r.appendChild(i(p,!1)),m=null}n&&(s<_.length&&r.appendChild(i(_.slice(s),!0)),l.parentNode.replaceChild(r,l))}return e})(a,{callback:u.callback||l,attributes:"function"==typeof u.attributes?u.attributes:f,base:"string"==typeof u.base?u.base:e.base,ext:u.ext||e.ext,size:u.folder||(o=u.size||e.size,"number"==typeof o?o+"x"+o:o),className:u.className||e.className,onerror:u.onerror||e.onerror});var o},replace:s,test:function(e){d.lastIndex=0;var a=d.test(e);return d.lastIndex=0,a}},a={"&":"&","<":"<",">":">","'":"'",'"':"""},d=/(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddb0-\uddb3])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[\u0023\u002a\u0030-\u0039]\ufe0f?\u20e3|(?:[\u00a9\u00ae\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef9]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd70\udd73-\udd76\udd7a\udd7c-\udda2\uddb4\uddb7\uddc0-\uddc2\uddd0\uddde-\uddff]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,u=/\uFE0F/g,o=String.fromCharCode(8205),n=/[&<>'"]/g,t=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,r=String.fromCharCode;return e;function i(e,a){return document.createTextNode(a?e.replace(u,""):e)}function l(e,a){return"".concat(a.base,a.size,"/",e,a.ext)}function c(e){return g(e.indexOf(o)<0?e.replace(u,""):e)}function _(e){return a[e]}function f(){return null}function s(e,a){return String(e).replace(d,a)}function g(e,a){for(var d=[],u=0,o=0,n=0;nparseInt(c.height)&&(l.overflowY="scroll"):l.overflow="hidden",i.textContent=e.value.substring(0,o),_&&(i.textContent=i.textContent.replace(/\s/g,"ย "));var f=document.createElement("span");f.textContent=e.value.substring(o)||".",i.appendChild(f);var s={top:f.offsetTop+parseInt(c.borderTopWidth),left:f.offsetLeft+parseInt(c.borderLeftWidth),height:parseInt(c.lineHeight)};return t?f.style.backgroundColor="#aaa":document.body.removeChild(i),s}void 0!==e.exports?e.exports=o:d&&(window.getCaretCoordinates=o)}()},function(e,a){e.exports=flarum.core.compat["components/ComposerBody"]},function(e,a){e.exports=flarum.core.compat["components/TextEditor"]},function(e,a){e.exports=flarum.core.compat["components/TextEditorButton"]},function(e,a){e.exports=flarum.core.compat["utils/KeyboardNavigatable"]},function(e,a){e.exports=flarum.core.compat.Component},function(e,a){var d;d=function(){return this}();try{d=d||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(d=window)}e.exports=d},function(e,a,d){"use strict";d.r(a);var u=d(0),o=d(4),n=d.n(o),t=d(3),r=d.n(t),i=d(5),l=d.n(i),c=d(6),_=d.n(c),f=d(7),s=d.n(f),g=d(8),p=d.n(g),b=d(2),h=d(1),w=d.n(h),k=String.fromCharCode(8205),y=/\uFE0F/g;var v=d(9),x=d.n(v);var j=d(10),z=function(e){var a,d;function u(){return e.apply(this,arguments)||this}d=e,(a=u).prototype=Object.create(d.prototype),a.prototype.constructor=a,a.__proto__=d;var o=u.prototype;return o.init=function(){this.active=!1,this.index=0,this.keyWasJustPressed=!1},o.view=function(){return m("ul",{className:"Dropdown-menu EmojiDropdown"},m("li",{className:"Dropdown-header",key:"0"},app.translator.trans("flarum-emoji.forum.composer.type_to_search_text")),this.props.items.map(function(e){return m("li",{key:e.attrs.key},e)}))},o.show=function(e,a){this.$().show().css({left:e+"px",top:a+"px"}),this.active=!0},o.hide=function(){this.$().hide(),this.active=!1},o.navigate=function(e){var a=this;this.keyWasJustPressed=!0,this.setIndex(this.index+e,!0),clearTimeout(this.keyWasJustPressedTimeout),this.keyWasJustPressedTimeout=setTimeout(function(){return a.keyWasJustPressed=!1},500)},o.complete=function(){this.$("li:not(.Dropdown-header)").eq(this.index).find("button").click()},o.setIndex=function(e,a){if(!this.keyWasJustPressed||a){var d=this.$(),u=d.find("li:not(.Dropdown-header)"),o=e;o<0?o=u.length-1:o>=u.length&&(o=0),this.index=o;var n=u.removeClass("active").eq(o).addClass("active");if(a){var t,r=d.scrollTop(),i=d.offset().top,l=i+d.outerHeight(),c=n.offset().top,_=c+n.outerHeight();cl&&(t=r-l+_+parseInt(d.css("padding-bottom"),10)),void 0!==t&&d.stop(!0).animate({scrollTop:t},100)}}},u}(d.n(j).a);function C(){var e=Object.keys(b);Object(u.extend)(_.a.prototype,"config",function(a,d){if(!d){var u,o,n=this,t=$('
'),r=new z({items:[]}),i=this.$("textarea").wrap('
');this.navigator=new x.a,this.navigator.when(function(){return r.active}).onUp(function(){return r.navigate(-1)}).onDown(function(){return r.navigate(1)}).onSelect(r.complete.bind(r)).onCancel(r.hide.bind(r)).bindTo(i),i.after(t).on("click keyup input",function(a){var d=this;if(-1===[9,13,27,40,38,37,39].indexOf(a.which)){var c=this.selectionStart;if(!(this.selectionEnd-c>0)){var _=this.value;u=0;for(var f=c-1;f>=0;f--){var s=_.substr(f,1);if(!/[a-z0-9]|\+|\-|_|\:/.test(s))break;if(":"===s&&(0==f||/\s/.test(_.substr(f-1,1)))){u=f+1;break}}if(r.hide(),r.active=!1,u){o=_.substring(u,c).toLowerCase();var g=function(e){var a=e.emoji,d=e.name,o=e.code;return m("button",{key:a,onclick:function(){return d=u-1+(e=a+" ").length,o=n.content(),n.editor.setValue(o.substring(0,u-1)+e+o.substr(i[0].selectionStart)),n.editor.setSelectionRange(d,d),void r.hide();var e,d,o},onmouseenter:function(){r.setIndex($(this).parent().index()-1)}},m("img",{alt:a,class:"emoji",draggable:"false",src:"//twemoji.maxcdn.com/2/72x72/"+o+".png"}),d)};!function(){var a,n,i=[],c=(a=o,n=new RegExp("\\((["+"+.*?[]{}()^$|\\".replace(/(.)/g,"\\$1")+"])\\)","g"),new RegExp("(.*)"+a.toLowerCase().replace(/(.)/g,"($1)(.*?)").replace(n,"(\\$1)")+"$","i")),_=7,f=function(a){for(var d=0;d0;d++){var u=e[d];if(-1===i.indexOf(u)){var o=b[u],n=Array.isArray(o),t=0;for(o=n?o:o[Symbol.iterator]();;){var r;if(n){if(t>=o.length)break;r=o[t++]}else{if((t=o.next()).done)break;r=t.value}if(a(r)){--_,i.push(u);break}}}}};f(function(e){return 0===e.indexOf(o)}),f(function(e){return c.test(e)});var s=i.map(function(e){return{emoji:e,name:b[e][0],code:function(e){return w.a.convert.toCodePoint(e.indexOf(k)<0?e.replace(y,""):e)}(e)}}).map(g);if(s.length){r.props.items=s,m.render(t[0],r.render()),r.show();var p=l()(d,u),h=r.$().outerWidth(),v=r.$().outerHeight(),x=r.$().offsetParent(),j=p.left,z=p.top+15;z+v>x.height()&&(z=p.top-v-15),j+h>x.width()&&(j=x.width()-h),z=Math.max(-$(d).offset().top,z),j=Math.max(-$(d).offset().left,j),r.show(j,z)}}(),r.setIndex(0),r.$().scrollTop(0),r.active=!0}}}})}}),Object(u.extend)(s.a.prototype,"toolbarItems",function(e){var a=this;e.add("emoji",m(p.a,{onclick:function(){return a.insertAtCursor(":")},icon:"far fa-smile"},app.translator.trans("flarum-emoji.forum.composer.emoji_tooltip")))})}n.a.initializers.add("flarum-emoji",function(){C(),Object(u.override)(r.a.prototype,"contentHtml",function(e){var a=e();return this.oldContentHtml!==a&&(this.emojifiedContentHtml=w.a.parse(a),this.oldContentHtml=a),this.emojifiedContentHtml}),Object(u.override)(s9e.TextFormatter,"preview",function(e,a,d){e(a,d),w.a.parse(d)})})}]); +module.exports=function(e){var d={};function a(u){if(d[u])return d[u].exports;var o=d[u]={i:u,l:!1,exports:{}};return e[u].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=e,a.c=d,a.d=function(e,d,u){a.o(e,d)||Object.defineProperty(e,d,{enumerable:!0,get:u})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,d){if(1&d&&(e=a(e)),8&d)return e;if(4&d&&"object"==typeof e&&e&&e.__esModule)return e;var u=Object.create(null);if(a.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:e}),2&d&&"string"!=typeof e)for(var o in e)a.d(u,o,function(d){return e[d]}.bind(null,o));return u},a.n=function(e){var d=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(d,"a",d),d},a.o=function(e,d){return Object.prototype.hasOwnProperty.call(e,d)},a.p="",a(a.s=10)}([function(e,d){e.exports=flarum.core.compat.extend},function(e){e.exports=JSON.parse('{"๐Ÿ˜€":["gleeful"],"๐Ÿ˜ƒ":["glad","smile"],"๐Ÿ˜„":["happy"],"๐Ÿ˜":["blissful","grin"],"๐Ÿ˜†":["amused","laugh","lol"],"๐Ÿ˜…":["embarassed"],"๐Ÿคฃ":["entertained","rofl"],"๐Ÿ˜‚":["joyful","haha"],"๐Ÿ™‚":["pleased"],"๐Ÿ™ƒ":["ecstatic","upside_down"],"๐Ÿ˜‰":["coy","wink"],"๐Ÿ˜Š":["anxious","blush"],"๐Ÿ˜‡":["innocent","halo"],"๐Ÿฅฐ":["love"],"๐Ÿ˜":["lovestruck"],"๐Ÿคฉ":["starstruck"],"๐Ÿ˜˜":["flirty"],"๐Ÿ˜—":["kiss"],"โ˜บ๏ธ":["relaxed"],"๐Ÿ˜š":["loving_kiss"],"๐Ÿ˜™":["happy_kiss"],"๐Ÿ˜‹":["yum","savour"],"๐Ÿ˜›":["playful","tongue_out"],"๐Ÿ˜œ":["mischievous"],"๐Ÿคช":["crazy"],"๐Ÿ˜":["facetious","lmao"],"๐Ÿค‘":["pretentious","money_mouth"],"๐Ÿค—":["hugging"],"๐Ÿคญ":["gasp"],"๐Ÿคซ":["shushing"],"๐Ÿค”":["curious","thinking"],"๐Ÿค":["silenced","zipper_mouth"],"๐Ÿคจ":["contempt"],"๐Ÿ˜๏ธ":["indifferent","neutral"],"๐Ÿ˜‘":["apathetic","expressionless"],"๐Ÿ˜ถ":["vacant","no_mouth"],"๐Ÿ˜":["cocky","smirk"],"๐Ÿ˜’":["unamused"],"๐Ÿ™„":["disbelief"],"๐Ÿ˜ฌ":["grimaced"],"๐Ÿคฅ":["lying"],"๐Ÿ˜Œ":["relieved"],"๐Ÿ˜”":["pensive"],"๐Ÿ˜ช":["sleepy"],"๐Ÿคค":["drooling"],"๐Ÿ˜ด":["exhausted","sleeping"],"๐Ÿ˜ท":["ill","mask"],"๐Ÿค’":["sick"],"๐Ÿค•":["injured"],"๐Ÿคข":["nauseated"],"๐Ÿคฎ":["vomiting"],"๐Ÿคง":["sneezing"],"๐Ÿฅต":["overheating"],"๐Ÿฅถ":["freezing"],"๐Ÿฅด":["woozy"],"๐Ÿ˜ต":["dizzy"],"๐Ÿคฏ":["shocked","exploding_head"],"๐Ÿค ":["cowboy"],"๐Ÿฅณ":["partying","celebrating"],"๐Ÿ˜Ž":["confident"],"๐Ÿค“":["nerd"],"๐Ÿง":["monocle"],"๐Ÿ˜•":["confused"],"๐Ÿ˜Ÿ":["worried"],"๐Ÿ™":["cheerless"],"โ˜น๏ธ":["sad","frowning"],"๐Ÿ˜ฎ":["surprised"],"๐Ÿ˜ฏ":["hushed"],"๐Ÿ˜ฒ":["astonished"],"๐Ÿ˜ณ":["flushed"],"๐Ÿฅบ":["pleading"],"๐Ÿ˜ฆ":["bored"],"๐Ÿ˜ง":["anguished","wtf"],"๐Ÿ˜จ":["fearful"],"๐Ÿ˜ฐ":["frustrated"],"๐Ÿ˜ฅ":["hopeful"],"๐Ÿ˜ข":["upset","cry"],"๐Ÿ˜ญ":["distressed","sob"],"๐Ÿ˜ฑ":["frightened","scream"],"๐Ÿ˜–":["confounded"],"๐Ÿ˜ฃ":["persevered"],"๐Ÿ˜ž":["disappointed"],"๐Ÿ˜“":["shamed"],"๐Ÿ˜ฉ":["weary"],"๐Ÿ˜ซ":["tired"],"๐Ÿฅฑ":["yawn"],"๐Ÿ˜ค":["annoyed","hrmph"],"๐Ÿ˜ก":["enraged","pout"],"๐Ÿ˜ ":["angry"],"๐Ÿคฌ":["censored"],"๐Ÿ˜ˆ":["imp"],"๐Ÿ‘ฟ":["angry_imp"],"๐Ÿ’€":["skull"],"โ˜ ๏ธ":["crossbones"],"๐Ÿ’ฉ":["poop"],"๐Ÿคก":["clown"],"๐Ÿ‘น":["ogre"],"๐Ÿ‘บ":["goblin"],"๐Ÿ‘ป":["ghost"],"๐Ÿ‘ฝ๏ธ":["alien"],"๐Ÿ‘พ":["alien_monster","space_invader"],"๐Ÿค–":["robot"],"๐Ÿ˜บ":["smiling_cat"],"๐Ÿ˜ธ":["grinning_cat"],"๐Ÿ˜น":["joyful_cat"],"๐Ÿ˜ป":["lovestruck_cat"],"๐Ÿ˜ผ":["smirking_cat"],"๐Ÿ˜ฝ":["kissing_cat"],"๐Ÿ™€":["weary_cat"],"๐Ÿ˜ฟ":["crying_cat"],"๐Ÿ˜พ":["pouting_cat"],"๐Ÿ™ˆ":["see_no_evil"],"๐Ÿ™‰":["hear_no_evil"],"๐Ÿ™Š":["speak_no_evil"],"๐Ÿ’‹":["kiss_lips"],"๐Ÿ’Œ":["love_letter"],"๐Ÿ’˜":["cupid"],"๐Ÿ’":["heart_ribbon"],"๐Ÿ’–":["sparkling_heart"],"๐Ÿ’—":["heartpulse"],"๐Ÿ’“":["heartbeat"],"๐Ÿ’ž":["revolving_hearts"],"๐Ÿ’•":["two_hearts"],"๐Ÿ’Ÿ":["heart_decoration"],"โฃ๏ธ":["heart_exclamation"],"๐Ÿ’”":["broken_heart"],"โค๏ธ":["heart"],"๐Ÿงก":["orange_heart"],"๐Ÿ’›":["yellow_heart"],"๐Ÿ’š":["green_heart"],"๐Ÿ’™":["blue_heart"],"๐Ÿ’œ":["purple_heart"],"๐ŸคŽ":["brown_heart"],"๐Ÿ–ค":["black_heart"],"๐Ÿค":["white_heart"],"๐Ÿ’ฏ":["100"],"๐Ÿ’ข":["anger"],"๐Ÿ’ฅ":["boom","collision"],"๐Ÿ’ซ":["dizzy_star"],"๐Ÿ’ฆ":["sweat_drops"],"๐Ÿ’จ":["dash"],"๐Ÿ•ณ๏ธ":["hole"],"๐Ÿ’ฃ๏ธ":["bomb"],"๐Ÿ’ฌ":["speech"],"๐Ÿ‘โ€๐Ÿ—จ":["eye_bubble"],"๐Ÿ—จ๏ธ":["left_speech"],"๐Ÿ—ฏ๏ธ":["right_anger_speech"],"๐Ÿ’ญ":["thought"],"๐Ÿ’ค":["zzz"],"๐Ÿ‘‹":["wave"],"๐Ÿคš":["raised_backhand"],"๐Ÿ–๏ธ":["splayed_hand"],"โœ‹":["raised_hand"],"๐Ÿ––":["vulcan"],"๐Ÿ‘Œ":["ok_hand"],"๐Ÿค":["pinch"],"โœŒ๏ธ":["victory"],"๐Ÿคž":["fingers_crossed"],"๐ŸคŸ":["love_you_gesture"],"๐Ÿค˜":["metal"],"๐Ÿค™":["call_me"],"๐Ÿ‘ˆ๏ธ":["point_left"],"๐Ÿ‘‰๏ธ":["point_right"],"๐Ÿ‘†๏ธ":["backhand_point_up"],"๐Ÿ–•":["middle_finger"],"๐Ÿ‘‡๏ธ":["point_down"],"โ˜๏ธ":["point_up"],"๐Ÿ‘๏ธ":["thumbsup","+1","yes"],"๐Ÿ‘Ž๏ธ":["thumbsdown","-1","no"],"โœŠ":["fist"],"๐Ÿ‘Š":["punch"],"๐Ÿค›":["left_facing_fist"],"๐Ÿคœ":["right_facing_fist"],"๐Ÿ‘":["clap"],"๐Ÿ™Œ":["raised_hands"],"๐Ÿ‘":["open_hands"],"๐Ÿคฒ":["palms_up"],"๐Ÿค":["handshake"],"๐Ÿ™":["pray"],"โœ๏ธ":["writing_hand"],"๐Ÿ’…":["nail_care"],"๐Ÿคณ":["selfie"],"๐Ÿ’ช":["muscle","right_bicep"],"๐Ÿฆพ":["mech_arm"],"๐Ÿฆฟ":["mech_leg"],"๐Ÿฆต":["leg"],"๐Ÿฆถ":["foot"],"๐Ÿ‘‚๏ธ":["ear"],"๐Ÿฆป":["hearing_aid"],"๐Ÿ‘ƒ":["nose"],"๐Ÿง ":["brain"],"๐Ÿฆท":["tooth"],"๐Ÿฆด":["bone"],"๐Ÿ‘€":["eyes"],"๐Ÿ‘๏ธ":["eye"],"๐Ÿ‘…":["tongue"],"๐Ÿ‘„":["lips"],"๐Ÿ‘ถ":["baby"],"๐Ÿง’":["child"],"๐Ÿ‘ฆ":["boy"],"๐Ÿ‘ง":["girl"],"๐Ÿง‘":["adult"],"๐Ÿ‘ฑ":["blond_person"],"๐Ÿ‘จ":["man"],"๐Ÿง”":["bearded_person"],"๐Ÿ‘ฑโ€โ™‚๏ธ":["blond_man"],"๐Ÿ‘จโ€๐Ÿฆฐ":["red_haired_man"],"๐Ÿ‘จโ€๐Ÿฆฑ":["curly_haired_man"],"๐Ÿ‘จโ€๐Ÿฆณ":["white_haired_man"],"๐Ÿ‘จโ€๐Ÿฆฒ":["bald_man"],"๐Ÿ‘ฉ":["woman"],"๐Ÿ‘ฑโ€โ™€๏ธ":["blond_woman"],"๐Ÿ‘ฉโ€๐Ÿฆฐ":["red_haired_woman"],"๐Ÿ‘ฉโ€๐Ÿฆฑ":["curly_haired_woman"],"๐Ÿ‘ฉโ€๐Ÿฆณ":["white_haired_woman"],"๐Ÿ‘ฉโ€๐Ÿฆฒ":["bald_woman"],"๐Ÿง“":["older_adult"],"๐Ÿ‘ด":["older_man"],"๐Ÿ‘ต":["older_woman"],"๐Ÿ™":["person_frowning"],"๐Ÿ™โ€โ™‚๏ธ":["man_frowning"],"๐Ÿ™โ€โ™€๏ธ":["woman_frowning"],"๐Ÿ™Ž":["person_pouting"],"๐Ÿ™Žโ€โ™‚๏ธ":["man_pouting"],"๐Ÿ™Žโ€โ™€๏ธ":["woman_pouting"],"๐Ÿ™…":["person_gesturing_no"],"๐Ÿ™…โ€โ™‚๏ธ":["man_gesturing_no"],"๐Ÿ™…โ€โ™€๏ธ":["woman_gesturing_no"],"๐Ÿ™†":["person_gesturing_ok"],"๐Ÿ™†โ€โ™‚๏ธ":["man_gesturing_ok"],"๐Ÿ™†โ€โ™€๏ธ":["woman_gesturing_ok"],"๐Ÿ’":["person_tipping_hand"],"๐Ÿ’โ€โ™‚๏ธ":["man_tipping_hand"],"๐Ÿ’โ€โ™€๏ธ":["woman_tipping_hand"],"๐Ÿ™‹":["person_raising_hand"],"๐Ÿ™‹โ€โ™‚๏ธ":["man_raising_hand"],"๐Ÿ™‹โ€โ™€๏ธ":["woman_raising_hand"],"๐Ÿง":["person_deaf"],"๐Ÿงโ€โ™‚๏ธ":["man_deaf"],"๐Ÿงโ€โ™€๏ธ":["woman_deaf"],"๐Ÿ™‡":["person_bowing"],"๐Ÿ™‡โ€โ™‚๏ธ":["man_bowing"],"๐Ÿ™‡โ€โ™€๏ธ":["woman_bowing"],"๐Ÿคฆ":["person_facepalming"],"๐Ÿคฆโ€โ™‚๏ธ":["man_facepalming"],"๐Ÿคฆโ€โ™€๏ธ":["woman_facepalming"],"๐Ÿคท":["person_shrugging"],"๐Ÿคทโ€โ™‚๏ธ":["man_shrugging"],"๐Ÿคทโ€โ™€๏ธ":["woman_shrugging"],"๐Ÿ‘จโ€โš•๏ธ":["man_health_worker"],"๐Ÿ‘ฉโ€โš•๏ธ":["woman_health_worker"],"๐Ÿ‘จโ€๐ŸŽ“":["man_student"],"๐Ÿ‘ฉโ€๐ŸŽ“":["woman_student"],"๐Ÿ‘จโ€๐Ÿซ":["man_teacher"],"๐Ÿ‘ฉโ€๐Ÿซ":["woman_teacher"],"๐Ÿ‘จโ€โš–๏ธ":["man_judge"],"๐Ÿ‘ฉโ€โš–๏ธ":["woman_judge"],"๐Ÿ‘จโ€๐ŸŒพ":["man_farmer"],"๐Ÿ‘ฉโ€๐ŸŒพ":["woman_farmer"],"๐Ÿ‘จโ€๐Ÿณ":["man_cook"],"๐Ÿ‘ฉโ€๐Ÿณ":["woman_cook"],"๐Ÿ‘จโ€๐Ÿ”ง":["man_mechanic"],"๐Ÿ‘ฉโ€๐Ÿ”ง":["woman_mechanic"],"๐Ÿ‘จโ€๐Ÿญ":["man_factory_worker"],"๐Ÿ‘ฉโ€๐Ÿญ":["woman_factory_worker"],"๐Ÿ‘จโ€๐Ÿ’ผ":["man_office_worker"],"๐Ÿ‘ฉโ€๐Ÿ’ผ":["woman_office_worker"],"๐Ÿ‘จโ€๐Ÿ”ฌ":["man_scientist"],"๐Ÿ‘ฉโ€๐Ÿ”ฌ":["woman_scientist"],"๐Ÿ‘จโ€๐Ÿ’ป":["man_technologist"],"๐Ÿ‘ฉโ€๐Ÿ’ป":["woman_technologist"],"๐Ÿ‘จโ€๐ŸŽค":["man_singer"],"๐Ÿ‘ฉโ€๐ŸŽค":["woman_singer"],"๐Ÿ‘จโ€๐ŸŽจ":["man_artist"],"๐Ÿ‘ฉโ€๐ŸŽจ":["woman_artist"],"๐Ÿ‘จโ€โœˆ๏ธ":["man_pilot"],"๐Ÿ‘ฉโ€โœˆ๏ธ":["woman_pilot"],"๐Ÿ‘จโ€๐Ÿš€":["man_astronaut"],"๐Ÿ‘ฉโ€๐Ÿš€":["woman_astronaut"],"๐Ÿ‘จโ€๐Ÿš’":["man_firefighter"],"๐Ÿ‘ฉโ€๐Ÿš’":["woman_firefighter"],"๐Ÿ‘ฎ":["police_officer"],"๐Ÿ‘ฎโ€โ™‚๏ธ":["man_police_officer"],"๐Ÿ‘ฎโ€โ™€๏ธ":["woman_police_officer"],"๐Ÿ•ต๏ธ":["detective"],"๐Ÿ•ต๏ธโ€โ™‚๏ธ":["man_detective"],"๐Ÿ•ต๏ธโ€โ™€๏ธ":["woman_detective"],"๐Ÿ’‚":["guard"],"๐Ÿ’‚โ€โ™‚๏ธ":["man_guard"],"๐Ÿ’‚โ€โ™€๏ธ":["woman_guard"],"๐Ÿ‘ท":["construction_worker"],"๐Ÿ‘ทโ€โ™‚๏ธ":["man_construction_worker"],"๐Ÿ‘ทโ€โ™€๏ธ":["woman_construction_worker"],"๐Ÿคด":["prince"],"๐Ÿ‘ธ":["princess"],"๐Ÿ‘ณ":["person_turban"],"๐Ÿ‘ณโ€โ™‚๏ธ":["man_turban"],"๐Ÿ‘ณโ€โ™€๏ธ":["woman_turban"],"๐Ÿ‘ฒ":["man_chinese_cap"],"๐Ÿง•":["woman_headscarf"],"๐Ÿคต":["man_tuxedo"],"๐Ÿ‘ฐ":["bride_veil"],"๐Ÿคฐ":["pregnant_woman"],"๐Ÿคฑ":["breast_feeding"],"๐Ÿ‘ผ":["baby_angel"],"๐ŸŽ…":["santa"],"๐Ÿคถ":["mrs_claus"],"๐Ÿฆธ":["hero","superhero"],"๐Ÿฆธโ€โ™‚๏ธ":["man_hero"],"๐Ÿฆธโ€โ™€๏ธ":["woman_hero"],"๐Ÿฆน":["villain","supervillain"],"๐Ÿฆนโ€โ™‚๏ธ":["man_villain"],"๐Ÿฆนโ€โ™€๏ธ":["woman_villain"],"๐Ÿง™":["mage"],"๐Ÿง™โ€โ™‚๏ธ":["man_mage"],"๐Ÿง™โ€โ™€๏ธ":["woman_mage"],"๐Ÿงš":["fairy"],"๐Ÿงšโ€โ™‚๏ธ":["man_fairy"],"๐Ÿงšโ€โ™€๏ธ":["woman_fairy"],"๐Ÿง›":["vampire"],"๐Ÿง›โ€โ™‚๏ธ":["man_vampire"],"๐Ÿง›โ€โ™€๏ธ":["woman_vampire"],"๐Ÿงœ":["merperson"],"๐Ÿงœโ€โ™‚๏ธ":["merman"],"๐Ÿงœโ€โ™€๏ธ":["mermaid"],"๐Ÿง":["elf"],"๐Ÿงโ€โ™‚๏ธ":["man_elf"],"๐Ÿงโ€โ™€๏ธ":["woman_elf"],"๐Ÿงž":["genie"],"๐Ÿงžโ€โ™‚๏ธ":["man_genie"],"๐Ÿงžโ€โ™€๏ธ":["woman_genie"],"๐ŸงŸ":["zombie"],"๐ŸงŸโ€โ™‚๏ธ":["man_zombie"],"๐ŸงŸโ€โ™€๏ธ":["woman_zombie"],"๐Ÿ’†":["person_getting_massage"],"๐Ÿ’†โ€โ™‚๏ธ":["man_getting_face_massage"],"๐Ÿ’†โ€โ™€๏ธ":["woman_getting_face_massage"],"๐Ÿ’‡":["person_getting_haircut"],"๐Ÿ’‡โ€โ™‚๏ธ":["man_getting_haircut"],"๐Ÿ’‡โ€โ™€๏ธ":["woman_getting_haircut"],"๐Ÿšถ":["person_walking"],"๐Ÿšถโ€โ™‚๏ธ":["man_walking"],"๐Ÿšถโ€โ™€๏ธ":["woman_walking"],"๐Ÿง":["person_standing"],"๐Ÿงโ€โ™‚๏ธ":["man_standing"],"๐Ÿงโ€โ™€๏ธ":["woman_standing"],"๐ŸงŽ":["person_kneeling"],"๐ŸงŽโ€โ™‚๏ธ":["man_kneeling"],"๐ŸงŽโ€โ™€๏ธ":["woman_kneeling"],"๐Ÿ‘จโ€๐Ÿฆฏ":["man_probing_cane"],"๐Ÿ‘ฉโ€๐Ÿฆฏ":["woman_probing_cane"],"๐Ÿ‘จโ€๐Ÿฆผ":["man_motor_wheelchair"],"๐Ÿ‘ฉโ€๐Ÿฆผ":["woman_motor_wheelchair"],"๐Ÿ‘จโ€๐Ÿฆฝ":["man_wheelchair"],"๐Ÿ‘ฉโ€๐Ÿฆฝ":["woman_wheelchair"],"๐Ÿƒ":["person_running"],"๐Ÿƒโ€โ™‚๏ธ":["man_running"],"๐Ÿƒโ€โ™€๏ธ":["woman_running"],"๐Ÿ’ƒ":["dancer","woman_dancing"],"๐Ÿ•บ":["man_dancing"],"๐Ÿ•ด๏ธ":["levitate"],"๐Ÿ‘ฏ":["people_bunny_ears_partying"],"๐Ÿ‘ฏโ€โ™‚๏ธ":["men_bunny_ears_partying"],"๐Ÿ‘ฏโ€โ™€๏ธ":["women_bunny_ears_partying"],"๐Ÿง–":["person_steamy_room"],"๐Ÿง–โ€โ™‚๏ธ":["man_steamy_room"],"๐Ÿง–โ€โ™€๏ธ":["woman_steamy_room"],"๐Ÿง—":["person_climbing"],"๐Ÿง—โ€โ™‚๏ธ":["man_climbing"],"๐Ÿง—โ€โ™€๏ธ":["woman_climbing"],"๐Ÿคบ":["person_fencing"],"๐Ÿ‡":["horse_racing"],"โ›ท๏ธ":["skier"],"๐Ÿ‚๏ธ":["snowboarder"],"๐ŸŒ๏ธ":["person_golfing"],"๐ŸŒ๏ธโ€โ™‚๏ธ":["man_golfing"],"๐ŸŒ๏ธโ€โ™€๏ธ":["woman_golfing"],"๐Ÿ„๏ธ":["person_surfing"],"๐Ÿ„โ€โ™‚๏ธ":["man_surfing"],"๐Ÿ„โ€โ™€๏ธ":["woman_surfing"],"๐Ÿšฃ":["person_rowing_boat"],"๐Ÿšฃโ€โ™‚๏ธ":["man_rowing_boat"],"๐Ÿšฃโ€โ™€๏ธ":["woman_rowing_boat"],"๐ŸŠ๏ธ":["person_swimming"],"๐ŸŠโ€โ™‚๏ธ":["man_swimming"],"๐ŸŠโ€โ™€๏ธ":["woman_swimming"],"โ›น๏ธ":["person_bouncing_ball"],"โ›น๏ธโ€โ™‚๏ธ":["man_bouncing_ball"],"โ›น๏ธโ€โ™€๏ธ":["woman_bouncing_ball"],"๐Ÿ‹๏ธ":["person_lifting_weights"],"๐Ÿ‹๏ธโ€โ™‚๏ธ":["man_lifting_weights"],"๐Ÿ‹๏ธโ€โ™€๏ธ":["woman_lifting_weights"],"๐Ÿšด":["person_biking"],"๐Ÿšดโ€โ™‚๏ธ":["man_biking"],"๐Ÿšดโ€โ™€๏ธ":["woman_biking"],"๐Ÿšต":["person_mountain_biking"],"๐Ÿšตโ€โ™‚๏ธ":["man_mountain_biking"],"๐Ÿšตโ€โ™€๏ธ":["woman_mountain_biking"],"๐Ÿคธ":["person_cartwheel"],"๐Ÿคธโ€โ™‚๏ธ":["man_cartwheeling"],"๐Ÿคธโ€โ™€๏ธ":["woman_cartwheeling"],"๐Ÿคผ":["people_wrestling"],"๐Ÿคผโ€โ™‚๏ธ":["men_wrestling"],"๐Ÿคผโ€โ™€๏ธ":["women_wrestling"],"๐Ÿคฝ":["person_water_polo"],"๐Ÿคฝโ€โ™‚๏ธ":["man_water_polo"],"๐Ÿคฝโ€โ™€๏ธ":["woman_water_polo"],"๐Ÿคพ":["person_handball"],"๐Ÿคพโ€โ™‚๏ธ":["man_handball"],"๐Ÿคพโ€โ™€๏ธ":["woman_handball"],"๐Ÿคน":["person_juggling"],"๐Ÿคนโ€โ™‚๏ธ":["man_juggling"],"๐Ÿคนโ€โ™€๏ธ":["woman_juggling"],"๐Ÿง˜":["person_lotus_position"],"๐Ÿง˜โ€โ™‚๏ธ":["man_lotus_position"],"๐Ÿง˜โ€โ™€๏ธ":["woman_lotus_position"],"๐Ÿ›€":["bath"],"๐Ÿ›Œ":["in_bed"],"๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘":["holding_hands_people"],"๐Ÿ‘ญ":["holding_hands_ww"],"๐Ÿ‘ซ":["holding_hands_mw","holding_hands_wm"],"๐Ÿ‘ฌ":["holding_hands_mm"],"๐Ÿ’":["couple"],"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ":["kiss_mw","kiss_wm"],"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ":["kiss_mm"],"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ":["kiss_ww"],"๐Ÿ’‘":["couple_heart"],"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ":["couple_mw","couple_wm"],"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ":["couple_mm"],"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ":["couple_ww"],"๐Ÿ‘ช๏ธ":["family"],"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ":["family_mwb"],"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง":["family_mwg"],"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ":["family_mwgb"],"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ":["family_mwbb"],"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง":["family_mwgg"],"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ":["family_mmb"],"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง":["family_mmg"],"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ":["family_mmgb"],"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ":["family_mmbb"],"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง":["family_mmgg"],"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ":["family_wwb"],"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง":["family_wwg"],"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ":["family_wwgb"],"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ":["family_wwbb"],"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง":["family_wwgg"],"๐Ÿ‘จโ€๐Ÿ‘ฆ":["family_mb"],"๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ":["family_mbb"],"๐Ÿ‘จโ€๐Ÿ‘ง":["family_mg"],"๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ":["family_mgb"],"๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง":["family_mgg"],"๐Ÿ‘ฉโ€๐Ÿ‘ฆ":["family_wb"],"๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ":["family_wbb"],"๐Ÿ‘ฉโ€๐Ÿ‘ง":["family_wg"],"๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ":["family_wgb"],"๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง":["family_wgg"],"๐Ÿ—ฃ๏ธ":["speaking_head"],"๐Ÿ‘ค":["bust_silhouette"],"๐Ÿ‘ฅ":["busts_silhouette"],"๐Ÿ‘ฃ":["footprints"],"๐Ÿป":["tone_light","tone1"],"๐Ÿผ":["tone_medium_light","tone2"],"๐Ÿฝ":["tone_medium","tone3"],"๐Ÿพ":["tone_medium_dark","tone4"],"๐Ÿฟ":["tone_dark","tone5"],"๐Ÿฆฐ":["red_hair"],"๐Ÿฆฑ":["curly_hair"],"๐Ÿฆณ":["white_hair"],"๐Ÿฆฒ":["bald"],"๐Ÿต":["monkey_face"],"๐Ÿ’":["monkey"],"๐Ÿฆ":["gorilla"],"๐Ÿฆง":["orangutan"],"๐Ÿถ":["dog_face"],"๐Ÿ•๏ธ":["dog"],"๐Ÿฆฎ":["guide_dog"],"๐Ÿ•โ€๐Ÿฆบ":["service_dog"],"๐Ÿฉ":["poodle"],"๐Ÿบ":["wolf_face"],"๐ŸฆŠ":["fox_face"],"๐Ÿฆ":["raccoon"],"๐Ÿฑ":["cat_face"],"๐Ÿˆ๏ธ":["cat"],"๐Ÿฆ":["lion_face"],"๐Ÿฏ":["tiger_face"],"๐Ÿ…":["tiger"],"๐Ÿ†":["leopard"],"๐Ÿด":["horse_face"],"๐ŸŽ":["horse"],"๐Ÿฆ„":["unicorn_face"],"๐Ÿฆ“":["zebra"],"๐ŸฆŒ":["deer"],"๐Ÿฎ":["cow_face"],"๐Ÿ‚":["ox"],"๐Ÿƒ":["water_buffalo"],"๐Ÿ„":["cow"],"๐Ÿท":["pig_face"],"๐Ÿ–":["pig"],"๐Ÿ—":["boar"],"๐Ÿฝ":["pig_nose"],"๐Ÿ":["ram"],"๐Ÿ‘":["sheep"],"๐Ÿ":["goat"],"๐Ÿช":["camel"],"๐Ÿซ":["two_hump_camel"],"๐Ÿฆ™":["llama"],"๐Ÿฆ’":["giraffe"],"๐Ÿ˜":["elephant"],"๐Ÿฆ":["rhino"],"๐Ÿฆ›":["hippo"],"๐Ÿญ":["mouse_face"],"๐Ÿ":["mouse"],"๐Ÿ€":["rat"],"๐Ÿน":["hamster_face"],"๐Ÿฐ":["rabbit_face"],"๐Ÿ‡":["rabbit"],"๐Ÿฟ๏ธ":["chipmunk"],"๐Ÿฆ”":["hedgehog"],"๐Ÿฆ‡":["bat"],"๐Ÿป":["bear_face"],"๐Ÿจ":["koala_face"],"๐Ÿผ":["panda_face"],"๐Ÿฆฅ":["sloth"],"๐Ÿฆฆ":["otter"],"๐Ÿฆจ":["skunk"],"๐Ÿฆ˜":["kangaroo"],"๐Ÿฆก":["badger"],"๐Ÿพ":["feet"],"๐Ÿฆƒ":["turkey"],"๐Ÿ”":["chicken"],"๐Ÿ“":["rooster"],"๐Ÿฃ":["hatching_chick"],"๐Ÿค":["baby_chick"],"๐Ÿฅ":["hatched_chick"],"๐Ÿฆ๏ธ":["bird"],"๐Ÿง":["penguin"],"๐Ÿ•Š๏ธ":["dove"],"๐Ÿฆ…":["eagle"],"๐Ÿฆ†":["duck"],"๐Ÿฆข":["swan"],"๐Ÿฆ‰":["owl"],"๐Ÿฆฉ":["flamingo"],"๐Ÿฆš":["peacock"],"๐Ÿฆœ":["parrot"],"๐Ÿธ":["frog_face"],"๐ŸŠ":["crocodile"],"๐Ÿข":["turtle"],"๐ŸฆŽ":["lizard"],"๐Ÿ":["snake"],"๐Ÿฒ":["dragon_face"],"๐Ÿ‰":["dragon"],"๐Ÿฆ•":["sauropod"],"๐Ÿฆ–":["trex"],"๐Ÿณ":["spouting_whale"],"๐Ÿ‹":["whale"],"๐Ÿฌ":["dolphin"],"๐ŸŸ๏ธ":["fish"],"๐Ÿ ":["tropical_fish"],"๐Ÿก":["blowfish"],"๐Ÿฆˆ":["shark"],"๐Ÿ™":["octopus"],"๐Ÿš":["shell"],"๐ŸŒ":["snail"],"๐Ÿฆ‹":["butterfly"],"๐Ÿ›":["bug"],"๐Ÿœ":["ant"],"๐Ÿ":["bee"],"๐Ÿž":["beetle"],"๐Ÿฆ—":["cricket"],"๐Ÿ•ท๏ธ":["spider"],"๐Ÿ•ธ๏ธ":["spider_web"],"๐Ÿฆ‚":["scorpion"],"๐ŸฆŸ":["mosquito"],"๐Ÿฆ ":["microbe","germ"],"๐Ÿ’":["bouquet"],"๐ŸŒธ":["cherry_blossom"],"๐Ÿ’ฎ":["white_flower"],"๐Ÿต๏ธ":["rosette"],"๐ŸŒน":["rose"],"๐Ÿฅ€":["wilted_rose"],"๐ŸŒบ":["hibiscus"],"๐ŸŒป":["sunflower"],"๐ŸŒผ":["blossom"],"๐ŸŒท":["tulip"],"๐ŸŒฑ":["seedling"],"๐ŸŒฒ":["evergreen_tree"],"๐ŸŒณ":["deciduous_tree"],"๐ŸŒด":["palm_tree"],"๐ŸŒต":["cactus"],"๐ŸŒพ":["ear_of_rice"],"๐ŸŒฟ":["herb"],"โ˜˜๏ธ":["shamrock"],"๐Ÿ€":["four_leaf_clover"],"๐Ÿ":["maple_leaf"],"๐Ÿ‚":["fallen_leaf"],"๐Ÿƒ":["leaves"],"๐Ÿ‡":["grapes"],"๐Ÿˆ":["melon"],"๐Ÿ‰":["watermelon"],"๐ŸŠ":["tangerine"],"๐Ÿ‹":["lemon"],"๐ŸŒ":["banana"],"๐Ÿ":["pineapple"],"๐Ÿฅญ":["mango"],"๐ŸŽ":["apple"],"๐Ÿ":["green_apple"],"๐Ÿ":["pear"],"๐Ÿ‘":["peach"],"๐Ÿ’":["cherries"],"๐Ÿ“":["strawberry"],"๐Ÿฅ":["kiwi"],"๐Ÿ…":["tomato"],"๐Ÿฅฅ":["coconut"],"๐Ÿฅ‘":["avocado"],"๐Ÿ†":["eggplant"],"๐Ÿฅ”":["potato"],"๐Ÿฅ•":["carrot"],"๐ŸŒฝ":["corn"],"๐ŸŒถ๏ธ":["hot_pepper"],"๐Ÿฅ’":["cucumber"],"๐Ÿฅฌ":["leafy_green"],"๐Ÿฅฆ":["broccoli"],"๐Ÿง„":["garlic"],"๐Ÿง…":["onion"],"๐Ÿ„":["mushroom"],"๐Ÿฅœ":["peanuts"],"๐ŸŒฐ":["chestnut"],"๐Ÿž":["bread"],"๐Ÿฅ":["croissant"],"๐Ÿฅ–":["french_bread"],"๐Ÿฅจ":["pretzel"],"๐Ÿฅฏ":["bagel"],"๐Ÿฅž":["pancakes"],"๐Ÿง‡":["waffle"],"๐Ÿง€":["cheese"],"๐Ÿ–":["meat_on_bone"],"๐Ÿ—":["poultry_leg"],"๐Ÿฅฉ":["cut_of_meat"],"๐Ÿฅ“":["bacon"],"๐Ÿ”":["hamburger"],"๐ŸŸ":["fries"],"๐Ÿ•":["pizza"],"๐ŸŒญ":["hotdog"],"๐Ÿฅช":["sandwich"],"๐ŸŒฎ":["taco"],"๐ŸŒฏ":["burrito"],"๐Ÿฅ™":["stuffed_flatbread"],"๐Ÿง†":["falafel"],"๐Ÿฅš":["egg"],"๐Ÿณ":["cooking"],"๐Ÿฅ˜":["shallow_pan_of_food"],"๐Ÿฒ":["stew"],"๐Ÿฅฃ":["bowl_spoon"],"๐Ÿฅ—":["salad"],"๐Ÿฟ":["popcorn"],"๐Ÿงˆ":["butter"],"๐Ÿง‚":["salt"],"๐Ÿฅซ":["canned_food"],"๐Ÿฑ":["bento"],"๐Ÿ˜":["rice_cracker"],"๐Ÿ™":["rice_ball"],"๐Ÿš":["rice"],"๐Ÿ›":["curry"],"๐Ÿœ":["ramen"],"๐Ÿ":["spaghetti"],"๐Ÿ ":["sweet_potato"],"๐Ÿข":["oden"],"๐Ÿฃ":["sushi"],"๐Ÿค":["fried_shrimp"],"๐Ÿฅ":["fish_cake"],"๐Ÿฅฎ":["moon_cake"],"๐Ÿก":["dango"],"๐ŸฅŸ":["dumpling"],"๐Ÿฅ ":["fortune_cookie"],"๐Ÿฅก":["takeout_box"],"๐Ÿฆ€":["crab"],"๐Ÿฆž":["lobster"],"๐Ÿฆ":["shrimp"],"๐Ÿฆ‘":["squid"],"๐Ÿฆช":["oyster"],"๐Ÿฆ":["icecream"],"๐Ÿง":["shaved_ice"],"๐Ÿจ":["ice_cream"],"๐Ÿฉ":["doughnut"],"๐Ÿช":["cookie"],"๐ŸŽ‚":["birthday"],"๐Ÿฐ":["cake"],"๐Ÿง":["cupcake"],"๐Ÿฅง":["pie"],"๐Ÿซ":["chocolate_bar"],"๐Ÿฌ":["candy"],"๐Ÿญ":["lollipop"],"๐Ÿฎ":["custard"],"๐Ÿฏ":["honey_pot"],"๐Ÿผ":["baby_bottle"],"๐Ÿฅ›":["milk"],"โ˜•๏ธ":["coffee"],"๐Ÿต":["tea"],"๐Ÿถ":["sake"],"๐Ÿพ":["champagne"],"๐Ÿท":["wine_glass"],"๐Ÿธ๏ธ":["cocktail"],"๐Ÿน":["tropical_drink"],"๐Ÿบ":["beer"],"๐Ÿป":["beers"],"๐Ÿฅ‚":["champagne_glass"],"๐Ÿฅƒ":["tumbler_glass"],"๐Ÿฅค":["cup_straw"],"๐Ÿงƒ":["beverage_box","juice_box"],"๐Ÿง‰":["mate","yerba_mate"],"๐ŸงŠ":["ice"],"๐Ÿฅข":["chopsticks"],"๐Ÿฝ๏ธ":["fork_knife_plate"],"๐Ÿด":["utensils"],"๐Ÿฅ„":["spoon"],"๐Ÿ”ช":["knife"],"๐Ÿบ":["amphora"],"๐ŸŒ๏ธ":["earth_africa"],"๐ŸŒŽ๏ธ":["earth_americas"],"๐ŸŒ๏ธ":["earth_asia"],"๐ŸŒ":["globe"],"๐Ÿ—บ๏ธ":["map"],"๐Ÿ—พ":["japan"],"๐Ÿงญ":["compass"],"๐Ÿ”๏ธ":["snowy_mountain"],"โ›ฐ๏ธ":["mountain"],"๐ŸŒ‹":["volcano"],"๐Ÿ—ป":["mount_fuji"],"๐Ÿ•๏ธ":["camping"],"๐Ÿ–๏ธ":["beach"],"๐Ÿœ๏ธ":["desert"],"๐Ÿ๏ธ":["island"],"๐Ÿž๏ธ":["park"],"๐ŸŸ๏ธ":["stadium"],"๐Ÿ›๏ธ":["classical_building"],"๐Ÿ—๏ธ":["construction_site"],"๐Ÿงฑ":["brick"],"๐Ÿ˜๏ธ":["homes"],"๐Ÿš๏ธ":["house_abandoned"],"๐Ÿ ๏ธ":["house"],"๐Ÿก":["house_garden"],"๐Ÿข":["office"],"๐Ÿฃ":["ja_post_office"],"๐Ÿค":["post_office"],"๐Ÿฅ":["hospital"],"๐Ÿฆ":["bank"],"๐Ÿจ":["hotel"],"๐Ÿฉ":["love_hotel"],"๐Ÿช":["convenience_store"],"๐Ÿซ":["school"],"๐Ÿฌ":["department_store"],"๐Ÿญ๏ธ":["factory"],"๐Ÿฏ":["japanese_castle"],"๐Ÿฐ":["castle","european_castle"],"๐Ÿ’’":["wedding"],"๐Ÿ—ผ":["tokyo_tower"],"๐Ÿ—ฝ":["statue_of_liberty"],"โ›ช๏ธ":["church"],"๐Ÿ•Œ":["mosque"],"๐Ÿ›•":["hindu_temple"],"๐Ÿ•":["synagogue"],"โ›ฉ๏ธ":["shinto_shrine"],"๐Ÿ•‹":["kaaba"],"โ›ฒ๏ธ":["fountain"],"โ›บ๏ธ":["tent"],"๐ŸŒ":["foggy"],"๐ŸŒƒ":["night_stars"],"๐Ÿ™๏ธ":["cityscape"],"๐ŸŒ„":["sunrise_over_mountains"],"๐ŸŒ…":["sunrise"],"๐ŸŒ†":["dusk"],"๐ŸŒ‡":["sunset"],"๐ŸŒ‰":["bridge_at_night"],"โ™จ๏ธ":["hotsprings"],"๐ŸŽ ":["carousel_horse"],"๐ŸŽก":["ferris_wheel"],"๐ŸŽข":["roller_coaster"],"๐Ÿ’ˆ":["barber"],"๐ŸŽช":["circus_tent"],"๐Ÿš‚":["steam_locomotive"],"๐Ÿšƒ":["railway_car"],"๐Ÿš„":["bullettrain_side"],"๐Ÿš…":["bullettrain"],"๐Ÿš†":["train"],"๐Ÿš‡๏ธ":["metro"],"๐Ÿšˆ":["light_rail"],"๐Ÿš‰":["station"],"๐ŸšŠ":["tram"],"๐Ÿš":["monorail"],"๐Ÿšž":["mountain_railway"],"๐Ÿš‹":["tram_car"],"๐ŸšŒ":["bus"],"๐Ÿš๏ธ":["oncoming_bus"],"๐ŸšŽ":["trolleybus"],"๐Ÿš":["minibus"],"๐Ÿš‘๏ธ":["ambulance"],"๐Ÿš’":["fire_engine"],"๐Ÿš“":["police_car"],"๐Ÿš”๏ธ":["oncoming_police_car"],"๐Ÿš•":["taxi"],"๐Ÿš–":["oncoming_taxi"],"๐Ÿš—":["red_car"],"๐Ÿš˜๏ธ":["oncoming_automobile"],"๐Ÿš™":["blue_car"],"๐Ÿšš":["truck"],"๐Ÿš›":["lorry"],"๐Ÿšœ":["tractor"],"๐ŸŽ๏ธ":["race_car"],"๐Ÿ๏ธ":["motorcycle"],"๐Ÿ›ต":["motor_scooter"],"๐Ÿฆฝ":["wheelchair"],"๐Ÿฆผ":["motor_wheelchair"],"๐Ÿ›บ":["auto_rickshaw"],"๐Ÿšฒ๏ธ":["bike"],"๐Ÿ›ด":["scooter"],"๐Ÿ›น":["skateboard"],"๐Ÿš":["bus_stop"],"๐Ÿ›ฃ๏ธ":["motorway"],"๐Ÿ›ค๏ธ":["railway_track"],"๐Ÿ›ข๏ธ":["oil_drum"],"โ›ฝ๏ธ":["fuel_pump"],"๐Ÿšจ":["rotating_light","police_light"],"๐Ÿšฅ":["traffic_light"],"๐Ÿšฆ":["vertical_traffic_light"],"๐Ÿ›‘":["stop_sign","octagonal_sign"],"๐Ÿšง":["construction"],"โš“๏ธ":["anchor"],"โ›ต๏ธ":["sailboat"],"๐Ÿ›ถ":["canoe"],"๐Ÿšค":["speedboat"],"๐Ÿ›ณ๏ธ":["cruise_ship"],"โ›ด๏ธ":["ferry"],"๐Ÿ›ฅ๏ธ":["motorboat"],"๐Ÿšข":["ship"],"โœˆ๏ธ":["airplane"],"๐Ÿ›ฉ๏ธ":["small_airplane"],"๐Ÿ›ซ":["airplane_departure"],"๐Ÿ›ฌ":["airplane_arriving"],"๐Ÿช‚":["parachute"],"๐Ÿ’บ":["seat"],"๐Ÿš":["helicopter"],"๐ŸšŸ":["suspension_railway"],"๐Ÿš ":["mountain_cableway"],"๐Ÿšก":["aerial_tramway"],"๐Ÿ›ฐ๏ธ":["satellite"],"๐Ÿš€":["rocket"],"๐Ÿ›ธ":["flying_saucer"],"๐Ÿ›Ž๏ธ":["bellhop"],"๐Ÿงณ":["luggage"],"โŒ›๏ธ":["hourglass"],"โณ๏ธ":["hourglass_flowing"],"โŒš๏ธ":["watch"],"โฐ":["alarm_clock"],"โฑ๏ธ":["stopwatch"],"โฒ๏ธ":["timer"],"๐Ÿ•ฐ๏ธ":["clock"],"๐Ÿ•›๏ธ":["clock12"],"๐Ÿ•ง๏ธ":["clock1230"],"๐Ÿ•๏ธ":["clock1"],"๐Ÿ•œ๏ธ":["clock130"],"๐Ÿ•‘๏ธ":["clock2"],"๐Ÿ•๏ธ":["clock230"],"๐Ÿ•’๏ธ":["clock3"],"๐Ÿ•ž๏ธ":["clock330"],"๐Ÿ•“๏ธ":["clock4"],"๐Ÿ•Ÿ๏ธ":["clock430"],"๐Ÿ•”๏ธ":["clock5"],"๐Ÿ• ๏ธ":["clock530"],"๐Ÿ••๏ธ":["clock6"],"๐Ÿ•ก๏ธ":["clock630"],"๐Ÿ•–๏ธ":["clock7"],"๐Ÿ•ข๏ธ":["clock730"],"๐Ÿ•—๏ธ":["clock8"],"๐Ÿ•ฃ๏ธ":["clock830"],"๐Ÿ•˜๏ธ":["clock9"],"๐Ÿ•ค๏ธ":["clock930"],"๐Ÿ•™๏ธ":["clock10"],"๐Ÿ•ฅ๏ธ":["clock1030"],"๐Ÿ•š๏ธ":["clock11"],"๐Ÿ•ฆ๏ธ":["clock1130"],"๐ŸŒ‘":["new_moon"],"๐ŸŒ’":["waxing_crescent_moon"],"๐ŸŒ“":["first_quarter_moon"],"๐ŸŒ”":["waxing_gibbous_moon"],"๐ŸŒ•๏ธ":["full_moon"],"๐ŸŒ–":["waning_gibbous_moon"],"๐ŸŒ—":["last_quarter_moon"],"๐ŸŒ˜":["waning_crescent_moon"],"๐ŸŒ™":["crescent_moon"],"๐ŸŒš":["new_moon_face"],"๐ŸŒ›":["first_quarter_moon_face"],"๐ŸŒœ๏ธ":["last_quarter_moon_face"],"๐ŸŒก๏ธ":["thermometer"],"โ˜€๏ธ":["sun"],"๐ŸŒ":["full_moon_face"],"๐ŸŒž":["sun_face"],"๐Ÿช":["ringed_planet","saturn"],"โญ๏ธ":["star"],"๐ŸŒŸ":["star2","glowing_star"],"๐ŸŒ ":["star3","shooting_star"],"๐ŸŒŒ":["milky_way"],"โ˜๏ธ":["cloud"],"โ›…๏ธ":["partly_sunny"],"โ›ˆ๏ธ":["storm"],"๐ŸŒค๏ธ":["overcast"],"๐ŸŒฅ๏ธ":["cloudy"],"๐ŸŒฆ๏ธ":["sunshower"],"๐ŸŒง๏ธ":["rain"],"๐ŸŒจ๏ธ":["snow"],"๐ŸŒฉ๏ธ":["lightning"],"๐ŸŒช๏ธ":["tornado"],"๐ŸŒซ๏ธ":["fog"],"๐ŸŒฌ๏ธ":["wind_face"],"๐ŸŒ€":["cyclone"],"๐ŸŒˆ":["rainbow"],"๐ŸŒ‚":["closed_umbrella"],"โ˜‚๏ธ":["umbrella"],"โ˜”๏ธ":["umbrella_rain"],"โ›ฑ๏ธ":["beach_umbrella"],"โšก๏ธ":["zap","high_voltage"],"โ„๏ธ":["snowflake"],"โ˜ƒ๏ธ":["snowy_snowman"],"โ›„๏ธ":["snowman"],"โ˜„๏ธ":["comet"],"๐Ÿ”ฅ":["fire"],"๐Ÿ’ง":["droplet"],"๐ŸŒŠ":["ocean"],"๐ŸŽƒ":["jack_o_lantern"],"๐ŸŽ„":["christmas_tree","xmas_tree"],"๐ŸŽ†":["fireworks"],"๐ŸŽ‡":["sparkler"],"๐Ÿงจ":["firecracker"],"โœจ":["sparkles"],"๐ŸŽˆ":["balloon"],"๐ŸŽ‰":["tada","party"],"๐ŸŽŠ":["confetti_ball"],"๐ŸŽ‹":["tanabata_tree"],"๐ŸŽ":["bamboo","pine_decor"],"๐ŸŽŽ":["dolls"],"๐ŸŽ":["carp_streamer"],"๐ŸŽ":["wind_chime"],"๐ŸŽ‘":["moon_ceremony","rice_scene"],"๐Ÿงง":["red_envelope"],"๐ŸŽ€":["ribbon"],"๐ŸŽ":["gift"],"๐ŸŽ—๏ธ":["reminder_ribbon"],"๐ŸŽŸ๏ธ":["tickets","admission"],"๐ŸŽซ":["ticket"],"๐ŸŽ–๏ธ":["military_medal"],"๐Ÿ†๏ธ":["trophy"],"๐Ÿ…":["medal"],"๐Ÿฅ‡":["first_place"],"๐Ÿฅˆ":["second_place"],"๐Ÿฅ‰":["third_place"],"โšฝ๏ธ":["soccer"],"โšพ๏ธ":["baseball"],"๐ŸฅŽ":["softball"],"๐Ÿ€":["basketball"],"๐Ÿ":["volleyball"],"๐Ÿˆ":["football"],"๐Ÿ‰":["rugby"],"๐ŸŽพ":["tennis"],"๐Ÿฅ":["flying_disc"],"๐ŸŽณ":["bowling"],"๐Ÿ":["cricket_game"],"๐Ÿ‘":["field_hockey"],"๐Ÿ’":["hockey"],"๐Ÿฅ":["lacrosse"],"๐Ÿ“":["ping_pong"],"๐Ÿธ":["badminton"],"๐ŸฅŠ":["boxing_glove"],"๐Ÿฅ‹":["gi","martial_arts_uniform"],"๐Ÿฅ…":["goal"],"โ›ณ๏ธ":["golf"],"โ›ธ๏ธ":["ice_skate"],"๐ŸŽฃ":["fishing_pole"],"๐Ÿคฟ":["diving_mask","scuba_mask"],"๐ŸŽฝ":["running_shirt"],"๐ŸŽฟ":["ski"],"๐Ÿ›ท":["sled"],"๐ŸฅŒ":["curling_stone"],"๐ŸŽฏ":["dart"],"๐Ÿช€":["yoyo"],"๐Ÿช":["kite"],"๐ŸŽฑ":["8ball"],"๐Ÿ”ฎ":["crystal_ball"],"๐Ÿงฟ":["nazar_amulet"],"๐ŸŽฎ๏ธ":["video_game"],"๐Ÿ•น๏ธ":["joystick"],"๐ŸŽฐ":["slot_machine"],"๐ŸŽฒ":["game_die"],"๐Ÿงฉ":["jigsaw","puzzle_piece"],"๐Ÿงธ":["teddy_bear"],"โ™ ๏ธ":["spades"],"โ™ฅ๏ธ":["hearts"],"โ™ฆ๏ธ":["diamonds"],"โ™ฃ๏ธ":["clubs"],"โ™Ÿ๏ธ":["chess_pawn"],"๐Ÿƒ":["black_joker"],"๐Ÿ€„๏ธ":["mahjong"],"๐ŸŽด":["flower_cards"],"๐ŸŽญ๏ธ":["performing_arts"],"๐Ÿ–ผ๏ธ":["frame_photo"],"๐ŸŽจ":["art","palette"],"๐Ÿงต":["spool"],"๐Ÿงถ":["yarn"],"๐Ÿ‘“๏ธ":["glasses"],"๐Ÿ•ถ๏ธ":["sunglasses"],"๐Ÿฅฝ":["goggles"],"๐Ÿฅผ":["lab_coat"],"๐Ÿฆบ":["safety_vest"],"๐Ÿ‘”":["necktie","tie"],"๐Ÿ‘•":["shirt"],"๐Ÿ‘–":["jeans"],"๐Ÿงฃ":["scarf"],"๐Ÿงค":["gloves"],"๐Ÿงฅ":["coat"],"๐Ÿงฆ":["socks"],"๐Ÿ‘—":["dress"],"๐Ÿ‘˜":["kimono"],"๐Ÿฅป":["sari"],"๐Ÿฉฑ":["one_piece_swimsuit"],"๐Ÿฉฒ":["briefs"],"๐Ÿฉณ":["shorts"],"๐Ÿ‘™":["bikini"],"๐Ÿ‘š":["blouse","womans_clothes"],"๐Ÿ‘›":["purse"],"๐Ÿ‘œ":["handbag"],"๐Ÿ‘":["pouch","clutch_bag"],"๐Ÿ›๏ธ":["shopping_bags"],"๐ŸŽ’":["backpack"],"๐Ÿ‘ž":["dress_shoe","mans_shoe"],"๐Ÿ‘Ÿ":["sneaker","athletic_shoe"],"๐Ÿฅพ":["hiking_boot"],"๐Ÿฅฟ":["flat_shoe"],"๐Ÿ‘ ":["high_heel"],"๐Ÿ‘ก":["womans_sandal"],"๐Ÿฉฐ":["ballet_shoes"],"๐Ÿ‘ข":["womans_boot"],"๐Ÿ‘‘":["crown"],"๐Ÿ‘’":["womans_hat"],"๐ŸŽฉ":["top_hat"],"๐ŸŽ“๏ธ":["graduation_cap"],"๐Ÿงข":["billed_cap"],"โ›‘๏ธ":["helmet_cross"],"๐Ÿ“ฟ":["prayer_beads"],"๐Ÿ’„":["lipstick"],"๐Ÿ’":["ring"],"๐Ÿ’Ž":["gem"],"๐Ÿ”‡":["mute","no_sound"],"๐Ÿ”ˆ๏ธ":["speaker","low_sound"],"๐Ÿ”‰":["sound"],"๐Ÿ”Š":["loud_sound"],"๐Ÿ“ข":["loudspeaker"],"๐Ÿ“ฃ":["megaphone"],"๐Ÿ“ฏ":["postal_horn"],"๐Ÿ””":["bell"],"๐Ÿ”•":["no_bell"],"๐ŸŽผ":["musical_score"],"๐ŸŽต":["musical_note"],"๐ŸŽถ":["musical_notes"],"๐ŸŽ™๏ธ":["studio_microphone"],"๐ŸŽš๏ธ":["level_slider"],"๐ŸŽ›๏ธ":["control_knobs"],"๐ŸŽค":["microphone"],"๐ŸŽง๏ธ":["headphones"],"๐Ÿ“ป๏ธ":["radio"],"๐ŸŽท":["saxophone"],"๐ŸŽธ":["guitar"],"๐ŸŽน":["musical_keyboard"],"๐ŸŽบ":["trumpet"],"๐ŸŽป":["violin"],"๐Ÿช•":["banjo"],"๐Ÿฅ":["drum"],"๐Ÿ“ฑ":["mobile","iphone","android"],"๐Ÿ“ฒ":["mobile_calling"],"โ˜Ž๏ธ":["telephone"],"๐Ÿ“ž":["telephone_receiver"],"๐Ÿ“Ÿ๏ธ":["pager"],"๐Ÿ“ ":["fax"],"๐Ÿ”‹":["battery"],"๐Ÿ”Œ":["electric_plug"],"๐Ÿ’ป๏ธ":["laptop"],"๐Ÿ–ฅ๏ธ":["desktop","computer"],"๐Ÿ–จ๏ธ":["printer"],"โŒจ๏ธ":["keyboard"],"๐Ÿ–ฑ๏ธ":["computer_mouse"],"๐Ÿ–ฒ๏ธ":["trackball"],"๐Ÿ’ฝ":["minidisc"],"๐Ÿ’พ":["floppy_disk"],"๐Ÿ’ฟ๏ธ":["cd","disk"],"๐Ÿ“€":["dvd"],"๐Ÿงฎ":["abacus"],"๐ŸŽฅ":["movie_camera"],"๐ŸŽž๏ธ":["film_frames"],"๐Ÿ“ฝ๏ธ":["projector"],"๐ŸŽฌ๏ธ":["clapper"],"๐Ÿ“บ๏ธ":["tv"],"๐Ÿ“ท๏ธ":["camera"],"๐Ÿ“ธ":["camera_flash"],"๐Ÿ“น๏ธ":["video_camera"],"๐Ÿ“ผ":["vhs"],"๐Ÿ”๏ธ":["mag"],"๐Ÿ”Ž":["mag_right"],"๐Ÿ•ฏ๏ธ":["candle"],"๐Ÿ’ก":["bulb","light_bulb"],"๐Ÿ”ฆ":["flashlight"],"๐Ÿฎ":["red_lantern"],"๐Ÿช”":["diya_lamp"],"๐Ÿ“”":["decorative_notebook"],"๐Ÿ“•":["closed_book"],"๐Ÿ“–":["book"],"๐Ÿ“—":["green_book"],"๐Ÿ“˜":["blue_book"],"๐Ÿ“™":["orange_book"],"๐Ÿ“š๏ธ":["books"],"๐Ÿ““":["notebook"],"๐Ÿ“’":["ledger"],"๐Ÿ“ƒ":["page_curl"],"๐Ÿ“œ":["scroll"],"๐Ÿ“„":["page_facing_up"],"๐Ÿ“ฐ":["newspaper"],"๐Ÿ—ž๏ธ":["rolled_newspaper"],"๐Ÿ“‘":["bookmark_tabs"],"๐Ÿ”–":["bookmark"],"๐Ÿท๏ธ":["label"],"๐Ÿ’ฐ๏ธ":["moneybag"],"๐Ÿ’ด":["yen"],"๐Ÿ’ต":["dollar"],"๐Ÿ’ถ":["euro"],"๐Ÿ’ท":["pound"],"๐Ÿ’ธ":["money_wings"],"๐Ÿ’ณ๏ธ":["credit_card"],"๐Ÿงพ":["receipt"],"๐Ÿ’น":["ja_chart"],"๐Ÿ’ฑ":["currency_exchange"],"๐Ÿ’ฒ":["dollar_sign"],"โœ‰๏ธ":["envelope"],"๐Ÿ“ง":["email"],"๐Ÿ“จ":["incoming_envelope"],"๐Ÿ“ฉ":["envelope_arrow"],"๐Ÿ“ค๏ธ":["outbox_tray"],"๐Ÿ“ฅ๏ธ":["inbox_tray"],"๐Ÿ“ฆ๏ธ":["package"],"๐Ÿ“ซ๏ธ":["mailbox"],"๐Ÿ“ช๏ธ":["mailbox_closed"],"๐Ÿ“ฌ๏ธ":["mailbox_mail"],"๐Ÿ“ญ๏ธ":["mailbox_no_mail"],"๐Ÿ“ฎ":["postbox"],"๐Ÿ—ณ๏ธ":["ballot_box"],"โœ๏ธ":["pencil"],"โœ’๏ธ":["black_nib"],"๐Ÿ–‹๏ธ":["fountain_pen"],"๐Ÿ–Š๏ธ":["pen"],"๐Ÿ–Œ๏ธ":["paintbrush"],"๐Ÿ–๏ธ":["crayon"],"๐Ÿ“":["memo"],"๐Ÿ’ผ":["briefcase"],"๐Ÿ“":["file_folder"],"๐Ÿ“‚":["open_file_folder"],"๐Ÿ—‚๏ธ":["dividers"],"๐Ÿ“…":["date","calendar"],"๐Ÿ“†":["torn_calendar"],"๐Ÿ—’๏ธ":["notepad_spiral"],"๐Ÿ—“๏ธ":["calendar_spiral"],"๐Ÿ“‡":["card_index"],"๐Ÿ“ˆ":["chart_up"],"๐Ÿ“‰":["chart_down"],"๐Ÿ“Š":["bar_chart"],"๐Ÿ“‹๏ธ":["clipboard"],"๐Ÿ“Œ":["pushpin"],"๐Ÿ“":["round_pushpin"],"๐Ÿ“Ž":["paperclip"],"๐Ÿ–‡๏ธ":["paperclips"],"๐Ÿ“":["straight_ruler"],"๐Ÿ“":["triangular_ruler"],"โœ‚๏ธ":["scissors"],"๐Ÿ—ƒ๏ธ":["card_box"],"๐Ÿ—„๏ธ":["file_cabinet"],"๐Ÿ—‘๏ธ":["trashcan","wastebasket"],"๐Ÿ”’๏ธ":["lock"],"๐Ÿ”“๏ธ":["unlock"],"๐Ÿ”":["locked_pen"],"๐Ÿ”":["locked_key"],"๐Ÿ”‘":["key"],"๐Ÿ—๏ธ":["old_key"],"๐Ÿ”จ":["hammer"],"๐Ÿช“":["axe"],"โ›๏ธ":["pick"],"โš’๏ธ":["hammer_pick"],"๐Ÿ› ๏ธ":["tools","hammer_wrench"],"๐Ÿ—ก๏ธ":["dagger"],"โš”๏ธ":["crossed_swords"],"๐Ÿ”ซ":["gun","pistol"],"๐Ÿน":["bow"],"๐Ÿ›ก๏ธ":["shield"],"๐Ÿ”ง":["wrench"],"๐Ÿ”ฉ":["nut_and_bolt"],"โš™๏ธ":["gear"],"๐Ÿ—œ๏ธ":["clamp","compression"],"โš–๏ธ":["scales"],"๐Ÿฆฏ":["probing_cane"],"๐Ÿ”—":["link"],"โ›“๏ธ":["chains"],"๐Ÿงฐ":["toolbox"],"๐Ÿงฒ":["magnet"],"โš—๏ธ":["alembic"],"๐Ÿงช":["test_tube"],"๐Ÿงซ":["petri_dish"],"๐Ÿงฌ":["dna","double_helix"],"๐Ÿ”ฌ":["microscope"],"๐Ÿ”ญ":["telescope"],"๐Ÿ“ก":["satellite_antenna"],"๐Ÿ’‰":["syringe"],"๐Ÿฉธ":["blood_drop"],"๐Ÿ’Š":["pill"],"๐Ÿฉน":["bandaid","adhesive_bandage"],"๐Ÿฉบ":["stethoscope"],"๐Ÿšช":["door"],"๐Ÿ›๏ธ":["bed"],"๐Ÿ›‹๏ธ":["couch"],"๐Ÿช‘":["chair"],"๐Ÿšฝ":["toilet"],"๐Ÿšฟ":["shower"],"๐Ÿ›":["bathtub"],"๐Ÿช’":["razor"],"๐Ÿงด":["lotion"],"๐Ÿงท":["safety_pin"],"๐Ÿงน":["broom"],"๐Ÿงบ":["basket"],"๐Ÿงป":["toilet_paper"],"๐Ÿงผ":["soap"],"๐Ÿงฝ":["sponge"],"๐Ÿงฏ":["fire_extinguisher"],"๐Ÿ›’":["shopping_cart"],"๐Ÿšฌ":["cigarette","smoking"],"โšฐ๏ธ":["coffin"],"โšฑ๏ธ":["urn"],"๐Ÿ—ฟ":["moai"],"๐Ÿง":["atm"],"๐Ÿšฎ":["litter_bin"],"๐Ÿšฐ":["potable_water"],"โ™ฟ๏ธ":["handicapped"],"๐Ÿšน๏ธ":["mens"],"๐Ÿšบ๏ธ":["womens"],"๐Ÿšป":["restroom","bathroom"],"๐Ÿšผ๏ธ":["baby_symbol"],"๐Ÿšพ":["wc"],"๐Ÿ›‚":["passport_control"],"๐Ÿ›ƒ":["customs"],"๐Ÿ›„":["baggage_claim"],"๐Ÿ›…":["left_luggage"],"โš ๏ธ":["warning"],"๐Ÿšธ":["children_crossing"],"โ›”๏ธ":["no_entry"],"๐Ÿšซ":["no_entry_sign"],"๐Ÿšณ":["no_bicycles"],"๐Ÿšญ๏ธ":["no_smoking"],"๐Ÿšฏ":["do_not_litter"],"๐Ÿšฑ":["non_potable_water"],"๐Ÿšท":["no_pedestrians"],"๐Ÿ“ต":["no_mobile_phones"],"๐Ÿ”ž":["underage"],"โ˜ข๏ธ":["radioactive"],"โ˜ฃ๏ธ":["biohazard"],"โฌ†๏ธ":["arrow_up"],"โ†—๏ธ":["arrow_upper_right"],"โžก๏ธ":["arrow_right"],"โ†˜๏ธ":["arrow_lower_right"],"โฌ‡๏ธ":["arrow_down"],"โ†™๏ธ":["arrow_lower_left"],"โฌ…๏ธ":["arrow_left"],"โ†–๏ธ":["arrow_upper_left"],"โ†•๏ธ":["arrow_up_down"],"โ†”๏ธ":["arrow_left_right"],"โ†ฉ๏ธ":["arrow_left_hook"],"โ†ช๏ธ":["arrow_right_hook"],"โคด๏ธ":["arrow_heading_up"],"โคต๏ธ":["arrow_heading_down"],"๐Ÿ”ƒ":["clockwise"],"๐Ÿ”„":["counter_clockwise"],"๐Ÿ”™":["back"],"๐Ÿ”š":["end"],"๐Ÿ”›":["on"],"๐Ÿ”œ":["soon"],"๐Ÿ”":["top"],"๐Ÿ›":["place_of_worship"],"โš›๏ธ":["atom"],"๐Ÿ•‰๏ธ":["om_symbol"],"โœก๏ธ":["star_of_david"],"โ˜ธ๏ธ":["wheel_of_dharma"],"โ˜ฏ๏ธ":["yin_yang"],"โœ๏ธ":["cross"],"โ˜ฆ๏ธ":["orthodox_cross"],"โ˜ช๏ธ":["star_and_crescent"],"โ˜ฎ๏ธ":["peace"],"๐Ÿ•Ž":["menorah"],"๐Ÿ”ฏ":["six_pointed_star"],"โ™ˆ๏ธ":["aries"],"โ™‰๏ธ":["taurus"],"โ™Š๏ธ":["gemini"],"โ™‹๏ธ":["cancer"],"โ™Œ๏ธ":["leo"],"โ™๏ธ":["virgo"],"โ™Ž๏ธ":["libra"],"โ™๏ธ":["scorpius"],"โ™๏ธ":["sagittarius"],"โ™‘๏ธ":["capricorn"],"โ™’๏ธ":["aquarius"],"โ™“๏ธ":["pisces"],"โ›Ž":["ophiuchus"],"๐Ÿ”€":["shuffle"],"๐Ÿ”":["repeat"],"๐Ÿ”‚":["repeat_single"],"โ–ถ๏ธ":["play"],"โฉ๏ธ":["fast_forward"],"โญ๏ธ":["next_track"],"โฏ๏ธ":["play_pause"],"โ—€๏ธ":["reverse"],"โช๏ธ":["rewind"],"โฎ๏ธ":["previous_track"],"๐Ÿ”ผ":["up_button"],"โซ":["fast_up_button"],"๐Ÿ”ฝ":["down_button"],"โฌ":["fast_down_button"],"โธ๏ธ":["pause"],"โน๏ธ":["stop"],"โบ๏ธ":["record"],"โ๏ธ":["eject"],"๐ŸŽฆ":["cinema"],"๐Ÿ”…":["dim","low_brightness"],"๐Ÿ”†":["bright","high_brightness"],"๐Ÿ“ถ":["signal_strength","antenna_bars"],"๐Ÿ“ณ":["vibration_mode"],"๐Ÿ“ด":["mobile_phone_off"],"โ™€๏ธ":["female","female_sign"],"โ™‚๏ธ":["male","male_sign"],"โš•๏ธ":["medical"],"โ™พ๏ธ":["infinity"],"โ™ป๏ธ":["recycle"],"โšœ๏ธ":["fleur-de-lis"],"๐Ÿ”ฑ":["trident"],"๐Ÿ“›":["name_badge"],"๐Ÿ”ฐ":["ja_beginner"],"โญ•๏ธ":["o"],"โœ…":["white_check_mark"],"โ˜‘๏ธ":["checked_ballot"],"โœ”๏ธ":["check_mark"],"โœ–๏ธ":["multiplication"],"โŒ":["x","cross_mark"],"โŽ":["cross_mark_button"],"โž•":["plus"],"โž–":["minus"],"โž—":["division"],"โžฐ":["curly_loop"],"โžฟ":["double_curly_loop"],"ใ€ฝ๏ธ":["part_alternation_mark"],"โœณ๏ธ":["eight_spoked_asterisk"],"โœด๏ธ":["eight_pointed_star"],"โ‡๏ธ":["sparkle"],"โ€ผ๏ธ":["bangbang","double_exclamation"],"โ‰๏ธ":["interrobang","exclamation_question"],"โ“๏ธ":["question"],"โ”":["white_question"],"โ•":["white_exclamation"],"โ—๏ธ":["exclamation"],"ใ€ฐ๏ธ":["wavy_dash"],"ยฉ๏ธ":["copyright"],"ยฎ๏ธ":["registered"],"โ„ข๏ธ":["tm"],"#๏ธโƒฃ":["hash"],"*๏ธโƒฃ":["asterisk"],"0๏ธโƒฃ":["zero"],"1๏ธโƒฃ":["one"],"2๏ธโƒฃ":["two"],"3๏ธโƒฃ":["three"],"4๏ธโƒฃ":["four"],"5๏ธโƒฃ":["five"],"6๏ธโƒฃ":["six"],"7๏ธโƒฃ":["seven"],"8๏ธโƒฃ":["eight"],"9๏ธโƒฃ":["nine"],"๐Ÿ”Ÿ":["ten"],"๐Ÿ” ":["upper_abcd"],"๐Ÿ”ก":["abcd"],"๐Ÿ”ข":["1234"],"๐Ÿ”ฃ":["symbols"],"๐Ÿ”ค":["abc"],"๐Ÿ…ฐ๏ธ":["a_blood"],"๐Ÿ†Ž":["ab_blood"],"๐Ÿ…ฑ๏ธ":["b_blood"],"๐Ÿ†‘":["cl"],"๐Ÿ†’":["cool"],"๐Ÿ†“":["free"],"โ„น๏ธ":["info"],"๐Ÿ†”":["id"],"โ“‚๏ธ":["m"],"๐Ÿ†•":["new"],"๐Ÿ†–":["ng"],"๐Ÿ…พ๏ธ":["o_blood"],"๐Ÿ†—":["ok"],"๐Ÿ…ฟ๏ธ":["p"],"๐Ÿ†˜":["sos"],"๐Ÿ†™":["up"],"๐Ÿ†š":["vs"],"๐Ÿˆ":["ja_here","koko"],"๐Ÿˆ‚๏ธ":["ja_service_charge"],"๐Ÿˆท๏ธ":["ja_monthly_amount"],"๐Ÿˆถ":["ja_not_free_of_carge"],"๐Ÿˆฏ๏ธ":["ja_reserved"],"๐Ÿ‰":["ja_bargain"],"๐Ÿˆน":["ja_discount"],"๐Ÿˆš๏ธ":["ja_free_of_charge"],"๐Ÿˆฒ":["ja_prohibited"],"๐Ÿ‰‘":["ja_acceptable"],"๐Ÿˆธ":["ja_application"],"๐Ÿˆด":["ja_passing_grade"],"๐Ÿˆณ":["ja_vacancy"],"ใŠ—๏ธ":["ja_congratulations"],"ใŠ™๏ธ":["ja_secret"],"๐Ÿˆบ":["ja_open_for_business"],"๐Ÿˆต":["ja_no_vacancy"],"๐Ÿ”ด":["red_circle"],"๐ŸŸ ":["orange_circle"],"๐ŸŸก":["yellow_circle"],"๐ŸŸข":["green_circle"],"๐Ÿ”ต":["blue_circle"],"๐ŸŸฃ":["purple_circle"],"๐ŸŸค":["brown_circle"],"โšซ๏ธ":["black_circle"],"โšช๏ธ":["white_circle"],"๐ŸŸฅ":["red_square"],"๐ŸŸง":["orange_square"],"๐ŸŸจ":["yellow_square"],"๐ŸŸฉ":["green_square"],"๐ŸŸฆ":["blue_square"],"๐ŸŸช":["purple_square"],"๐ŸŸซ":["brown_square"],"โฌ›๏ธ":["large_black_square"],"โฌœ๏ธ":["large_white_square"],"โ—ผ๏ธ":["medium_black_square"],"โ—ป๏ธ":["medium_white_square"],"โ—พ๏ธ":["medium_small_black_square"],"โ—ฝ๏ธ":["medium_small_white_square"],"โ–ช๏ธ":["small_black_square"],"โ–ซ๏ธ":["small_white_square"],"๐Ÿ”ถ":["large_orange_diamond"],"๐Ÿ”ท":["large_blue_diamond"],"๐Ÿ”ธ":["small_orange_diamond"],"๐Ÿ”น":["small_blue_diamond"],"๐Ÿ”บ":["up_red_triangle"],"๐Ÿ”ป":["down_red_triangle"],"๐Ÿ’ ":["diamond_dot"],"๐Ÿ”˜":["radio_button"],"๐Ÿ”ณ":["white_square_button"],"๐Ÿ”ฒ":["black_square_button"],"๐Ÿ":["checkered_flag"],"๐Ÿšฉ":["triangle_flag"],"๐ŸŽŒ":["crossed_flags"],"๐Ÿด":["black_flag"],"๐Ÿณ๏ธ":["white_flag"],"๐Ÿณ๏ธโ€๐ŸŒˆ":["rainbow_flag"],"๐Ÿดโ€โ˜ ๏ธ":["pirate_flag","jolly_roger"],"๐Ÿ‡ฆ๐Ÿ‡จ":["flag_ac"],"๐Ÿ‡ฆ๐Ÿ‡ฉ":["flag_ad"],"๐Ÿ‡ฆ๐Ÿ‡ช":["flag_ae"],"๐Ÿ‡ฆ๐Ÿ‡ซ":["flag_af"],"๐Ÿ‡ฆ๐Ÿ‡ฌ":["flag_ag"],"๐Ÿ‡ฆ๐Ÿ‡ฎ":["flag_ai"],"๐Ÿ‡ฆ๐Ÿ‡ฑ":["flag_al"],"๐Ÿ‡ฆ๐Ÿ‡ฒ":["flag_am"],"๐Ÿ‡ฆ๐Ÿ‡ด":["flag_ao"],"๐Ÿ‡ฆ๐Ÿ‡ถ":["flag_aq"],"๐Ÿ‡ฆ๐Ÿ‡ท":["flag_ar"],"๐Ÿ‡ฆ๐Ÿ‡ธ":["flag_as"],"๐Ÿ‡ฆ๐Ÿ‡น":["flag_at"],"๐Ÿ‡ฆ๐Ÿ‡บ":["flag_au"],"๐Ÿ‡ฆ๐Ÿ‡ผ":["flag_aw"],"๐Ÿ‡ฆ๐Ÿ‡ฝ":["flag_ax"],"๐Ÿ‡ฆ๐Ÿ‡ฟ":["flag_az"],"๐Ÿ‡ง๐Ÿ‡ฆ":["flag_ba"],"๐Ÿ‡ง๐Ÿ‡ง":["flag_bb"],"๐Ÿ‡ง๐Ÿ‡ฉ":["flag_bd"],"๐Ÿ‡ง๐Ÿ‡ช":["flag_be"],"๐Ÿ‡ง๐Ÿ‡ซ":["flag_bf"],"๐Ÿ‡ง๐Ÿ‡ฌ":["flag_bg"],"๐Ÿ‡ง๐Ÿ‡ญ":["flag_bh"],"๐Ÿ‡ง๐Ÿ‡ฎ":["flag_bi"],"๐Ÿ‡ง๐Ÿ‡ฏ":["flag_bj"],"๐Ÿ‡ง๐Ÿ‡ฑ":["flag_bl"],"๐Ÿ‡ง๐Ÿ‡ฒ":["flag_bm"],"๐Ÿ‡ง๐Ÿ‡ณ":["flag_bn"],"๐Ÿ‡ง๐Ÿ‡ด":["flag_bo"],"๐Ÿ‡ง๐Ÿ‡ถ":["flag_bq"],"๐Ÿ‡ง๐Ÿ‡ท":["flag_br"],"๐Ÿ‡ง๐Ÿ‡ธ":["flag_bs"],"๐Ÿ‡ง๐Ÿ‡น":["flag_bt"],"๐Ÿ‡ง๐Ÿ‡ป":["flag_bv"],"๐Ÿ‡ง๐Ÿ‡ผ":["flag_bw"],"๐Ÿ‡ง๐Ÿ‡พ":["flag_by"],"๐Ÿ‡ง๐Ÿ‡ฟ":["flag_bz"],"๐Ÿ‡จ๐Ÿ‡ฆ":["flag_ca"],"๐Ÿ‡จ๐Ÿ‡จ":["flag_cc"],"๐Ÿ‡จ๐Ÿ‡ฉ":["flag_cd"],"๐Ÿ‡จ๐Ÿ‡ซ":["flag_cf"],"๐Ÿ‡จ๐Ÿ‡ฌ":["flag_cg"],"๐Ÿ‡จ๐Ÿ‡ญ":["flag_ch"],"๐Ÿ‡จ๐Ÿ‡ฎ":["flag_ci"],"๐Ÿ‡จ๐Ÿ‡ฐ":["flag_ck"],"๐Ÿ‡จ๐Ÿ‡ฑ":["flag_cl"],"๐Ÿ‡จ๐Ÿ‡ฒ":["flag_cm"],"๐Ÿ‡จ๐Ÿ‡ณ":["flag_cn"],"๐Ÿ‡จ๐Ÿ‡ด":["flag_co"],"๐Ÿ‡จ๐Ÿ‡ต":["flag_cp"],"๐Ÿ‡จ๐Ÿ‡ท":["flag_cr"],"๐Ÿ‡จ๐Ÿ‡บ":["flag_cu"],"๐Ÿ‡จ๐Ÿ‡ป":["flag_cv"],"๐Ÿ‡จ๐Ÿ‡ผ":["flag_cw"],"๐Ÿ‡จ๐Ÿ‡ฝ":["flag_cx"],"๐Ÿ‡จ๐Ÿ‡พ":["flag_cy"],"๐Ÿ‡จ๐Ÿ‡ฟ":["flag_cz"],"๐Ÿ‡ฉ๐Ÿ‡ช":["flag_de"],"๐Ÿ‡ฉ๐Ÿ‡ฌ":["flag_dg"],"๐Ÿ‡ฉ๐Ÿ‡ฏ":["flag_dj"],"๐Ÿ‡ฉ๐Ÿ‡ฐ":["flag_dk"],"๐Ÿ‡ฉ๐Ÿ‡ฒ":["flag_dm"],"๐Ÿ‡ฉ๐Ÿ‡ด":["flag_do"],"๐Ÿ‡ฉ๐Ÿ‡ฟ":["flag_dz"],"๐Ÿ‡ช๐Ÿ‡ฆ":["flag_ea"],"๐Ÿ‡ช๐Ÿ‡จ":["flag_ec"],"๐Ÿ‡ช๐Ÿ‡ช":["flag_ee"],"๐Ÿ‡ช๐Ÿ‡ฌ":["flag_eg"],"๐Ÿ‡ช๐Ÿ‡ญ":["flag_eh"],"๐Ÿ‡ช๐Ÿ‡ท":["flag_er"],"๐Ÿ‡ช๐Ÿ‡ธ":["flag_es"],"๐Ÿ‡ช๐Ÿ‡น":["flag_et"],"๐Ÿ‡ช๐Ÿ‡บ":["flag_eu"],"๐Ÿ‡ซ๐Ÿ‡ฎ":["flag_fi"],"๐Ÿ‡ซ๐Ÿ‡ฏ":["flag_fj"],"๐Ÿ‡ซ๐Ÿ‡ฐ":["flag_fk"],"๐Ÿ‡ซ๐Ÿ‡ฒ":["flag_fm"],"๐Ÿ‡ซ๐Ÿ‡ด":["flag_fo"],"๐Ÿ‡ซ๐Ÿ‡ท":["flag_fr"],"๐Ÿ‡ฌ๐Ÿ‡ฆ":["flag_ga"],"๐Ÿ‡ฌ๐Ÿ‡ง":["flag_gb"],"๐Ÿ‡ฌ๐Ÿ‡ฉ":["flag_gd"],"๐Ÿ‡ฌ๐Ÿ‡ช":["flag_ge"],"๐Ÿ‡ฌ๐Ÿ‡ซ":["flag_gf"],"๐Ÿ‡ฌ๐Ÿ‡ฌ":["flag_gg"],"๐Ÿ‡ฌ๐Ÿ‡ญ":["flag_gh"],"๐Ÿ‡ฌ๐Ÿ‡ฎ":["flag_gi"],"๐Ÿ‡ฌ๐Ÿ‡ฑ":["flag_gl"],"๐Ÿ‡ฌ๐Ÿ‡ฒ":["flag_gm"],"๐Ÿ‡ฌ๐Ÿ‡ณ":["flag_gn"],"๐Ÿ‡ฌ๐Ÿ‡ต":["flag_gp"],"๐Ÿ‡ฌ๐Ÿ‡ถ":["flag_gq"],"๐Ÿ‡ฌ๐Ÿ‡ท":["flag_gr"],"๐Ÿ‡ฌ๐Ÿ‡ธ":["flag_gs"],"๐Ÿ‡ฌ๐Ÿ‡น":["flag_gt"],"๐Ÿ‡ฌ๐Ÿ‡บ":["flag_gu"],"๐Ÿ‡ฌ๐Ÿ‡ผ":["flag_gw"],"๐Ÿ‡ฌ๐Ÿ‡พ":["flag_gy"],"๐Ÿ‡ญ๐Ÿ‡ฐ":["flag_hk"],"๐Ÿ‡ญ๐Ÿ‡ฒ":["flag_hm"],"๐Ÿ‡ญ๐Ÿ‡ณ":["flag_hn"],"๐Ÿ‡ญ๐Ÿ‡ท":["flag_hr"],"๐Ÿ‡ญ๐Ÿ‡น":["flag_ht"],"๐Ÿ‡ญ๐Ÿ‡บ":["flag_hu"],"๐Ÿ‡ฎ๐Ÿ‡จ":["flag_ic"],"๐Ÿ‡ฎ๐Ÿ‡ฉ":["flag_id"],"๐Ÿ‡ฎ๐Ÿ‡ช":["flag_ie"],"๐Ÿ‡ฎ๐Ÿ‡ฑ":["flag_il"],"๐Ÿ‡ฎ๐Ÿ‡ฒ":["flag_im"],"๐Ÿ‡ฎ๐Ÿ‡ณ":["flag_in"],"๐Ÿ‡ฎ๐Ÿ‡ด":["flag_io"],"๐Ÿ‡ฎ๐Ÿ‡ถ":["flag_iq"],"๐Ÿ‡ฎ๐Ÿ‡ท":["flag_ir"],"๐Ÿ‡ฎ๐Ÿ‡ธ":["flag_is"],"๐Ÿ‡ฎ๐Ÿ‡น":["flag_it"],"๐Ÿ‡ฏ๐Ÿ‡ช":["flag_je"],"๐Ÿ‡ฏ๐Ÿ‡ฒ":["flag_jm"],"๐Ÿ‡ฏ๐Ÿ‡ด":["flag_jo"],"๐Ÿ‡ฏ๐Ÿ‡ต":["flag_jp"],"๐Ÿ‡ฐ๐Ÿ‡ช":["flag_ke"],"๐Ÿ‡ฐ๐Ÿ‡ฌ":["flag_kg"],"๐Ÿ‡ฐ๐Ÿ‡ญ":["flag_kh"],"๐Ÿ‡ฐ๐Ÿ‡ฎ":["flag_ki"],"๐Ÿ‡ฐ๐Ÿ‡ฒ":["flag_km"],"๐Ÿ‡ฐ๐Ÿ‡ณ":["flag_kn"],"๐Ÿ‡ฐ๐Ÿ‡ต":["flag_kp"],"๐Ÿ‡ฐ๐Ÿ‡ท":["flag_kr"],"๐Ÿ‡ฐ๐Ÿ‡ผ":["flag_kw"],"๐Ÿ‡ฐ๐Ÿ‡พ":["flag_ky"],"๐Ÿ‡ฐ๐Ÿ‡ฟ":["flag_kz"],"๐Ÿ‡ฑ๐Ÿ‡ฆ":["flag_la"],"๐Ÿ‡ฑ๐Ÿ‡ง":["flag_lb"],"๐Ÿ‡ฑ๐Ÿ‡จ":["flag_lc"],"๐Ÿ‡ฑ๐Ÿ‡ฎ":["flag_li"],"๐Ÿ‡ฑ๐Ÿ‡ฐ":["flag_lk"],"๐Ÿ‡ฑ๐Ÿ‡ท":["flag_lr"],"๐Ÿ‡ฑ๐Ÿ‡ธ":["flag_ls"],"๐Ÿ‡ฑ๐Ÿ‡น":["flag_lt"],"๐Ÿ‡ฑ๐Ÿ‡บ":["flag_lu"],"๐Ÿ‡ฑ๐Ÿ‡ป":["flag_lv"],"๐Ÿ‡ฑ๐Ÿ‡พ":["flag_ly"],"๐Ÿ‡ฒ๐Ÿ‡ฆ":["flag_ma"],"๐Ÿ‡ฒ๐Ÿ‡จ":["flag_mc"],"๐Ÿ‡ฒ๐Ÿ‡ฉ":["flag_md"],"๐Ÿ‡ฒ๐Ÿ‡ช":["flag_me"],"๐Ÿ‡ฒ๐Ÿ‡ซ":["flag_mf"],"๐Ÿ‡ฒ๐Ÿ‡ฌ":["flag_mg"],"๐Ÿ‡ฒ๐Ÿ‡ญ":["flag_mh"],"๐Ÿ‡ฒ๐Ÿ‡ฐ":["flag_mk"],"๐Ÿ‡ฒ๐Ÿ‡ฑ":["flag_ml"],"๐Ÿ‡ฒ๐Ÿ‡ฒ":["flag_mm"],"๐Ÿ‡ฒ๐Ÿ‡ณ":["flag_mn"],"๐Ÿ‡ฒ๐Ÿ‡ด":["flag_mo"],"๐Ÿ‡ฒ๐Ÿ‡ต":["flag_mp"],"๐Ÿ‡ฒ๐Ÿ‡ถ":["flag_mq"],"๐Ÿ‡ฒ๐Ÿ‡ท":["flag_mr"],"๐Ÿ‡ฒ๐Ÿ‡ธ":["flag_ms"],"๐Ÿ‡ฒ๐Ÿ‡น":["flag_mt"],"๐Ÿ‡ฒ๐Ÿ‡บ":["flag_mu"],"๐Ÿ‡ฒ๐Ÿ‡ป":["flag_mv"],"๐Ÿ‡ฒ๐Ÿ‡ผ":["flag_mw"],"๐Ÿ‡ฒ๐Ÿ‡ฝ":["flag_mx"],"๐Ÿ‡ฒ๐Ÿ‡พ":["flag_my"],"๐Ÿ‡ฒ๐Ÿ‡ฟ":["flag_mz"],"๐Ÿ‡ณ๐Ÿ‡ฆ":["flag_na"],"๐Ÿ‡ณ๐Ÿ‡จ":["flag_nc"],"๐Ÿ‡ณ๐Ÿ‡ช":["flag_ne"],"๐Ÿ‡ณ๐Ÿ‡ซ":["flag_nf"],"๐Ÿ‡ณ๐Ÿ‡ฌ":["flag_ng"],"๐Ÿ‡ณ๐Ÿ‡ฎ":["flag_ni"],"๐Ÿ‡ณ๐Ÿ‡ฑ":["flag_nl"],"๐Ÿ‡ณ๐Ÿ‡ด":["flag_no"],"๐Ÿ‡ณ๐Ÿ‡ต":["flag_np"],"๐Ÿ‡ณ๐Ÿ‡ท":["flag_nr"],"๐Ÿ‡ณ๐Ÿ‡บ":["flag_nu"],"๐Ÿ‡ณ๐Ÿ‡ฟ":["flag_nz"],"๐Ÿ‡ด๐Ÿ‡ฒ":["flag_om"],"๐Ÿ‡ต๐Ÿ‡ฆ":["flag_pa"],"๐Ÿ‡ต๐Ÿ‡ช":["flag_pe"],"๐Ÿ‡ต๐Ÿ‡ซ":["flag_pf"],"๐Ÿ‡ต๐Ÿ‡ฌ":["flag_pg"],"๐Ÿ‡ต๐Ÿ‡ญ":["flag_ph"],"๐Ÿ‡ต๐Ÿ‡ฐ":["flag_pk"],"๐Ÿ‡ต๐Ÿ‡ฑ":["flag_pl"],"๐Ÿ‡ต๐Ÿ‡ฒ":["flag_pm"],"๐Ÿ‡ต๐Ÿ‡ณ":["flag_pn"],"๐Ÿ‡ต๐Ÿ‡ท":["flag_pr"],"๐Ÿ‡ต๐Ÿ‡ธ":["flag_ps"],"๐Ÿ‡ต๐Ÿ‡น":["flag_pt"],"๐Ÿ‡ต๐Ÿ‡ผ":["flag_pw"],"๐Ÿ‡ต๐Ÿ‡พ":["flag_py"],"๐Ÿ‡ถ๐Ÿ‡ฆ":["flag_qa"],"๐Ÿ‡ท๐Ÿ‡ช":["flag_re"],"๐Ÿ‡ท๐Ÿ‡ด":["flag_ro"],"๐Ÿ‡ท๐Ÿ‡ธ":["flag_rs"],"๐Ÿ‡ท๐Ÿ‡บ":["flag_ru"],"๐Ÿ‡ท๐Ÿ‡ผ":["flag_rw"],"๐Ÿ‡ธ๐Ÿ‡ฆ":["flag_sa"],"๐Ÿ‡ธ๐Ÿ‡ง":["flag_sb"],"๐Ÿ‡ธ๐Ÿ‡จ":["flag_sc"],"๐Ÿ‡ธ๐Ÿ‡ฉ":["flag_sd"],"๐Ÿ‡ธ๐Ÿ‡ช":["flag_se"],"๐Ÿ‡ธ๐Ÿ‡ฌ":["flag_sg"],"๐Ÿ‡ธ๐Ÿ‡ญ":["flag_sh"],"๐Ÿ‡ธ๐Ÿ‡ฎ":["flag_si"],"๐Ÿ‡ธ๐Ÿ‡ฏ":["flag_sj"],"๐Ÿ‡ธ๐Ÿ‡ฐ":["flag_sk"],"๐Ÿ‡ธ๐Ÿ‡ฑ":["flag_sl"],"๐Ÿ‡ธ๐Ÿ‡ฒ":["flag_sm"],"๐Ÿ‡ธ๐Ÿ‡ณ":["flag_sn"],"๐Ÿ‡ธ๐Ÿ‡ด":["flag_so"],"๐Ÿ‡ธ๐Ÿ‡ท":["flag_sr"],"๐Ÿ‡ธ๐Ÿ‡ธ":["flag_ss"],"๐Ÿ‡ธ๐Ÿ‡น":["flag_st"],"๐Ÿ‡ธ๐Ÿ‡ป":["flag_sv"],"๐Ÿ‡ธ๐Ÿ‡ฝ":["flag_sx"],"๐Ÿ‡ธ๐Ÿ‡พ":["flag_sy"],"๐Ÿ‡ธ๐Ÿ‡ฟ":["flag_sz"],"๐Ÿ‡น๐Ÿ‡ฆ":["flag_ta"],"๐Ÿ‡น๐Ÿ‡จ":["flag_tc"],"๐Ÿ‡น๐Ÿ‡ฉ":["flag_td"],"๐Ÿ‡น๐Ÿ‡ซ":["flag_tf"],"๐Ÿ‡น๐Ÿ‡ฌ":["flag_tg"],"๐Ÿ‡น๐Ÿ‡ญ":["flag_th"],"๐Ÿ‡น๐Ÿ‡ฏ":["flag_tj"],"๐Ÿ‡น๐Ÿ‡ฐ":["flag_tk"],"๐Ÿ‡น๐Ÿ‡ฑ":["flag_tl"],"๐Ÿ‡น๐Ÿ‡ฒ":["flag_tm"],"๐Ÿ‡น๐Ÿ‡ณ":["flag_tn"],"๐Ÿ‡น๐Ÿ‡ด":["flag_to"],"๐Ÿ‡น๐Ÿ‡ท":["flag_tr"],"๐Ÿ‡น๐Ÿ‡น":["flag_tt"],"๐Ÿ‡น๐Ÿ‡ป":["flag_tv"],"๐Ÿ‡น๐Ÿ‡ผ":["flag_tw"],"๐Ÿ‡น๐Ÿ‡ฟ":["flag_tz"],"๐Ÿ‡บ๐Ÿ‡ฆ":["flag_ua"],"๐Ÿ‡บ๐Ÿ‡ฌ":["flag_ug"],"๐Ÿ‡บ๐Ÿ‡ฒ":["flag_um"],"๐Ÿ‡บ๐Ÿ‡ณ":["flag_un"],"๐Ÿ‡บ๐Ÿ‡ธ":["flag_us","usa"],"๐Ÿ‡บ๐Ÿ‡พ":["flag_uy"],"๐Ÿ‡บ๐Ÿ‡ฟ":["flag_uz"],"๐Ÿ‡ป๐Ÿ‡ฆ":["flag_va"],"๐Ÿ‡ป๐Ÿ‡จ":["flag_vc"],"๐Ÿ‡ป๐Ÿ‡ช":["flag_ve"],"๐Ÿ‡ป๐Ÿ‡ฌ":["flag_vg"],"๐Ÿ‡ป๐Ÿ‡ฎ":["flag_vi"],"๐Ÿ‡ป๐Ÿ‡ณ":["flag_vn"],"๐Ÿ‡ป๐Ÿ‡บ":["flag_vu"],"๐Ÿ‡ผ๐Ÿ‡ซ":["flag_wf"],"๐Ÿ‡ผ๐Ÿ‡ธ":["flag_ws"],"๐Ÿ‡ฝ๐Ÿ‡ฐ":["flag_xk"],"๐Ÿ‡พ๐Ÿ‡ช":["flag_ye"],"๐Ÿ‡พ๐Ÿ‡น":["flag_yt"],"๐Ÿ‡ฟ๐Ÿ‡ฆ":["flag_za"],"๐Ÿ‡ฟ๐Ÿ‡ฒ":["flag_zm"],"๐Ÿ‡ฟ๐Ÿ‡ผ":["flag_zw"],"๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ":["flag_gbeng","england"],"๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ":["flag_gbsct","scotland"],"๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ":["flag_gbwls","wales"]}')},function(e,d){e.exports=flarum.core.compat.app},function(e,d,a){!function(){var d=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"],a="undefined"!=typeof window,u=a&&null!=window.mozInnerScreenX;function o(e,o,n){if(!a)throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");var r=n&&n.debug||!1;if(r){var t=document.querySelector("#input-textarea-caret-position-mirror-div");t&&t.parentNode.removeChild(t)}var i=document.createElement("div");i.id="input-textarea-caret-position-mirror-div",document.body.appendChild(i);var c=i.style,f=window.getComputedStyle?window.getComputedStyle(e):e.currentStyle,l="INPUT"===e.nodeName;c.whiteSpace="pre-wrap",l||(c.wordWrap="break-word"),c.position="absolute",r||(c.visibility="hidden"),d.forEach(function(e){l&&"lineHeight"===e?c.lineHeight=f.height:c[e]=f[e]}),u?e.scrollHeight>parseInt(f.height)&&(c.overflowY="scroll"):c.overflow="hidden",i.textContent=e.value.substring(0,o),l&&(i.textContent=i.textContent.replace(/\s/g,"ย "));var _=document.createElement("span");_.textContent=e.value.substring(o)||".",i.appendChild(_);var s={top:_.offsetTop+parseInt(f.borderTopWidth),left:_.offsetLeft+parseInt(f.borderLeftWidth),height:parseInt(f.lineHeight)};return r?_.style.backgroundColor="#aaa":document.body.removeChild(i),s}void 0!==e.exports?e.exports=o:a&&(window.getCaretCoordinates=o)}()},function(e,d){e.exports=flarum.core.compat["components/ComposerBody"]},function(e,d){e.exports=flarum.core.compat["components/TextEditor"]},function(e,d){e.exports=flarum.core.compat["components/TextEditorButton"]},function(e,d){e.exports=flarum.core.compat["utils/KeyboardNavigatable"]},function(e,d){e.exports=flarum.core.compat.Component},function(e,d){e.exports=flarum.core.compat["models/Post"]},function(e,d,a){"use strict";a.r(d);var u=a(2),o=a.n(u),n=a(3),r=a.n(n),t=a(1),i=a(0),c=a(4),f=a.n(c),l=a(5),_=a.n(l),s=a(6),g=a.n(s),p=function(){var e={base:"https://twemoji.maxcdn.com/v/12.1.2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(e){var d="string"==typeof e?parseInt(e,16):e;if(d<65536)return t(d);return t(55296+((d-=65536)>>10),56320+(1023&d))},toCodePoint:g},onerror:function(){this.parentNode&&this.parentNode.replaceChild(i(this.alt,!1),this)},parse:function(d,u){u&&"function"!=typeof u||(u={callback:u});return("string"==typeof d?function(e,d){return s(e,function(e){var a,u,o=e,r=f(e),t=d.callback(r,d);if(r&&t){for(u in o="")}return o})}:function(e,d){var u,o,n,t,c,l,_,s,g,m,p,b,h,w=function e(d,a){var u,o,n=d.childNodes,t=n.length;for(;t--;)u=n[t],3===(o=u.nodeType)?a.push(u):1!==o||"ownerSVGElement"in u||r.test(u.nodeName.toLowerCase())||e(u,a);return a}(e,[]),k=w.length;for(;k--;){for(n=!1,t=document.createDocumentFragment(),c=w[k],l=c.nodeValue,s=0;_=a.exec(l);){if((g=_.index)!==s&&t.appendChild(i(l.slice(s,g),!0)),p=_[0],b=f(p),s=g+p.length,h=d.callback(b,d),b&&h){for(o in(m=new Image).onerror=d.onerror,m.setAttribute("draggable","false"),u=d.attributes(p,b))u.hasOwnProperty(o)&&0!==o.indexOf("on")&&!m.hasAttribute(o)&&m.setAttribute(o,u[o]);m.className=d.className,m.alt=p,m.src=h,n=!0,t.appendChild(m)}m||t.appendChild(i(p,!1)),m=null}n&&(s":">","'":"'",'"':"""},a=/(?:\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c\udffb|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb\udffc]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udffd]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[ยฉยฎ\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,u=/\uFE0F/g,o=String.fromCharCode(8205),n=/[&<>'"]/g,r=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,t=String.fromCharCode;return e;function i(e,d){return document.createTextNode(d?e.replace(u,""):e)}function c(e,d){return"".concat(d.base,d.size,"/",e,d.ext)}function f(e){return g(e.indexOf(o)<0?e.replace(u,""):e)}function l(e){return d[e]}function _(){return null}function s(e,d){return String(e).replace(a,d)}function g(e,d){for(var a=[],u=0,o=0,n=0;n=u.length&&(o=0),this.index=o;var n=u.removeClass("active").eq(o).addClass("active");if(d){var r,t=a.scrollTop(),i=a.offset().top,c=i+a.outerHeight(),f=n.offset().top,l=f+n.outerHeight();fc&&(r=t-c+l+parseInt(a.css("padding-bottom"),10)),void 0!==r&&a.stop(!0).animate({scrollTop:r},100)}}},u}(a.n(v).a);function j(){var e=Object.keys(t);Object(i.extend)(f.a.prototype,"config",function(d,a){if(!a){var u,o,n=this,i=$('
'),c=new x({items:[]}),f=this.$("textarea").wrap('
');this.navigator=new y.a,this.navigator.when(function(){return c.active}).onUp(function(){return c.navigate(-1)}).onDown(function(){return c.navigate(1)}).onSelect(c.complete.bind(c)).onCancel(c.hide.bind(c)).bindTo(f),f.after(i).on("click keyup input",function(d){var a=this;if(-1===[9,13,27,40,38,37,39].indexOf(d.which)){var l=this.selectionStart;if(!(this.selectionEnd-l>0)){var _=this.value;u=0;for(var s=l-1;s>=0;s--){var g=_.substr(s,1);if(!/[a-z0-9]|\+|\-|_|\:/.test(g))break;if(":"===g&&(0==s||/\s/.test(_.substr(s-1,1)))){u=s+1;break}}if(c.hide(),c.active=!1,u){o=_.substring(u,l).toLowerCase();var p=function(e){var d=e.emoji,a=e.name,o=e.code;return m("button",{key:d,onclick:function(){return a=u-1+(e=d+" ").length,o=n.content(),n.editor.setValue(o.substring(0,u-1)+e+o.substr(f[0].selectionStart)),n.editor.setSelectionRange(a,a),void c.hide();var e,a,o},onmouseenter:function(){c.setIndex($(this).parent().index()-1)}},m("img",{alt:d,class:"emoji",draggable:"false",src:"//twemoji.maxcdn.com/2/72x72/"+o+".png"}),a)};!function(){var d,n,f=[],l=(d=o,n=new RegExp("\\((["+"+.*?[]{}()^$|\\".replace(/(.)/g,"\\$1")+"])\\)","g"),new RegExp("(.*)"+d.toLowerCase().replace(/(.)/g,"($1)(.*?)").replace(n,"(\\$1)")+"$","i")),_=7,s=function(d){for(var a=0;a0;a++){var u=e[a];if(-1===f.indexOf(u)){var o=t[u],n=Array.isArray(o),r=0;for(o=n?o:o[Symbol.iterator]();;){var i;if(n){if(r>=o.length)break;i=o[r++]}else{if((r=o.next()).done)break;i=r.value}if(d(i)){--_,f.push(u);break}}}}};s(function(e){return 0===e.indexOf(o)}),s(function(e){return l.test(e)});var g=f.map(function(e){return{emoji:e,name:t[e][0],code:w(e)}}).map(p);if(g.length){c.props.items=g,m.render(i[0],c.render()),c.show();var b=r()(a,u),h=c.$().outerWidth(),k=c.$().outerHeight(),y=c.$().offsetParent(),v=b.left,x=b.top+15;x+k>y.height()&&(x=b.top-k-15),v+h>y.width()&&(v=y.width()-h),x=Math.max(-$(a).offset().top,x),v=Math.max(-$(a).offset().left,v),c.show(v,x)}}(),c.setIndex(0),c.$().scrollTop(0),c.active=!0}}}})}}),Object(i.extend)(_.a.prototype,"toolbarItems",function(e){var d=this;e.add("emoji",m(g.a,{onclick:function(){return d.insertAtCursor(":")},icon:"far fa-smile"},app.translator.trans("flarum-emoji.forum.composer.emoji_tooltip")))})}var z=a(9),C=a.n(z);o.a.initializers.add("flarum-emoji",function(){j(),Object(i.override)(C.a.prototype,"contentHtml",function(e){var d=e();return this.oldContentHtml!==d&&(this.emojifiedContentHtml=p.parse(d),this.oldContentHtml=d),this.emojifiedContentHtml}),Object(i.override)(s9e.TextFormatter,"preview",function(e,d,a){e(d,a),p.parse(a)})})}]); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/emoji/js/dist/forum.js.map b/extensions/emoji/js/dist/forum.js.map index dfcd22d5d..bef02a6dd 100644 --- a/extensions/emoji/js/dist/forum.js.map +++ b/extensions/emoji/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@flarum/emoji/webpack/bootstrap","webpack://@flarum/emoji/external \"flarum.core.compat['extend']\"","webpack://@flarum/emoji/./node_modules/twemoji/2/twemoji.npm.js","webpack://@flarum/emoji/external \"flarum.core.compat['models/Post']\"","webpack://@flarum/emoji/external \"flarum.core.compat['app']\"","webpack://@flarum/emoji/./node_modules/textarea-caret/index.js","webpack://@flarum/emoji/external \"flarum.core.compat['components/ComposerBody']\"","webpack://@flarum/emoji/external \"flarum.core.compat['components/TextEditor']\"","webpack://@flarum/emoji/external \"flarum.core.compat['components/TextEditorButton']\"","webpack://@flarum/emoji/external \"flarum.core.compat['utils/KeyboardNavigatable']\"","webpack://@flarum/emoji/external \"flarum.core.compat['Component']\"","webpack://@flarum/emoji/(webpack)/buildin/global.js","webpack://@flarum/emoji/./src/forum/helpers/getEmojiIconCode.js","webpack://@flarum/emoji/./src/forum/components/AutocompleteDropdown.js","webpack://@flarum/emoji/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/emoji/./src/forum/addComposerAutocomplete.js","webpack://@flarum/emoji/./src/forum/index.js","webpack://@flarum/emoji/./src/forum/renderEmoji.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","global","location","twemoji","base","ext","size","className","convert","fromCodePoint","codepoint","code","parseInt","fromCharCode","toCodePoint","onerror","this","parentNode","replaceChild","createText","alt","parse","what","how","callback","str","options","replace","rawText","attrib","attrname","ret","iconId","grabTheRightIcon","src","concat","attributes","indexOf","rescaper","replacer","node","modified","fragment","subnode","text","match","index","img","allText","grabAllTextNodes","nodeType","childNodes","length","push","shouldntBeParsed","test","nodeName","toLowerCase","document","createDocumentFragment","nodeValue","re","exec","appendChild","slice","Image","setAttribute","hasAttribute","defaultImageSrcGenerator","returnNull","folder","lastIndex","result","escaper","&","<",">","'","\"","UFE0Fg","U200D","String","clean","createTextNode","icon","unicodeSurrogates","sep","charCodeAt","toString","join","protocol","properties","isBrowser","window","isFirefox","mozInnerScreenX","getCaretCoordinates","element","position","Error","debug","el","querySelector","removeChild","div","createElement","id","body","style","computed","getComputedStyle","currentStyle","isInput","whiteSpace","wordWrap","visibility","forEach","prop","lineHeight","height","scrollHeight","overflowY","overflow","textContent","substring","span","coordinates","top","offsetTop","left","offsetLeft","backgroundColor","g","Function","eval","e","AutocompleteDropdown","subClass","superClass","constructor","__proto__","init","active","keyWasJustPressed","view","app","translator","trans","props","items","map","item","attrs","show","$","css","hide","navigate","delta","_this","setIndex","clearTimeout","keyWasJustPressedTimeout","setTimeout","complete","eq","find","click","scrollToItem","$dropdown","$items","rangedIndex","$item","removeClass","addClass","scrollTop","dropdownScroll","dropdownTop","offset","dropdownBottom","outerHeight","itemTop","itemBottom","stop","animate","Component","addComposerAutocomplete","emojiKeys","keys","emojiMap","extend","ComposerBody","original","isInitialized","emojiStart","typed","composer","$container","dropdown","$textarea","wrap","navigator","KeyboardNavigatable","when","onUp","onDown","onSelect","onCancel","bindTo","after","on","which","cursor","selectionStart","selectionEnd","character","substr","makeSuggestion","_ref","emoji","onclick","insert","content","editor","setValue","setSelectionRange","onmouseenter","parent","class","draggable","reEscape","similarEmoji","regTyped","RegExp","maxSuggestions","findMatchingEmojis","matcher","curEmoji","_iterator","_isArray","Array","isArray","_i2","iterator","_ref2","next","done","suggestions","getEmojiIconCode","render","width","outerWidth","offsetParent","Math","max","buildSuggestions","TextEditor","_this2","add","TextEditorButton_default","a","insertAtCursor","initializers","override","Post","contentHtml","oldContentHtml","emojifiedContentHtml","s9e","TextFormatter"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = flarum.core.compat['extend'];","var location = global.location || {};\n/*jslint indent: 2, browser: true, bitwise: true, plusplus: true */\nvar twemoji = (function (\n /*! Copyright Twitter Inc. and other contributors. Licensed under MIT *//*\n https://github.com/twitter/twemoji/blob/gh-pages/LICENSE\n */\n\n // WARNING: this file is generated automatically via\n // `node twemoji-generator.js`\n // please update its `createTwemoji` function\n // at the bottom of the same file instead.\n\n) {\n 'use strict';\n\n /*jshint maxparams:4 */\n\n var\n // the exported module object\n twemoji = {\n\n\n /////////////////////////\n // properties //\n /////////////////////////\n\n // default assets url, by default will be Twitter Inc. CDN\n base: 'https://twemoji.maxcdn.com/2/',\n\n // default assets file extensions, by default '.png'\n ext: '.png',\n\n // default assets/folder size, by default \"72x72\"\n // available via Twitter CDN: 72\n size: '72x72',\n\n // default class name, by default 'emoji'\n className: 'emoji',\n\n // basic utilities / helpers to convert code points\n // to JavaScript surrogates and vice versa\n convert: {\n\n /**\n * Given an HEX codepoint, returns UTF16 surrogate pairs.\n *\n * @param string generic codepoint, i.e. '1F4A9'\n * @return string codepoint transformed into utf16 surrogates pair,\n * i.e. \\uD83D\\uDCA9\n *\n * @example\n * twemoji.convert.fromCodePoint('1f1e8');\n * // \"\\ud83c\\udde8\"\n *\n * '1f1e8-1f1f3'.split('-').map(twemoji.convert.fromCodePoint).join('')\n * // \"\\ud83c\\udde8\\ud83c\\uddf3\"\n */\n fromCodePoint: fromCodePoint,\n\n /**\n * Given UTF16 surrogate pairs, returns the equivalent HEX codepoint.\n *\n * @param string generic utf16 surrogates pair, i.e. \\uD83D\\uDCA9\n * @param string optional separator for double code points, default='-'\n * @return string utf16 transformed into codepoint, i.e. '1F4A9'\n *\n * @example\n * twemoji.convert.toCodePoint('\\ud83c\\udde8\\ud83c\\uddf3');\n * // \"1f1e8-1f1f3\"\n *\n * twemoji.convert.toCodePoint('\\ud83c\\udde8\\ud83c\\uddf3', '~');\n * // \"1f1e8~1f1f3\"\n */\n toCodePoint: toCodePoint\n },\n\n\n /////////////////////////\n // methods //\n /////////////////////////\n\n /**\n * User first: used to remove missing images\n * preserving the original text intent when\n * a fallback for network problems is desired.\n * Automatically added to Image nodes via DOM\n * It could be recycled for string operations via:\n * $('img.emoji').on('error', twemoji.onerror)\n */\n onerror: function onerror() {\n if (this.parentNode) {\n this.parentNode.replaceChild(createText(this.alt, false), this);\n }\n },\n\n /**\n * Main method/logic to generate either tags or HTMLImage nodes.\n * \"emojify\" a generic text or DOM Element.\n *\n * @overloads\n *\n * String replacement for `innerHTML` or server side operations\n * twemoji.parse(string);\n * twemoji.parse(string, Function);\n * twemoji.parse(string, Object);\n *\n * HTMLElement tree parsing for safer operations over existing DOM\n * twemoji.parse(HTMLElement);\n * twemoji.parse(HTMLElement, Function);\n * twemoji.parse(HTMLElement, Object);\n *\n * @param string|HTMLElement the source to parse and enrich with emoji.\n *\n * string replace emoji matches with tags.\n * Mainly used to inject emoji via `innerHTML`\n * It does **not** parse the string or validate it,\n * it simply replaces found emoji with a tag.\n * NOTE: be sure this won't affect security.\n *\n * HTMLElement walk through the DOM tree and find emoji\n * that are inside **text node only** (nodeType === 3)\n * Mainly used to put emoji in already generated DOM\n * without compromising surrounding nodes and\n * **avoiding** the usage of `innerHTML`.\n * NOTE: Using DOM elements instead of strings should\n * improve security without compromising too much\n * performance compared with a less safe `innerHTML`.\n *\n * @param Function|Object [optional]\n * either the callback that will be invoked or an object\n * with all properties to use per each found emoji.\n *\n * Function if specified, this will be invoked per each emoji\n * that has been found through the RegExp except\n * those follwed by the invariant \\uFE0E (\"as text\").\n * Once invoked, parameters will be:\n *\n * iconId:string the lower case HEX code point\n * i.e. \"1f4a9\"\n *\n * options:Object all info for this parsing operation\n *\n * variant:char the optional \\uFE0F (\"as image\")\n * variant, in case this info\n * is anyhow meaningful.\n * By default this is ignored.\n *\n * If such callback will return a falsy value instead\n * of a valid `src` to use for the image, nothing will\n * actually change for that specific emoji.\n *\n *\n * Object if specified, an object containing the following properties\n *\n * callback Function the callback to invoke per each found emoji.\n * base string the base url, by default twemoji.base\n * ext string the image extension, by default twemoji.ext\n * size string the assets size, by default twemoji.size\n *\n * @example\n *\n * twemoji.parse(\"I \\u2764\\uFE0F emoji!\");\n * // I \"โค๏ธ\" emoji!\n *\n *\n * twemoji.parse(\"I \\u2764\\uFE0F emoji!\", function(iconId, options) {\n * return '/assets/' + iconId + '.gif';\n * });\n * // I \"โค๏ธ\" emoji!\n *\n *\n * twemoji.parse(\"I \\u2764\\uFE0F emoji!\", {\n * size: 72,\n * callback: function(iconId, options) {\n * return '/assets/' + options.size + '/' + iconId + options.ext;\n * }\n * });\n * // I \"โค๏ธ\" emoji!\n *\n */\n parse: parse,\n\n /**\n * Given a string, invokes the callback argument\n * per each emoji found in such string.\n * This is the most raw version used by\n * the .parse(string) method itself.\n *\n * @param string generic string to parse\n * @param Function a generic callback that will be\n * invoked to replace the content.\n * This calback wil receive standard\n * String.prototype.replace(str, callback)\n * arguments such:\n * callback(\n * rawText, // the emoji match\n * );\n *\n * and others commonly received via replace.\n */\n replace: replace,\n\n /**\n * Simplify string tests against emoji.\n *\n * @param string some text that might contain emoji\n * @return boolean true if any emoji was found, false otherwise.\n *\n * @example\n *\n * if (twemoji.test(someContent)) {\n * console.log(\"emoji All The Things!\");\n * }\n */\n test: test\n },\n\n // used to escape HTML special chars in attributes\n escaper = {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n },\n\n // RegExp based on emoji's official Unicode standards\n // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt\n re = /(?:\\ud83d[\\udc68\\udc69])(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddb0-\\uddb3])|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f|(?:\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f)|[\\u0023\\u002a\\u0030-\\u0039]\\ufe0f?\\u20e3|(?:[\\u00a9\\u00ae\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c[\\udf85\\udfc2-\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4-\\udeb6\\udec0\\udecc]|\\ud83e[\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\uddb5\\uddb6\\uddb8\\uddb9\\uddd1-\\udddd]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf5\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a-\\udc6d\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\udeeb\\udeec\\udef4-\\udef9]|\\ud83e[\\udd10-\\udd17\\udd1d\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd40-\\udd45\\udd47-\\udd70\\udd73-\\udd76\\udd7a\\udd7c-\\udda2\\uddb4\\uddb7\\uddc0-\\uddc2\\uddd0\\uddde-\\uddff]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g,\n\n // avoid runtime RegExp creation for not so smart,\n // not JIT based, and old browsers / engines\n UFE0Fg = /\\uFE0F/g,\n\n // avoid using a string literal like '\\u200D' here because minifiers expand it inline\n U200D = String.fromCharCode(0x200D),\n\n // used to find HTML special chars in attributes\n rescaper = /[&<>'\"]/g,\n\n // nodes with type 1 which should **not** be parsed\n shouldntBeParsed = /^(?:iframe|noframes|noscript|script|select|style|textarea)$/,\n\n // just a private shortcut\n fromCharCode = String.fromCharCode;\n\n return twemoji;\n\n\n /////////////////////////\n // private functions //\n // declaration //\n /////////////////////////\n\n /**\n * Shortcut to create text nodes\n * @param string text used to create DOM text node\n * @return Node a DOM node with that text\n */\n function createText(text, clean) {\n return document.createTextNode(clean ? text.replace(UFE0Fg, '') : text);\n }\n\n /**\n * Utility function to escape html attribute text\n * @param string text use in HTML attribute\n * @return string text encoded to use in HTML attribute\n */\n function escapeHTML(s) {\n return s.replace(rescaper, replacer);\n }\n\n /**\n * Default callback used to generate emoji src\n * based on Twitter CDN\n * @param string the emoji codepoint string\n * @param string the default size to use, i.e. \"36x36\"\n * @return string the image source to use\n */\n function defaultImageSrcGenerator(icon, options) {\n return ''.concat(options.base, options.size, '/', icon, options.ext);\n }\n\n /**\n * Given a generic DOM nodeType 1, walk through all children\n * and store every nodeType 3 (#text) found in the tree.\n * @param Element a DOM Element with probably some text in it\n * @param Array the list of previously discovered text nodes\n * @return Array same list with new discovered nodes, if any\n */\n function grabAllTextNodes(node, allText) {\n var\n childNodes = node.childNodes,\n length = childNodes.length,\n subnode,\n nodeType;\n while (length--) {\n subnode = childNodes[length];\n nodeType = subnode.nodeType;\n // parse emoji only in text nodes\n if (nodeType === 3) {\n // collect them to process emoji later\n allText.push(subnode);\n }\n // ignore all nodes that are not type 1, that are svg, or that\n // should not be parsed as script, style, and others\n else if (nodeType === 1 && !('ownerSVGElement' in subnode) &&\n !shouldntBeParsed.test(subnode.nodeName.toLowerCase())) {\n grabAllTextNodes(subnode, allText);\n }\n }\n return allText;\n }\n\n /**\n * Used to both remove the possible variant\n * and to convert utf16 into code points.\n * If there is a zero-width-joiner (U+200D), leave the variants in.\n * @param string the raw text of the emoji match\n * @return string the code point\n */\n function grabTheRightIcon(rawText) {\n // if variant is present as \\uFE0F\n return toCodePoint(rawText.indexOf(U200D) < 0 ?\n rawText.replace(UFE0Fg, '') :\n rawText\n );\n }\n\n /**\n * DOM version of the same logic / parser:\n * emojify all found sub-text nodes placing images node instead.\n * @param Element generic DOM node with some text in some child node\n * @param Object options containing info about how to parse\n *\n * .callback Function the callback to invoke per each found emoji.\n * .base string the base url, by default twemoji.base\n * .ext string the image extension, by default twemoji.ext\n * .size string the assets size, by default twemoji.size\n *\n * @return Element same generic node with emoji in place, if any.\n */\n function parseNode(node, options) {\n var\n allText = grabAllTextNodes(node, []),\n length = allText.length,\n attrib,\n attrname,\n modified,\n fragment,\n subnode,\n text,\n match,\n i,\n index,\n img,\n rawText,\n iconId,\n src;\n while (length--) {\n modified = false;\n fragment = document.createDocumentFragment();\n subnode = allText[length];\n text = subnode.nodeValue;\n i = 0;\n while ((match = re.exec(text))) {\n index = match.index;\n if (index !== i) {\n fragment.appendChild(\n createText(text.slice(i, index), true)\n );\n }\n rawText = match[0];\n iconId = grabTheRightIcon(rawText);\n i = index + rawText.length;\n src = options.callback(iconId, options);\n if (iconId && src) {\n img = new Image();\n img.onerror = options.onerror;\n img.setAttribute('draggable', 'false');\n attrib = options.attributes(rawText, iconId);\n for (attrname in attrib) {\n if (\n attrib.hasOwnProperty(attrname) &&\n // don't allow any handlers to be set + don't allow overrides\n attrname.indexOf('on') !== 0 &&\n !img.hasAttribute(attrname)\n ) {\n img.setAttribute(attrname, attrib[attrname]);\n }\n }\n img.className = options.className;\n img.alt = rawText;\n img.src = src;\n modified = true;\n fragment.appendChild(img);\n }\n if (!img) fragment.appendChild(createText(rawText, false));\n img = null;\n }\n // is there actually anything to replace in here ?\n if (modified) {\n // any text left to be added ?\n if (i < text.length) {\n fragment.appendChild(\n createText(text.slice(i), true)\n );\n }\n // replace the text node only, leave intact\n // anything else surrounding such text\n subnode.parentNode.replaceChild(fragment, subnode);\n }\n }\n return node;\n }\n\n /**\n * String/HTML version of the same logic / parser:\n * emojify a generic text placing images tags instead of surrogates pair.\n * @param string generic string with possibly some emoji in it\n * @param Object options containing info about how to parse\n *\n * .callback Function the callback to invoke per each found emoji.\n * .base string the base url, by default twemoji.base\n * .ext string the image extension, by default twemoji.ext\n * .size string the assets size, by default twemoji.size\n *\n * @return the string with replacing all found and parsed emoji\n */\n function parseString(str, options) {\n return replace(str, function (rawText) {\n var\n ret = rawText,\n iconId = grabTheRightIcon(rawText),\n src = options.callback(iconId, options),\n attrib,\n attrname;\n if (iconId && src) {\n // recycle the match string replacing the emoji\n // with its image counter part\n ret = '');\n }\n return ret;\n });\n }\n\n /**\n * Function used to actually replace HTML special chars\n * @param string HTML special char\n * @return string encoded HTML special char\n */\n function replacer(m) {\n return escaper[m];\n }\n\n /**\n * Default options.attribute callback\n * @return null\n */\n function returnNull() {\n return null;\n }\n\n /**\n * Given a generic value, creates its squared counterpart if it's a number.\n * As example, number 36 will return '36x36'.\n * @param any a generic value.\n * @return any a string representing asset size, i.e. \"36x36\"\n * only in case the value was a number.\n * Returns initial value otherwise.\n */\n function toSizeSquaredAsset(value) {\n return typeof value === 'number' ?\n value + 'x' + value :\n value;\n }\n\n\n /////////////////////////\n // exported functions //\n // declaration //\n /////////////////////////\n\n function fromCodePoint(codepoint) {\n var code = typeof codepoint === 'string' ?\n parseInt(codepoint, 16) : codepoint;\n if (code < 0x10000) {\n return fromCharCode(code);\n }\n code -= 0x10000;\n return fromCharCode(\n 0xD800 + (code >> 10),\n 0xDC00 + (code & 0x3FF)\n );\n }\n\n function parse(what, how) {\n if (!how || typeof how === 'function') {\n how = {callback: how};\n }\n // if first argument is string, inject html tags\n // otherwise use the DOM tree and parse text nodes only\n return (typeof what === 'string' ? parseString : parseNode)(what, {\n callback: how.callback || defaultImageSrcGenerator,\n attributes: typeof how.attributes === 'function' ? how.attributes : returnNull,\n base: typeof how.base === 'string' ? how.base : twemoji.base,\n ext: how.ext || twemoji.ext,\n size: how.folder || toSizeSquaredAsset(how.size || twemoji.size),\n className: how.className || twemoji.className,\n onerror: how.onerror || twemoji.onerror\n });\n }\n\n function replace(text, callback) {\n return String(text).replace(re, callback);\n }\n\n function test(text) {\n // IE6 needs a reset before too\n re.lastIndex = 0;\n var result = re.test(text);\n re.lastIndex = 0;\n return result;\n }\n\n function toCodePoint(unicodeSurrogates, sep) {\n var\n r = [],\n c = 0,\n p = 0,\n i = 0;\n while (i < unicodeSurrogates.length) {\n c = unicodeSurrogates.charCodeAt(i++);\n if (p) {\n r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));\n p = 0;\n } else if (0xD800 <= c && c <= 0xDBFF) {\n p = c;\n } else {\n r.push(c.toString(16));\n }\n }\n return r.join(sep || '-');\n }\n\n}());\nif (!location.protocol) {\n twemoji.base = twemoji.base.replace(/^http:/, \"\");\n}\nmodule.exports = twemoji;","module.exports = flarum.core.compat['models/Post'];","module.exports = flarum.core.compat['app'];","/* jshint browser: true */\n\n(function () {\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nvar properties = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n\n 'letterSpacing',\n 'wordSpacing',\n\n 'tabSize',\n 'MozTabSize'\n\n];\n\nvar isBrowser = (typeof window !== 'undefined');\nvar isFirefox = (isBrowser && window.mozInnerScreenX != null);\n\nfunction getCaretCoordinates(element, position, options) {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n\n var debug = options && options.debug || false;\n if (debug) {\n var el = document.querySelector('#input-textarea-caret-position-mirror-div');\n if (el) el.parentNode.removeChild(el);\n }\n\n // The mirror div will replicate the textarea's style\n var div = document.createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n\n var style = div.style;\n var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9\n var isInput = element.nodeName === 'INPUT';\n\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput)\n style.wordWrap = 'break-word'; // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n if (!debug)\n style.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n // Transfer the element's properties to the div\n properties.forEach(function (prop) {\n if (isInput && prop === 'lineHeight') {\n // Special case for s because text is rendered centered and line height may be != height\n style.lineHeight = computed.height;\n } else {\n style[prop] = computed[prop];\n }\n });\n\n if (isFirefox) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n\n div.textContent = element.value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput)\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n\n var span = document.createElement('span');\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n\n var coordinates = {\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\n left: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n height: parseInt(computed['lineHeight'])\n };\n\n if (debug) {\n span.style.backgroundColor = '#aaa';\n } else {\n document.body.removeChild(div);\n }\n\n return coordinates;\n}\n\nif (typeof module != 'undefined' && typeof module.exports != 'undefined') {\n module.exports = getCaretCoordinates;\n} else if(isBrowser) {\n window.getCaretCoordinates = getCaretCoordinates;\n}\n\n}());\n","module.exports = flarum.core.compat['components/ComposerBody'];","module.exports = flarum.core.compat['components/TextEditor'];","module.exports = flarum.core.compat['components/TextEditorButton'];","module.exports = flarum.core.compat['utils/KeyboardNavigatable'];","module.exports = flarum.core.compat['Component'];","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT *//*\n https://github.com/twitter/twemoji/blob/gh-pages/LICENSE\n*/\n\nimport twemoji from 'twemoji/2/twemoji.npm';\n\n// avoid using a string literal like '\\u200D' here because minifiers expand it inline\nconst U200D = String.fromCharCode(0x200D);\n\n// avoid runtime RegExp creation for not so smart,\n// not JIT based, and old browsers / engines\nconst UFE0Fg = /\\uFE0F/g;\n\n/**\n * Used to both remove the possible variant\n * and to convert utf16 into code points.\n * If there is a zero-width-joiner (U+200D), leave the variants in.\n * @param string the raw text of the emoji match\n * @return string the code point\n */\nexport default function getEmojiIconCode(emoji) {\n return twemoji.convert.toCodePoint(emoji.indexOf(U200D) < 0 ?\n emoji.replace(UFE0Fg, '') :\n emoji\n );\n}\n","import Component from 'flarum/Component';\n\nexport default class AutocompleteDropdown extends Component {\n init() {\n this.active = false;\n this.index = 0;\n this.keyWasJustPressed = false;\n }\n\n view() {\n return (\n
    \n
  • {app.translator.trans('flarum-emoji.forum.composer.type_to_search_text')}
  • \n {this.props.items.map(item =>
  • {item}
  • )}\n
\n );\n }\n\n show(left, top) {\n this.$().show().css({\n left: left + 'px',\n top: top + 'px'\n });\n this.active = true;\n }\n\n hide() {\n this.$().hide();\n this.active = false;\n }\n\n navigate(delta) {\n this.keyWasJustPressed = true;\n this.setIndex(this.index + delta, true);\n clearTimeout(this.keyWasJustPressedTimeout);\n this.keyWasJustPressedTimeout = setTimeout(() => this.keyWasJustPressed = false, 500);\n }\n\n complete() {\n this.$('li:not(.Dropdown-header)').eq(this.index).find('button').click();\n }\n\n setIndex(index, scrollToItem) {\n if (this.keyWasJustPressed && !scrollToItem) return;\n\n const $dropdown = this.$();\n const $items = $dropdown.find('li:not(.Dropdown-header)');\n let rangedIndex = index;\n\n if (rangedIndex < 0) {\n rangedIndex = $items.length - 1;\n } else if (rangedIndex >= $items.length) {\n rangedIndex = 0;\n }\n\n this.index = rangedIndex;\n\n const $item = $items.removeClass('active').eq(rangedIndex).addClass('active');\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop();\n const dropdownTop = $dropdown.offset().top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight();\n const itemTop = $item.offset().top;\n const itemBottom = itemTop + $item.outerHeight();\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({scrollTop}, 100);\n }\n }\n }\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import getCaretCoordinates from 'textarea-caret';\n\nimport { extend } from 'flarum/extend';\nimport ComposerBody from 'flarum/components/ComposerBody';\nimport TextEditor from 'flarum/components/TextEditor';\nimport TextEditorButton from 'flarum/components/TextEditorButton';\nimport emojiMap from './generated/emojiMap.json';\nimport getEmojiIconCode from './helpers/getEmojiIconCode';\nimport KeyboardNavigatable from 'flarum/utils/KeyboardNavigatable';\n\nimport AutocompleteDropdown from './components/AutocompleteDropdown';\n\nexport default function addComposerAutocomplete() {\n const emojiKeys = Object.keys(emojiMap);\n\n extend(ComposerBody.prototype, 'config', function(original, isInitialized) {\n if (isInitialized) return;\n\n const composer = this;\n const $container = $('
');\n const dropdown = new AutocompleteDropdown({items: []});\n const $textarea = this.$('textarea').wrap('
');\n let emojiStart;\n let typed;\n\n const applySuggestion = function(replacement) {\n const insert = replacement + ' ';\n\n // When calling setValue(), emojiStart will be set back to 0 so we need to compute this beforehand\n const index = emojiStart - 1 + insert.length;\n\n const content = composer.content();\n composer.editor.setValue(content.substring(0, emojiStart - 1) + insert + content.substr($textarea[0].selectionStart));\n\n composer.editor.setSelectionRange(index, index);\n\n dropdown.hide();\n };\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when(() => dropdown.active)\n .onUp(() => dropdown.navigate(-1))\n .onDown(() => dropdown.navigate(1))\n .onSelect(dropdown.complete.bind(dropdown))\n .onCancel(dropdown.hide.bind(dropdown))\n .bindTo($textarea);\n\n $textarea\n .after($container)\n .on('click keyup input', function(e) {\n // Up, down, enter, tab, escape, left, right.\n if ([9, 13, 27, 40, 38, 37, 39].indexOf(e.which) !== -1) return;\n\n const cursor = this.selectionStart;\n\n if (this.selectionEnd - cursor > 0) return;\n\n // Search backwards from the cursor for an ':' symbol. If we find\n // one and followed by a whitespace, we will want to show the\n // autocomplete dropdown!\n const value = this.value;\n emojiStart = 0;\n for (let i = cursor - 1; i >= 0; i--) {\n const character = value.substr(i, 1);\n // check what user typed, emoji names only contains alphanumeric,\n // underline, '+' and '-'\n if (!/[a-z0-9]|\\+|\\-|_|\\:/.test(character)) break;\n // make sure ':' followed by a whitespace or newline\n if (character === ':' && (i == 0 || /\\s/.test(value.substr(i - 1, 1)))) {\n emojiStart = i + 1;\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (emojiStart) {\n typed = value.substring(emojiStart, cursor).toLowerCase();\n\n const makeSuggestion = function({emoji, name, code}) {\n return (\n applySuggestion(emoji)}\n onmouseenter={function() {\n dropdown.setIndex($(this).parent().index() - 1);\n }}>\n {emoji}\n {name}\n \n );\n };\n\n const buildSuggestions = () => {\n const similarEmoji = [];\n\n // Build a regular expression to do a fuzzy match of the given input string\n const fuzzyRegexp = function(str) {\n const reEscape = new RegExp('\\\\(([' + ('+.*?[]{}()^$|\\\\'.replace(/(.)/g, '\\\\$1')) + '])\\\\)', 'g');\n return new RegExp('(.*)' + (str.toLowerCase().replace(/(.)/g, '($1)(.*?)')).replace(reEscape, '(\\\\$1)') + '$', 'i');\n };\n const regTyped = fuzzyRegexp(typed);\n\n let maxSuggestions = 7;\n\n const findMatchingEmojis = matcher => {\n for (let i = 0; i < emojiKeys.length && maxSuggestions > 0; i++) {\n const curEmoji = emojiKeys[i];\n\n if (similarEmoji.indexOf(curEmoji) === -1) {\n const names = emojiMap[curEmoji];\n for (let name of names) {\n if (matcher(name)) {\n --maxSuggestions;\n similarEmoji.push(curEmoji);\n break;\n }\n }\n }\n }\n };\n\n // First, try to find all emojis starting with the given string\n findMatchingEmojis(emoji => emoji.indexOf(typed) === 0);\n\n // If there are still suggestions left, try for some fuzzy matches\n findMatchingEmojis(emoji => regTyped.test(emoji));\n\n const suggestions = similarEmoji.map(emoji => ({\n emoji,\n name: emojiMap[emoji][0],\n code: getEmojiIconCode(emoji),\n })).map(makeSuggestion);\n\n if (suggestions.length) {\n dropdown.props.items = suggestions;\n m.render($container[0], dropdown.render());\n\n dropdown.show();\n const coordinates = getCaretCoordinates(this, emojiStart);\n const width = dropdown.$().outerWidth();\n const height = dropdown.$().outerHeight();\n const parent = dropdown.$().offsetParent();\n let left = coordinates.left;\n let top = coordinates.top + 15;\n if (top + height > parent.height()) {\n top = coordinates.top - height - 15;\n }\n if (left + width > parent.width()) {\n left = parent.width() - width;\n }\n top = Math.max(-$(this).offset().top, top);\n left = Math.max(-$(this).offset().left, left);\n dropdown.show(left, top);\n }\n };\n\n buildSuggestions();\n\n dropdown.setIndex(0);\n dropdown.$().scrollTop(0);\n dropdown.active = true;\n }\n });\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function(items) {\n items.add('emoji', (\n this.insertAtCursor(':')} icon=\"far fa-smile\">\n {app.translator.trans('flarum-emoji.forum.composer.emoji_tooltip')}\n \n ));\n });\n}\n","import { override } from 'flarum/extend';\nimport app from 'flarum/app';\nimport Post from 'flarum/models/Post';\n\nimport addComposerAutocomplete from './addComposerAutocomplete';\nimport renderEmoji from './renderEmoji';\n\napp.initializers.add('flarum-emoji', () => {\n // After typing ':' in the composer, show a dropdown suggesting a bunch of\n // emoji that the user could use.\n addComposerAutocomplete();\n\n // render emoji as image in Posts content and title.\n renderEmoji();\n});\n","/*global s9e*/\n\nimport twemoji from 'twemoji/2/twemoji.npm';\n\nimport { override } from 'flarum/extend';\nimport Post from 'flarum/models/Post';\n\nexport default function renderEmoji() {\n override(Post.prototype, 'contentHtml', function(original) {\n const contentHtml = original();\n\n if (this.oldContentHtml !== contentHtml) {\n this.emojifiedContentHtml = twemoji.parse(contentHtml);\n this.oldContentHtml = contentHtml;\n }\n\n return this.emojifiedContentHtml;\n });\n\n override(s9e.TextFormatter, 'preview', (original, text, element) => {\n original(text, element);\n\n twemoji.parse(element);\n });\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@flarum/emoji/webpack/bootstrap","webpack://@flarum/emoji/external \"flarum.core.compat['extend']\"","webpack://@flarum/emoji/external \"flarum.core.compat['app']\"","webpack://@flarum/emoji/./node_modules/textarea-caret/index.js","webpack://@flarum/emoji/external \"flarum.core.compat['components/ComposerBody']\"","webpack://@flarum/emoji/external \"flarum.core.compat['components/TextEditor']\"","webpack://@flarum/emoji/external \"flarum.core.compat['components/TextEditorButton']\"","webpack://@flarum/emoji/external \"flarum.core.compat['utils/KeyboardNavigatable']\"","webpack://@flarum/emoji/external \"flarum.core.compat['Component']\"","webpack://@flarum/emoji/external \"flarum.core.compat['models/Post']\"","webpack://@flarum/emoji/./node_modules/twemoji/dist/twemoji.esm.js","webpack://@flarum/emoji/./src/forum/helpers/getEmojiIconCode.js","webpack://@flarum/emoji/./src/forum/components/AutocompleteDropdown.js","webpack://@flarum/emoji/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/emoji/./src/forum/addComposerAutocomplete.js","webpack://@flarum/emoji/./src/forum/index.js","webpack://@flarum/emoji/./src/forum/renderEmoji.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","properties","isBrowser","window","isFirefox","mozInnerScreenX","getCaretCoordinates","element","position","options","Error","debug","el","document","querySelector","parentNode","removeChild","div","createElement","id","body","appendChild","style","computed","getComputedStyle","currentStyle","isInput","nodeName","whiteSpace","wordWrap","visibility","forEach","prop","lineHeight","height","scrollHeight","parseInt","overflowY","overflow","textContent","substring","replace","span","coordinates","top","offsetTop","left","offsetLeft","backgroundColor","twemoji_esm","twemoji","base","ext","size","className","convert","fromCodePoint","codepoint","code","fromCharCode","toCodePoint","onerror","this","replaceChild","createText","alt","parse","what","how","callback","str","rawText","attrib","attrname","ret","iconId","grabTheRightIcon","src","concat","attributes","indexOf","rescaper","replacer","node","modified","fragment","subnode","text","match","index","img","allText","grabAllTextNodes","nodeType","childNodes","length","push","shouldntBeParsed","test","toLowerCase","createDocumentFragment","nodeValue","re","exec","slice","Image","setAttribute","hasAttribute","defaultImageSrcGenerator","returnNull","folder","lastIndex","result","escaper","&","<",">","'","\"","UFE0Fg","U200D","String","clean","createTextNode","icon","unicodeSurrogates","sep","charCodeAt","toString","join","getEmojiIconCode","emoji","AutocompleteDropdown","subClass","superClass","constructor","__proto__","init","active","keyWasJustPressed","view","app","translator","trans","props","items","map","item","attrs","show","$","css","hide","navigate","delta","_this","setIndex","clearTimeout","keyWasJustPressedTimeout","setTimeout","complete","eq","find","click","scrollToItem","$dropdown","$items","rangedIndex","$item","removeClass","addClass","scrollTop","dropdownScroll","dropdownTop","offset","dropdownBottom","outerHeight","itemTop","itemBottom","stop","animate","Component","addComposerAutocomplete","emojiKeys","keys","emojiMap","extend","ComposerBody","original","isInitialized","emojiStart","typed","composer","$container","dropdown","$textarea","wrap","navigator","KeyboardNavigatable","when","onUp","onDown","onSelect","onCancel","bindTo","after","on","e","which","cursor","selectionStart","selectionEnd","character","substr","makeSuggestion","_ref","onclick","insert","content","editor","setValue","setSelectionRange","onmouseenter","parent","class","draggable","reEscape","similarEmoji","regTyped","RegExp","maxSuggestions","findMatchingEmojis","matcher","curEmoji","_iterator","_isArray","Array","isArray","_i2","iterator","_ref2","next","done","suggestions","render","width","outerWidth","offsetParent","Math","max","buildSuggestions","TextEditor","_this2","add","TextEditorButton_default","a","insertAtCursor","initializers","override","Post","contentHtml","oldContentHtml","emojifiedContentHtml","s9e","TextFormatter"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['app'];","/* jshint browser: true */\n\n(function () {\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nvar properties = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n\n 'letterSpacing',\n 'wordSpacing',\n\n 'tabSize',\n 'MozTabSize'\n\n];\n\nvar isBrowser = (typeof window !== 'undefined');\nvar isFirefox = (isBrowser && window.mozInnerScreenX != null);\n\nfunction getCaretCoordinates(element, position, options) {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n\n var debug = options && options.debug || false;\n if (debug) {\n var el = document.querySelector('#input-textarea-caret-position-mirror-div');\n if (el) el.parentNode.removeChild(el);\n }\n\n // The mirror div will replicate the textarea's style\n var div = document.createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n\n var style = div.style;\n var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9\n var isInput = element.nodeName === 'INPUT';\n\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput)\n style.wordWrap = 'break-word'; // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n if (!debug)\n style.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n // Transfer the element's properties to the div\n properties.forEach(function (prop) {\n if (isInput && prop === 'lineHeight') {\n // Special case for s because text is rendered centered and line height may be != height\n style.lineHeight = computed.height;\n } else {\n style[prop] = computed[prop];\n }\n });\n\n if (isFirefox) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n\n div.textContent = element.value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput)\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n\n var span = document.createElement('span');\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n\n var coordinates = {\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\n left: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n height: parseInt(computed['lineHeight'])\n };\n\n if (debug) {\n span.style.backgroundColor = '#aaa';\n } else {\n document.body.removeChild(div);\n }\n\n return coordinates;\n}\n\nif (typeof module != 'undefined' && typeof module.exports != 'undefined') {\n module.exports = getCaretCoordinates;\n} else if(isBrowser) {\n window.getCaretCoordinates = getCaretCoordinates;\n}\n\n}());\n","module.exports = flarum.core.compat['components/ComposerBody'];","module.exports = flarum.core.compat['components/TextEditor'];","module.exports = flarum.core.compat['components/TextEditorButton'];","module.exports = flarum.core.compat['utils/KeyboardNavigatable'];","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['models/Post'];","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\nvar twemoji=function(){\"use strict\";var twemoji={base:\"https://twemoji.maxcdn.com/v/12.1.2/\",ext:\".png\",size:\"72x72\",className:\"emoji\",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\"'\":\"'\",'\"':\""\"},re=/(?:\\ud83d\\udc68\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c\\udffb|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c\\udffb|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffc]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffd]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c\\udffb|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1|\\ud83d\\udc6b\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6c\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6d\\ud83c[\\udffb-\\udfff]|\\ud83d[\\udc6b-\\udc6d])|(?:\\ud83d[\\udc68\\udc69])(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddaf-\\uddb3\\uddbc\\uddbd])|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddcd-\\uddcf\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f|(?:\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc15\\u200d\\ud83e\\uddba|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f)|[#*0-9]\\ufe0f?\\u20e3|(?:[ยฉยฎ\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26a7\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c[\\udf85\\udfc2-\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4-\\udeb6\\udec0\\udecc]|\\ud83e[\\udd0f\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\uddb5\\uddb6\\uddb8\\uddb9\\uddbb\\uddcd-\\uddcf\\uddd1-\\udddd]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf5\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a-\\udc6d\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\uded5\\udeeb\\udeec\\udef4-\\udefa\\udfe0-\\udfeb]|\\ud83e[\\udd0d\\udd0e\\udd10-\\udd17\\udd1d\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd3f-\\udd45\\udd47-\\udd71\\udd73-\\udd76\\udd7a-\\udda2\\udda5-\\uddaa\\uddae-\\uddb4\\uddb7\\uddba\\uddbc-\\uddca\\uddd0\\uddde-\\uddff\\ude70-\\ude73\\ude78-\\ude7a\\ude80-\\ude82\\ude90-\\ude95]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g,UFE0Fg=/\\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'\"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,\"\"):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return\"\".concat(options.base,options.size,\"/\",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!(\"ownerSVGElement\"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,\"\"):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute(\"draggable\",\"false\");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf(\"on\")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i\")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value===\"number\"?value+\"x\"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint===\"string\"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how===\"function\"){how={callback:how}}return(typeof what===\"string\"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes===\"function\"?how.attributes:returnNull,base:typeof how.base===\"string\"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i\n
  • {app.translator.trans('flarum-emoji.forum.composer.type_to_search_text')}
  • \n {this.props.items.map(item =>
  • {item}
  • )}\n \n );\n }\n\n show(left, top) {\n this.$().show().css({\n left: left + 'px',\n top: top + 'px'\n });\n this.active = true;\n }\n\n hide() {\n this.$().hide();\n this.active = false;\n }\n\n navigate(delta) {\n this.keyWasJustPressed = true;\n this.setIndex(this.index + delta, true);\n clearTimeout(this.keyWasJustPressedTimeout);\n this.keyWasJustPressedTimeout = setTimeout(() => this.keyWasJustPressed = false, 500);\n }\n\n complete() {\n this.$('li:not(.Dropdown-header)').eq(this.index).find('button').click();\n }\n\n setIndex(index, scrollToItem) {\n if (this.keyWasJustPressed && !scrollToItem) return;\n\n const $dropdown = this.$();\n const $items = $dropdown.find('li:not(.Dropdown-header)');\n let rangedIndex = index;\n\n if (rangedIndex < 0) {\n rangedIndex = $items.length - 1;\n } else if (rangedIndex >= $items.length) {\n rangedIndex = 0;\n }\n\n this.index = rangedIndex;\n\n const $item = $items.removeClass('active').eq(rangedIndex).addClass('active');\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop();\n const dropdownTop = $dropdown.offset().top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight();\n const itemTop = $item.offset().top;\n const itemBottom = itemTop + $item.outerHeight();\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({scrollTop}, 100);\n }\n }\n }\n}\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import getCaretCoordinates from 'textarea-caret';\nimport emojiMap from 'simple-emoji-map';\n\nimport { extend } from 'flarum/extend';\nimport ComposerBody from 'flarum/components/ComposerBody';\nimport TextEditor from 'flarum/components/TextEditor';\nimport TextEditorButton from 'flarum/components/TextEditorButton';\nimport getEmojiIconCode from './helpers/getEmojiIconCode';\nimport KeyboardNavigatable from 'flarum/utils/KeyboardNavigatable';\n\nimport AutocompleteDropdown from './components/AutocompleteDropdown';\n\nexport default function addComposerAutocomplete() {\n const emojiKeys = Object.keys(emojiMap);\n\n extend(ComposerBody.prototype, 'config', function(original, isInitialized) {\n if (isInitialized) return;\n\n const composer = this;\n const $container = $('
    ');\n const dropdown = new AutocompleteDropdown({items: []});\n const $textarea = this.$('textarea').wrap('
    ');\n let emojiStart;\n let typed;\n\n const applySuggestion = function(replacement) {\n const insert = replacement + ' ';\n\n // When calling setValue(), emojiStart will be set back to 0 so we need to compute this beforehand\n const index = emojiStart - 1 + insert.length;\n\n const content = composer.content();\n composer.editor.setValue(content.substring(0, emojiStart - 1) + insert + content.substr($textarea[0].selectionStart));\n\n composer.editor.setSelectionRange(index, index);\n\n dropdown.hide();\n };\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when(() => dropdown.active)\n .onUp(() => dropdown.navigate(-1))\n .onDown(() => dropdown.navigate(1))\n .onSelect(dropdown.complete.bind(dropdown))\n .onCancel(dropdown.hide.bind(dropdown))\n .bindTo($textarea);\n\n $textarea\n .after($container)\n .on('click keyup input', function(e) {\n // Up, down, enter, tab, escape, left, right.\n if ([9, 13, 27, 40, 38, 37, 39].indexOf(e.which) !== -1) return;\n\n const cursor = this.selectionStart;\n\n if (this.selectionEnd - cursor > 0) return;\n\n // Search backwards from the cursor for an ':' symbol. If we find\n // one and followed by a whitespace, we will want to show the\n // autocomplete dropdown!\n const value = this.value;\n emojiStart = 0;\n for (let i = cursor - 1; i >= 0; i--) {\n const character = value.substr(i, 1);\n // check what user typed, emoji names only contains alphanumeric,\n // underline, '+' and '-'\n if (!/[a-z0-9]|\\+|\\-|_|\\:/.test(character)) break;\n // make sure ':' followed by a whitespace or newline\n if (character === ':' && (i == 0 || /\\s/.test(value.substr(i - 1, 1)))) {\n emojiStart = i + 1;\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (emojiStart) {\n typed = value.substring(emojiStart, cursor).toLowerCase();\n\n const makeSuggestion = function({emoji, name, code}) {\n return (\n applySuggestion(emoji)}\n onmouseenter={function() {\n dropdown.setIndex($(this).parent().index() - 1);\n }}>\n {emoji}\n {name}\n \n );\n };\n\n const buildSuggestions = () => {\n const similarEmoji = [];\n\n // Build a regular expression to do a fuzzy match of the given input string\n const fuzzyRegexp = function(str) {\n const reEscape = new RegExp('\\\\(([' + ('+.*?[]{}()^$|\\\\'.replace(/(.)/g, '\\\\$1')) + '])\\\\)', 'g');\n return new RegExp('(.*)' + (str.toLowerCase().replace(/(.)/g, '($1)(.*?)')).replace(reEscape, '(\\\\$1)') + '$', 'i');\n };\n const regTyped = fuzzyRegexp(typed);\n\n let maxSuggestions = 7;\n\n const findMatchingEmojis = matcher => {\n for (let i = 0; i < emojiKeys.length && maxSuggestions > 0; i++) {\n const curEmoji = emojiKeys[i];\n\n if (similarEmoji.indexOf(curEmoji) === -1) {\n const names = emojiMap[curEmoji];\n for (let name of names) {\n if (matcher(name)) {\n --maxSuggestions;\n similarEmoji.push(curEmoji);\n break;\n }\n }\n }\n }\n };\n\n // First, try to find all emojis starting with the given string\n findMatchingEmojis(emoji => emoji.indexOf(typed) === 0);\n\n // If there are still suggestions left, try for some fuzzy matches\n findMatchingEmojis(emoji => regTyped.test(emoji));\n\n const suggestions = similarEmoji.map(emoji => ({\n emoji,\n name: emojiMap[emoji][0],\n code: getEmojiIconCode(emoji),\n })).map(makeSuggestion);\n\n if (suggestions.length) {\n dropdown.props.items = suggestions;\n m.render($container[0], dropdown.render());\n\n dropdown.show();\n const coordinates = getCaretCoordinates(this, emojiStart);\n const width = dropdown.$().outerWidth();\n const height = dropdown.$().outerHeight();\n const parent = dropdown.$().offsetParent();\n let left = coordinates.left;\n let top = coordinates.top + 15;\n if (top + height > parent.height()) {\n top = coordinates.top - height - 15;\n }\n if (left + width > parent.width()) {\n left = parent.width() - width;\n }\n top = Math.max(-$(this).offset().top, top);\n left = Math.max(-$(this).offset().left, left);\n dropdown.show(left, top);\n }\n };\n\n buildSuggestions();\n\n dropdown.setIndex(0);\n dropdown.$().scrollTop(0);\n dropdown.active = true;\n }\n });\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function(items) {\n items.add('emoji', (\n this.insertAtCursor(':')} icon=\"far fa-smile\">\n {app.translator.trans('flarum-emoji.forum.composer.emoji_tooltip')}\n \n ));\n });\n}\n","import app from 'flarum/app';\n\nimport addComposerAutocomplete from './addComposerAutocomplete';\nimport renderEmoji from './renderEmoji';\n\napp.initializers.add('flarum-emoji', () => {\n // After typing ':' in the composer, show a dropdown suggesting a bunch of\n // emoji that the user could use.\n addComposerAutocomplete();\n\n // render emoji as image in Posts content and title.\n renderEmoji();\n});\n","/*global s9e*/\n\nimport twemoji from 'twemoji';\n\nimport { override } from 'flarum/extend';\nimport Post from 'flarum/models/Post';\n\nexport default function renderEmoji() {\n override(Post.prototype, 'contentHtml', function(original) {\n const contentHtml = original();\n\n if (this.oldContentHtml !== contentHtml) {\n this.emojifiedContentHtml = twemoji.parse(contentHtml);\n this.oldContentHtml = contentHtml;\n }\n\n return this.emojifiedContentHtml;\n });\n\n override(s9e.TextFormatter, 'preview', (original, text, element) => {\n original(text, element);\n\n twemoji.parse(element);\n });\n}\n"],"sourceRoot":""} \ No newline at end of file