UNPKG

thelounge

Version:

The self-hosted Web IRC client

1 lines 99.8 kB
webpackJsonp([0],[,,,function(e,n,a){function t(e){return e&&(e.__esModule?e.default:e)}var i=a(2);e.exports=(i.default||i).template({compiler:[7,">= 4.0.0"],main:function(e,n,i,r,o){var l=e.escapeExpression,s=e.lambda;return'<span role="button" class="user '+l(t(a(198)).call(null!=n?n:e.nullContext||{},null!=n?n.nick:n,{name:"colorClass",hash:{},data:o}))+'" data-name="'+l(s(null!=n?n.nick:n,n))+'">'+l(s(null!=n?n.mode:n,n))+l(s(null!=n?n.nick:n,n))+"</span>\n"},useData:!0})},function(e,n,a){"use strict";var t=a(1),i=a(248),r=window.location.pathname+"socket.io/",o=i({transports:t(document.body).data("transports"),path:r,autoConnect:!1,reconnection:!1});["connect_error","connect_failed","disconnect","error"].forEach(function(e){o.on(e,function(e){t("#loading-page-message").text("Connection failed: "+e),t("#connection-error").addClass("shown").one("click",function(){window.onbeforeunload=null,window.location.reload()}),t("#input").off("keydown").on("keydown",function(e){13!==e.which||e.shiftKey||e.preventDefault()}),t("#submit").remove(),console.error(e)})}),o.on("connecting",function(){t("#loading-page-message").text("Connecting…")}),o.on("connect",function(){t("#loading-page-message").text("Finalizing connection…")}),o.on("authorized",function(){t("#loading-page-message").text("Authorized, loading messages…")}),e.exports=o},,function(e,n,a){"use strict";function t(e){var n=[];e.bold&&n.push("irc-bold"),void 0!==e.textColor&&n.push("irc-fg"+e.textColor),void 0!==e.bgColor&&n.push("irc-bg"+e.bgColor),e.italic&&n.push("irc-italic"),e.underline&&n.push("irc-underline");var a=n.length?' class="'+n.join(" ")+'"':"",t=i.Utils.escapeExpression(e.text);return e.hexColor&&(a+=' style="color:#'+e.hexColor,e.hexBgColor&&(a+=";background-color:#"+e.hexBgColor),a+='"'),a.length?"<span"+a+">"+t+"</span>":t}var i=a(2),r=a(199),o=a(200),l=a(213),s=a(214);e.exports=function(e){var n=r(e),a=n.map(function(e){return e.text}).join(""),c=["#","&"],u=["!","@","%","+"],d=o(a,c,u),h=l(a),m=d.concat(h).sort(function(e,n){return e.start-n.start});return s(m,n).map(function(e){var n=e.fragments.map(t).join("");if(e.link){return'<a href="'+i.Utils.escapeExpression(e.link)+'" target="_blank" rel="noopener">'+n+"</a>"}if(e.channel){return'<span class="inline-channel" role="button" tabindex="0" data-chan="'+i.Utils.escapeExpression(e.channel)+'">'+n+"</span>"}return n}).join("")}},,function(e,n,a){"use strict";e.exports=function(){return function(){}}},,function(e,n,a){"use strict";e.exports={actions:{action:a(182),ban_list:a(217),channel_list:a(218),ctcp:a(219),invite:a(220),join:a(221),kick:a(222),mode:a(223),nick:a(224),part:a(225),quit:a(226),topic:a(227),topic_set_by:a(228),whois:a(229)},chan:a(152),chat:a(230),contextmenu_divider:a(231),contextmenu_item:a(232),date_marker:a(233),msg:a(236),msg_action:a(237),msg_preview:a(238),msg_preview_toggle:a(239),msg_unhandled:a(240),network:a(241),image_viewer:a(243),unread_marker:a(244),user:a(245),user_filtered:a(247),user_name:a(3)}},function(e,n,a){"use strict";var t=a(0);e.exports=function(e){return t(e).format("D MMMM YYYY, HH:mm:ss")}},function(e,n,a){"use strict";e.exports=function(e,n,a){return e=e.toString(),n=n.toString(),e===n?a.fn(this):a.inverse(this)}},function(e,n,a){"use strict";var t=a(1),i=t("#settings"),r=t("#user-specified-css"),o=a(17),l=a(19),s=t("#windows"),c=t("#chat"),u=t.extend({coloredNicks:!0,desktopNotifications:!1,join:!0,links:!0,mode:!0,motd:!0,nick:!0,notification:!0,notifyAllMessages:!1,part:!0,quit:!0,showSeconds:!1,theme:t("#theme").attr("href").replace(/^themes\/(.*).css$/,"$1"),thumbnails:!0,userStyles:r.text(),highlights:[],autocomplete:!0},JSON.parse(o.get("settings")));e.exports=u,e.exports.shouldOpenMessagePreview=function(e){return u.links&&"link"===e||u.thumbnails&&"image"===e};for(var d in u)"userStyles"===d?(/[?&]nocss/.test(window.location.search)||t(document.head).find("#user-specified-css").html(u[d]),i.find("#user-specified-css-input").val(u[d])):"highlights"===d?i.find("input[name="+d+"]").val(u[d]):"theme"===d?(t("#theme").attr("href","themes/"+u[d]+".css"),i.find("select[name="+d+"]").val(u[d])):u[d]&&i.find("input[name="+d+"]").prop("checked",!0);i.on("change","input, select, textarea",function(){var e=t(this),n=e.attr("type"),a=e.attr("name");if("password"!==n)if(u[a]="checkbox"===n?e.prop("checked"):e.val(),o.set("settings",JSON.stringify(u)),-1!==["join","mode","motd","nick","part","quit","notifyAllMessages"].indexOf(a))c.toggleClass("hide-"+a,!e.prop("checked"));else if("coloredNicks"===a)c.toggleClass("colored-nicks",e.prop("checked"));else if("theme"===a)t("#theme").attr("href","themes/"+u[a]+".css");else if("userStyles"===a)r.html(u[a]);else if("highlights"===a){var i=u[a];u.highlights=i.split(",").map(function(e){return e.trim()}).filter(function(e){return""!==e})}else"showSeconds"===a?c.find(".msg > .time").each(function(){t(this).text(l(t(this).parent().data("time")))}):"autocomplete"===a&&(e.prop("checked")?t("#input").trigger("autocomplete:on"):t("#input").textcomplete("destroy"))}).find("input").trigger("change"),t("#desktopNotifications").on("change",function(){t(this).prop("checked")&&"granted"!==Notification.permission&&Notification.requestPermission(h)});var h=function(){"denied"===Notification.permission?(m.attr("disabled",!0),m.attr("checked",!1),f.show()):("default"===Notification.permission&&m.prop("checked")&&m.attr("checked",!1),m.attr("disabled",!1),f.hide())},m=t("#desktopNotifications"),p=t("#warnUnsupportedDesktopNotifications"),f=t("#warnBlockedDesktopNotifications");f.hide(),"Notification"in window?(p.hide(),s.on("show","#settings",h)):(u.desktopNotifications=!1,m.attr("disabled",!0),m.attr("checked",!1))},,function(e,n,a){"use strict";function t(e,n){return n.reduce(function(n,a){return n.append(i({chan:e,msg:a})),n},c(document.createDocumentFragment()))}function i(e){var n=e.msg.type,a="#chan-"+e.chan;"error"===n&&(a="#chan-"+f.find(".active").data("id"));var t=f.find(a),i="msg";e.msg.highlight||e.msg.self||"message"!==n&&"notice"!==n||!d.highlights.some(function(n){return e.msg.text.toLocaleLowerCase().indexOf(n.toLocaleLowerCase())>-1})||(e.msg.highlight=!0),-1!==["invite","join","mode","kick","nick","part","quit","topic","topic_set_by","action","whois","ctcp","channel_list","ban_list"].indexOf(n)?i="msg_action":"unhandled"===n&&(i="msg_unhandled");var r=c(u[i](e.msg)),o=r.find(".content");if("msg_action"===i&&o.html(u.actions[n](e.msg)),e.msg.previews.forEach(function(e){h(e,r)}),("message"===n||"action"===n||"notice"===n)&&t.hasClass("channel")){var l=t.find(".users").data("nicks");if(l){var s=l.indexOf(e.msg.from);-1!==s&&(l.splice(s,1),l.unshift(e.msg.from))}}return r}function r(e){o(e),"channel"===e.type&&l(e)}function o(e){var n=t(e.id,e.messages),a=f.find("#chan-"+e.id+" .messages").append(n);if(e.firstUnread>0){var i=a.find("#msg-"+e.firstUnread);i.length?i.before(u.unread_marker()):a.prepend(u.unread_marker())}else a.append(u.unread_marker());if("lobby"!==e.type){var r=void 0;c(f.find("#chan-"+e.id+" .messages .msg[data-time]")).each(function(){var e=c(this),n=new Date(e.attr("data-time"));r||(r=n,e.before(u.date_marker({msgDate:n}))),r.toDateString()!==n.toDateString()&&e.before(u.date_marker({msgDate:n})),r=n})}}function l(e){var n=f.find("#chan-"+e.id).find(".users"),a=e.users.concat().sort(function(e,n){return n.lastMessage-e.lastMessage}).map(function(e){return e.nick}),t=n.find(".search").attr("placeholder",a.length+" "+(1===a.length?"user":"users"));n.data("nicks",a).find(".names-original").html(u.user(e)),t.val().length&&t.trigger("input")}function s(e){g.find(".empty").hide(),g.find(".networks").append(u.network({networks:e.networks}));var n=c.map(e.networks,function(e){return e.channels});f.append(u.chat({channels:n})),n.forEach(function(e){r(e),"channel"===e.type&&f.find("#chan-"+e.id).data("needsNamesRefresh",!0)}),m.confirmExit(),p(),g.find(".highlight").length&&m.toggleNotificationMarkers(!0)}var c=a(1),u=a(10),d=a(13),h=a(167),m=a(28),p=a(276),f=c("#chat"),g=c("#sidebar");e.exports={buildChannelMessages:t,buildChatMessage:i,renderChannel:r,renderChannelMessages:o,renderChannelUsers:l,renderNetworks:s}},,function(e,n,a){"use strict";e.exports={set:function(e,n){try{window.localStorage.setItem(e,n)}catch(e){}},get:function(e){return window.localStorage.getItem(e)},remove:function(e,n){window.localStorage.removeItem(e,n)}}},function(e,n,a){"use strict";e.exports=function(e){return e.toLowerCase().replace(/[^a-z0-9]/,"-")}},function(e,n,a){"use strict";var t=a(0),i=a(153);e.exports=function(e){var n=a(13),r=n.showSeconds?i.timeFormats.msgWithSeconds:i.timeFormats.msgDefault;return t(e).format(r)}},,,,,,,,,function(e,n,a){"use strict";function t(e){e.style.height=e.style.minHeight}function i(){m.trigger("click").focus()}function r(){h.find(".active").find(".show-more").addClass("show").end().find(".messages .msg, .date-marker-container").remove()}function o(e){d("#nick").toggleClass("editable",e),d("#nick-value").attr("contenteditable",e)}function l(e){o(!1),d("#nick-value").text(e)}function s(e){if(p.data("toggled")!==e){var n=p.attr("href");p.attr("href",p.data("other")),p.data("other",n),p.data("toggled",e)}d("#viewport .lt").toggleClass("notified",e)}function c(){d("body").hasClass("public")&&(window.onbeforeunload=function(){return"Are you sure you want to navigate away from this page?"})}function u(e,n,a){if(a>=e.length)for(var t=a-e.length;1+t--;)this.push(void 0);return e.splice(a,0,e.splice(n,1)[0]),e}var d=a(1),h=d("#chat"),m=d("#input");e.exports={clear:r,confirmExit:c,forceFocus:i,move:u,resetHeight:t,setNick:l,toggleNickEditor:o,toggleNotificationMarkers:s};var p=d("#favicon")},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,n,a){"use strict";e.exports=function(e){return e<1e3?e:(e/1e3).toFixed(2).slice(0,-1)+"k"}},,function(e,n,a){function t(e){return e&&(e.__esModule?e.default:e)}var i=a(2);e.exports=(i.default||i).template({1:function(e,n,i,r,o){var l,s=e.lambda,c=e.escapeExpression,u=null!=n?n:e.nullContext||{};return'<div data-id="'+c(s(null!=n?n.id:n,n))+'" data-target="#chan-'+c(s(null!=n?n.id:n,n))+'" data-title="'+c(s(null!=n?n.name:n,n))+'" class="chan '+c(s(null!=n?n.type:n,n))+" chan-"+c(t(a(18)).call(u,null!=n?n.name:n,{name:"slugify",hash:{},data:o}))+'">\n\t<span class="badge'+(null!=(l=i.if.call(u,null!=n?n.highlight:n,{name:"if",hash:{},fn:e.program(2,o,0),inverse:e.noop,data:o}))?l:"")+'">'+(null!=(l=i.if.call(u,null!=n?n.unread:n,{name:"if",hash:{},fn:e.program(4,o,0),inverse:e.noop,data:o}))?l:"")+'</span>\n\t<button class="close" aria-label="Close"></button>\n\t<span class="name" title="'+c(s(null!=n?n.name:n,n))+'">'+c(s(null!=n?n.name:n,n))+"</span>\n</div>\n"},2:function(e,n,a,t,i){return" highlight"},4:function(e,n,i,r,o){return e.escapeExpression(t(a(150)).call(null!=n?n:e.nullContext||{},null!=n?n.unread:n,{name:"roundBadgeNumber",hash:{},data:o}))},compiler:[7,">= 4.0.0"],main:function(e,n,a,t,i){var r;return null!=(r=a.each.call(null!=n?n:e.nullContext||{},null!=n?n.channels:n,{name:"each",hash:{},fn:e.program(1,i,0),inverse:e.noop,data:i}))?r:""},useData:!0})},function(e,n,a){"use strict";var t=[["00","White"],["01","Black"],["02","Blue"],["03","Green"],["04","Red"],["05","Brown"],["06","Magenta"],["07","Orange"],["08","Yellow"],["09","Light Green"],["10","Cyan"],["11","Light Cyan"],["12","Light Blue"],["13","Pink"],["14","Grey"],["15","Light Grey"]],i=["/away","/back","/ban","/banlist","/close","/collapse","/connect","/ctcp","/deop","/devoice","/disconnect","/expand","/invite","/join","/kick","/leave","/me","/mode","/msg","/nick","/notice","/op","/part","/query","/quit","/raw","/say","/send","/server","/slap","/topic","/unban","/voice","/whois"],r={msgDefault:"HH:mm",msgWithSeconds:"HH:mm:ss"};e.exports={colorCodeMap:t,timeFormats:r,commands:i}},function(e,n,a){"use strict";var t;e.exports=function(e,n){return e!==t?(t=e,n.fn(this)):n.inverse(this)}},,,,,,,,,,,,,function(e,n,a){"use strict";function t(e,n){if("loading"!==e.type){var a=e.link.replace(/["\\]/g,"\\$&"),t=n.find('.preview[data-url="'+a+'"]');if(t.is(":empty")){e.shown=e.shown&&s.shouldOpenMessagePreview(e.type);var r=n.closest(".chat"),o=!1;r.length&&(o=r.isScrollBottom()),n.find('.text a[href="'+a+'"]').first().after(u.msg_preview_toggle({preview:e}).trim()),t.append(u.msg_preview({preview:e})),e.shown&&o&&i(n.find(".toggle-content"),r),r.trigger("keepToBottom")}}}function i(e,n){var a=e.find("img");a.length&&!a.width()&&a.on("load",function(){n.trigger("keepToBottom")})}function r(e){l(".previous-image").removeClass("previous-image"),l(".next-image").removeClass("next-image");var n=e.closest(".preview").prev(".preview").find(".toggle-content.show .toggle-thumbnail").last();n.length||(n=e.closest(".msg").prevAll().find(".toggle-content.show .toggle-thumbnail").last()),n.addClass("previous-image");var a=e.closest(".preview").next(".preview").find(".toggle-content.show .toggle-thumbnail").first();a.length||(a=e.closest(".msg").nextAll().find(".toggle-content.show .toggle-thumbnail").first()),a.addClass("next-image"),h.html(u.image_viewer({image:e.find("img").attr("src"),link:e.attr("href"),type:e.parent().hasClass("toggle-type-image")?"image":"link",hasPreviousImage:n.length>0,hasNextImage:a.length>0})),h.addClass("opened")}function o(){h.removeClass("opened").one("transitionend",function(){h.empty()}),d.focus()}var l=a(1),s=a(13),c=a(4),u=a(10),d=l("#input");e.exports=t,l("#chat").on("click",".toggle-button",function(){var e=l(this),n=e.closest(".chat"),a=e.closest(".content").find('.preview[data-url="'+e.data("url")+'"] .toggle-content'),t=n.isScrollBottom();t&&!a.hasClass("show")&&i(a,n),e.toggleClass("opened"),a.toggleClass("show"),c.emit("msg:preview:toggle",{target:parseInt(e.closest(".chan").data("id"),10),msgId:parseInt(e.closest(".msg").attr("id").replace("msg-",""),10),link:e.data("url"),shown:a.hasClass("show")}),t&&n.scrollBottom()});var h=l("#image-viewer");l("#chat").on("click",".toggle-thumbnail",function(){return r(l(this)),!1}),h.on("click",function(){o()}),l(document).keydown(function(e){switch(e.keyCode?e.keyCode:e.which){case 27:o();break;case 37:h.hasClass("opened")&&h.find(".previous-image-btn").click();break;case 39:h.hasClass("opened")&&h.find(".next-image-btn").click()}}),h.on("click",".previous-image-btn",function(){return l(".previous-image").click(),!1}),h.on("click",".next-image-btn",function(){return l(".next-image").click(),!1})},function(e,n,a){"use strict";var t=function(){function e(e,n){var a=[],t=!0,i=!1,r=void 0;try{for(var o,l=e[Symbol.iterator]();!(t=(o=l.next()).done)&&(a.push(o.value),!n||a.length!==n);t=!0);}catch(e){i=!0,r=e}finally{try{!t&&l.return&&l.return()}finally{if(i)throw r}}return a}return function(n,a){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return e(n,a);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();a(169),a(173);var i=a(1),r=a(0),o=a(175),l=a(146),s=a(176),c=a(177);a(178),a(179),a(180);var u=a(150),d=a(181),h=a(10),m=a(4);a(272);var p=a(153),f=a(17),g=a(28);i(function(){function e(e,n){var a,t=I.outerWidth(),i=I.outerHeight();return e.hasClass("menu")?(a=e.offset(),a.left-=t-e.outerWidth(),a.top+=e.outerHeight(),a):(a={left:n.pageX,top:n.pageY},window.innerWidth-a.left<t&&(a.left=window.innerWidth-t),window.innerHeight-a.top<i&&(a.top=window.innerHeight-i),a)}function n(n,a){var t=i(a.currentTarget),r="";return t.hasClass("user")?r=h.contextmenu_item({class:"user",text:t.text(),data:t.data("name")}):t.hasClass("chan")&&(r=h.contextmenu_item({class:"chan",text:t.data("title"),data:t.data("target")}),r+=h.contextmenu_divider(),r+=h.contextmenu_item({class:"close",text:t.hasClass("lobby")?"Disconnect":t.hasClass("channel")?"Leave":"Close",data:t.data("target")})),W.show(),I.html(r).css(e(i(n),a)),!1}function _(e){e.style.height=e.style.minHeight}function v(){F.textcomplete([N,z,j,O,T,L],{dropdownClassName:"textcomplete-menu",placement:"top"}).on({"textComplete:show":function(){i(this).data("autocompleting",!0)},"textComplete:hide":function(){i(this).data("autocompleting",!1)}})}function b(e){return e=e.toLowerCase(),i(".network .chan.active").parent(".network").find(".chan").filter(function(){return i(this).data("title").toLowerCase()===e}).first()}function w(){var e=i("#nick-value").text().trim();if(0===e.length)return void k();g.toggleNickEditor(!1),m.emit("input",{target:E.data("id"),text:"/nick "+e})}function k(){g.setNick(S.find(".chan.active").closest(".network").data("nick"))}function y(e){var n=E.find(".active .users");if(!n.length)return[];var a=n.data("nicks");return i.grep(a,function(n){return!n.toLowerCase().indexOf(e.toLowerCase())})}function x(e){var n=p.commands.slice();return i.grep(n,function(n){return!n.toLowerCase().indexOf(e.toLowerCase())})}function C(e){var n=[];return S.find(".chan").each(function(){var e=i(this);e.hasClass("lobby")||n.push(e.data("title"))}),i.grep(n,function(n){return!n.toLowerCase().indexOf(e.toLowerCase())})}function M(){return r().add(1,"day").startOf("day")-r()}function D(){i(".date-marker-text[data-label='Today'], .date-marker-text[data-label='Yesterday']").closest(".date-marker-container").each(function(){i(this).replaceWith(h.date_marker({msgDate:i(this).data("timestamp")}))}),setTimeout(D,M())}var S=i("#sidebar, #footer"),E=i("#chat");i(document.body).data("app-name",document.title);var q;try{q=new Audio,q.src="audio/pop.ogg"}catch(e){q={play:i.noop}}i("#play").on("click",function(){q.play()});var P=Object.keys(c),N={id:"emoji",match:/\B:([-+\w]*):?$/,search:function(e,n){n(s.filter(e,P,{pre:"<b>",post:"</b>"}).map(function(e){return[e.string,e.original]}))},template:function(e){var n=t(e,2),a=n[0],i=n[1];return'<span class="emoji">'+c[i]+"</span> "+a},replace:function(e){var n=t(e,2),a=n[1];return c[a]},index:1},z={id:"nicks",match:/\B(@([a-zA-Z_[\]\\^{}|`@][a-zA-Z0-9_[\]\\^{}|`-]*)?)$/,search:function(e,n){e=e.slice(1),n("@"===e[0]?y(e.slice(1)).map(function(e){return"@"+e}):y(e))},template:function(e){return e},replace:function(e){return e},index:1},j={id:"chans",match:/\B((#|\+|&|![A-Z0-9]{5})([^\x00\x0A\x0D\x20\x2C\x3A]+(:[^\x00\x0A\x0D\x20\x2C\x3A]*)?)?)$/,search:function(e,n,a){n(C(a[0]))},template:function(e){return e},replace:function(e){return e},index:1},O={id:"commands",match:/^\/(\w*)$/,search:function(e,n){n(x("/"+e))},template:function(e){return e},replace:function(e){return e},index:1},T={id:"foreground-colors",match:/\x03(\d{0,2}|[A-Za-z ]{0,10})$/,search:function(e,n){e=e.toLowerCase(),n(p.colorCodeMap.filter(function(n){return n[0].startsWith(e)||n[1].toLowerCase().startsWith(e)}))},template:function(e){return'<span class="irc-fg'+parseInt(e[0],10)+'">'+e[1]+"</span>"},replace:function(e){return""+e[0]},index:1},L={id:"background-colors",match:/\x03(\d{2}),(\d{0,2}|[A-Za-z ]{0,10})$/,search:function(e,n,a){e=e.toLowerCase(),n(p.colorCodeMap.filter(function(n){return n[0].startsWith(e)||n[1].toLowerCase().startsWith(e)}).map(function(e){return e.concat(a[1])}))},template:function(e){return'<span class="irc-fg'+parseInt(e[2],10)+" irc-bg irc-bg"+parseInt(e[0],10)+'">'+e[1]+"</span>"},replace:function(e){return"$1,"+e[0]},index:2},B=a(13),A=i("#windows"),H=i("#viewport"),Y=d(H[0],S[0]),W=i("#context-menu-container"),I=i("#context-menu");i("#main").on("click",function(e){i(e.target).is(".lt")?Y.toggle(!Y.isOpen()):Y.isOpen()&&Y.toggle(!1)}),H.on("click",".rt",function(e){var n=i(this);H.toggleClass(n.attr("class")),e.stopPropagation(),E.find(".chan.active .chat").trigger("msg.sticky")}),H.on("contextmenu",".user, .network .chan",function(e){return n(this,e)}),H.on("click","#chat .menu",function(e){return e.currentTarget=i(e.currentTarget).closest(".chan")[0],n(this,e)}),W.on("click contextmenu",function(){return W.hide(),!1});var F=i("#input").history().on("input",function(){var e=window.getComputedStyle(this);_(this),this.style.height=Math.min(Math.round(window.innerHeight-100),this.scrollHeight+Math.round(parseFloat(e.borderTopWidth)||0)+Math.round(parseFloat(e.borderBottomWidth)||0))+"px",E.find(".chan.active .chat").trigger("msg.sticky")}).tab(y,{hint:!1}).on("autocomplete:on",function(){v()});B.autocomplete&&v();var R=i.noop;"ontouchstart"in window||navigator.maxTouchPoints>0||(R=function(){E.find(".active").hasClass("chan")&&F.focus()},i(window).on("focus",R),E.on("click",".chat",function(){setTimeout(function(){var e="";window.getSelection?e=window.getSelection().toString():document.selection&&"Control"!==document.selection.type&&(e=document.selection.createRange().text),e||R()},2)})),i("#form").on("submit",function(e){e.preventDefault(),g.forceFocus();var n=F.val();if(0!==n.length)return F.val(""),_(F.get(0)),0===n.indexOf("/clear")?void g.clear():0===n.indexOf("/collapse")?void i(".chan.active .toggle-button.opened").click():0===n.indexOf("/expand")?void i(".chan.active .toggle-button:not(.opened)").click():void m.emit("input",{target:E.data("id"),text:n})}),i("button#set-nick").on("click",function(){g.toggleNickEditor(!0);var e=document.querySelector("#nick-value");e.focus();var n=document.createRange();n.selectNodeContents(e);var a=window.getSelection();a.removeAllRanges(),a.addRange(n)}),i("button#cancel-nick").on("click",k),i("button#submit-nick").on("click",w),i("#nick-value").keypress(function(e){switch(e.keyCode?e.keyCode:e.which){case 13:e.preventDefault()}}).keyup(function(e){switch(e.keyCode?e.keyCode:e.which){case 13:w();break;case 27:k()}}),E.on("click",".inline-channel",function(){var e=i(this).data("chan"),n=b(e);n.length?n.click():m.emit("input",{target:E.data("id"),text:"/join "+e})}),E.on("click",".user",function(){var e=i(this).data("name"),n=b(e);n.length&&n.click(),m.emit("input",{target:E.data("id"),text:"/whois "+e})}),S.on("click",".chan, button",function(e,n){if(!n||!1!==n.pushState){var a=i(this),t=a.data("target");if(t){var r={};a.hasClass("chan")?r.clickTarget='.chan[data-id="'+a.data("id")+'"]':r.clickTarget='#footer button[data-target="'+t+'"]',history&&history.pushState&&(n&&n.replaceHistory&&history.replaceState?history.replaceState(r,null,null):history.pushState(r,null,null))}}}),S.on("click",".chan, button",function(){var e=i(this),n=e.data("target");if(n){E.data("id",e.data("id")),m.emit("open",e.data("id")),S.find(".active").removeClass("active"),e.addClass("active").find(".badge").removeClass("highlight").empty(),0===S.find(".highlight").length&&g.toggleNotificationMarkers(!1),Y.toggle(!1);var a=i("#windows > .active");a.removeClass("active").find(".chat").unsticky();var t=a.find(".chan.active").removeClass("active");t.find(".unread-marker").appendTo(t.find(".messages"));var r=i(n).addClass("active").trigger("show"),o=i(document.body).data("app-name");r.data("title")&&(o=r.data("title")+" — "+o),document.title=o;var l="";"channel"!==r.data("type")&&"query"!==r.data("type")||(l="Write to "+r.data("title")),F.attr("placeholder",l),e.hasClass("chan")&&(i("#chat-container").addClass("active"),g.setNick(e.closest(".network").data("nick")));var s=r.find(".chat");s.length>0&&"special"!==r.data("type")&&s.sticky(),!0===r.data("needsNamesRefresh")&&(r.data("needsNamesRefresh",!1),m.emit("names",{target:e.data("id")})),R()}}),S.on("click","#sign-out",function(){f.remove("token"),location.reload()}),S.on("click",".close",function(){var e="/close",n=i(this).closest(".chan");if(n.hasClass("lobby")){e="/quit";var a=n.find(".name").html();if(!confirm("Disconnect from "+a+"?"))return!1}return m.emit("input",{target:n.data("id"),text:e}),n.css({transition:"none",opacity:.4}),!1}),I.on("click",".context-menu-item",function(){switch(i(this).data("action")){case"close":i(".networks .chan[data-target='"+i(this).data("data")+"'] .close").click();break;case"chan":i(".networks .chan[data-target='"+i(this).data("data")+"']").click();break;case"user":i(".channel.active .users .user[data-name='"+i(this).data("data")+"']").click()}}),E.on("input",".search",function(){var e=i(this).val(),n=i(this).closest(".users"),a=n.find(".names-original"),t=n.find(".names-filtered");if(!e.length)return t.hide(),void a.show();var r={pre:"<b>",post:"</b>",extract:function(e){return i(e).text()}},o=s.filter(e,a.find(".user").toArray(),r);a.hide(),t.html(h.user_filtered({matches:o})).show()}),E.on("msg",".messages",function(e,n,a){var t=a.unread;if(a=a.msg,!a.self){var r=S.find(".chan[data-target='"+n+"']");if((a.highlight||B.notifyAllMessages&&"message"===a.type)&&(!document.hasFocus()||!i(n).hasClass("active"))){if(B.notification)try{q.play()}catch(e){}if(g.toggleNotificationMarkers(!0),B.desktopNotifications&&"granted"===Notification.permission){var o,l;"invite"===a.type?(o="New channel invite:",l=a.from+" invited you to "+a.channel):(o=a.from,r.hasClass("query")||(o+=" ("+r.data("title").trim()+")"),"message"===a.type&&(o+=" says:"),l=a.text.replace(/\x03(?:[0-9]{1,2}(?:,[0-9]{1,2})?)?|[\x00-\x1F]|\x7F/g,"").trim());try{new Notification(o,{body:l,icon:"img/logo-64.png",tag:n}).addEventListener("click",function(){window.focus(),r.click(),this.close()})}catch(e){}}}if(!r.hasClass("active")&&t){var s=r.find(".badge").html(u(t));a.highlight&&s.addClass("highlight")}}}),E.on("click",".show-more-button",function(){var e=i(this),n=e.parent().next(".messages").children(".msg").first(),a=parseInt(n[0].id.replace("msg-",""),10);e.prop("disabled",!0),m.emit("more",{target:e.data("id"),lastId:a})});var U=i("#sign-in, #connect, #change-password");A.on("show","#sign-in",function(){i(this).find("input").each(function(){var e=i(this);if(""===e.val())return e.focus(),!1})}),i("body").hasClass("public")&&i("#connect").one("show",function(){var e=l(document.location.search);e=e.search(!0);for(var n in e)if(e.hasOwnProperty(n)){var a=e[n];n=n.replace(/\W/g,"");var t=i("#connect input[name='"+n+"']");t.length>0&&!t.is(":disabled")&&!t.is(":hidden")&&(t.is(":checkbox")?t.prop("checked","1"===a||"true"===a):t.val(a))}}),U.on("submit","form",function(e){e.preventDefault();var n="auth",a=i(this);a.find(".btn").attr("disabled",!0).end(),"connect"===a.closest(".window").attr("id")?n="conn":"change-password"===a.closest("div").attr("id")&&(n="change-password");var t={};i.each(a.serializeArray(),function(e,n){""!==n.value&&(t[n.name]=n.value)}),t.user&&f.set("user",t.user),m.emit(n,t)}),U.on("focusin",".nick",function(){var e=i(this);e.data("lastvalue",e.val())}),U.on("input",".nick",function(){var e=i(this).val(),n=U.find(".username"),a=i(this).data("lastvalue");n.val()===a&&n.val(e),i(this).data("lastvalue",e)}),function(){o.bind(["pageup","pagedown"],function(e,n){var a=A.find(".window.active");"chat-container"===a.attr("id")&&(a=a.find(".chan.active .chat")),a.finish();var t=.9*a.get(0).clientHeight,i=a.scrollTop();return i="pageup"===n?Math.floor(i-t):Math.ceil(i+t),a.animate({scrollTop:i},200),!1}),o.bind(["command+up","command+down","ctrl+up","ctrl+down"],function(e,n){var a=S.find(".chan"),t=a.index(a.filter(".active"));switch(n.split("+").pop()){case"up":var i=(a.length+(t-1+a.length))%a.length;a.eq(i).click();break;case"down":var r=(a.length+(t+1+a.length))%a.length;a.eq(r).click()}}),o.bind(["command+shift+l","ctrl+shift+l"],function(e){e.target===F[0]&&(g.clear(),e.preventDefault())}),o.bind(["escape"],function(){W.hide()});var e={k:"",b:"",u:"",i:"",o:""};for(var n in e)o.bind(["command+"+n,"ctrl+"+n],function(n){n.preventDefault();var a=F.prop("selectionStart"),t=F.prop("selectionEnd"),i=F.val(),r=i.substring(0,a)+e[n.key];r+=a===t?i.substring(t,i.length):i.substring(a,t)+e[n.key]+i.substring(t,i.length),F.val(r).get(0).setSelectionRange(a+1,t+1)})}(),setInterval(function(){E.find(".chan:not(.active)").each(function(){var e=i(this);e.find(".messages .msg").slice(0,-100).remove().length&&(e.find(".show-more").addClass("show"),e.find(".date-marker-container").each(function(){i(this).next().hasClass("date-marker-container")&&i(this).remove()}))})},1e4),i(document).on("visibilitychange focus click",function(){0===S.find(".highlight").length&&g.toggleNotificationMarkers(!1)}),setTimeout(D,M()),m.open(),window.addEventListener("popstate",function(e){var n=e.state;if(n){var a=n.clickTarget;a&&i(a).trigger("click",{pushState:!1})}})})},,,,,,,,,function(e,n){e.exports={100:"💯",1234:"🔢",grinning:"😀",grimacing:"😬",grin:"😁",joy:"😂",rofl:"🤣",smiley:"😃",smile:"😄",sweat_smile:"😅",laughing:"😆",innocent:"😇",wink:"😉",blush:"😊",slightly_smiling_face:"🙂",upside_down_face:"🙃",relaxed:"☺️",yum:"😋",relieved:"😌",heart_eyes:"😍",kissing_heart:"😘",kissing:"😗",kissing_smiling_eyes:"😙",kissing_closed_eyes:"😚",stuck_out_tongue_winking_eye:"😜",stuck_out_tongue_closed_eyes:"😝",stuck_out_tongue:"😛",money_mouth_face:"🤑",nerd_face:"🤓",sunglasses:"😎",clown_face:"🤡",cowboy_hat_face:"🤠",hugs:"🤗",smirk:"😏",no_mouth:"😶",neutral_face:"😐",expressionless:"😑",unamused:"😒",roll_eyes:"🙄",thinking:"🤔",lying_face:"🤥",flushed:"😳",disappointed:"😞",worried:"😟",angry:"😠",rage:"😡",pensive:"😔",confused:"😕",slightly_frowning_face:"🙁",frowning_face:"☹",persevere:"😣",confounded:"😖",tired_face:"😫",weary:"😩",triumph:"😤",open_mouth:"😮",scream:"😱",fearful:"😨",cold_sweat:"😰",hushed:"😯",frowning:"😦",anguished:"😧",cry:"😢",disappointed_relieved:"😥",drooling_face:"🤤",sleepy:"😪",sweat:"😓",sob:"😭",dizzy_face:"😵",astonished:"😲",zipper_mouth_face:"🤐",nauseated_face:"🤢",sneezing_face:"🤧",mask:"😷",face_with_thermometer:"🤒",face_with_head_bandage:"🤕",sleeping:"😴",zzz:"💤",poop:"💩",smiling_imp:"😈",imp:"👿",japanese_ogre:"👹",japanese_goblin:"👺",skull:"💀",ghost:"👻",alien:"👽",robot:"🤖",smiley_cat:"😺",smile_cat:"😸",joy_cat:"😹",heart_eyes_cat:"😻",smirk_cat:"😼",kissing_cat:"😽",scream_cat:"🙀",crying_cat_face:"😿",pouting_cat:"😾",raised_hands:"🙌",clap:"👏",wave:"👋",call_me_hand:"🤙","+1":"👍","-1":"👎",facepunch:"👊",fist:"✊",fist_left:"🤛",fist_right:"🤜",v:"✌",ok_hand:"👌",raised_hand:"✋",raised_back_of_hand:"🤚",open_hands:"👐",muscle:"💪",pray:"🙏",handshake:"🤝",point_up:"☝",point_up_2:"👆",point_down:"👇",point_left:"👈",point_right:"👉",fu:"🖕",raised_hand_with_fingers_splayed:"🖐",metal:"🤘",crossed_fingers:"🤞",vulcan_salute:"🖖",writing_hand:"✍",selfie:"🤳",nail_care:"💅",lips:"👄",tongue:"👅",ear:"👂",nose:"👃",eye:"👁",eyes:"👀",bust_in_silhouette:"👤",busts_in_silhouette:"👥",speaking_head:"🗣",baby:"👶",boy:"👦",girl:"👧",man:"👨",woman:"👩",blonde_woman:"👱‍♀️",blonde_man:"👱",older_man:"👴",older_woman:"👵",man_with_gua_pi_mao:"👲",woman_with_turban:"👳‍♀️",man_with_turban:"👳",policewoman:"👮‍♀️",policeman:"👮",construction_worker_woman:"👷‍♀️",construction_worker_man:"👷",guardswoman:"💂‍♀️",guardsman:"💂",female_detective:"🕵️‍♀️",male_detective:"🕵",woman_health_worker:"👩‍⚕️",man_health_worker:"👨‍⚕️",woman_farmer:"👩‍🌾",man_farmer:"👨‍🌾",woman_cook:"👩‍🍳",man_cook:"👨‍🍳",woman_student:"👩‍🎓",man_student:"👨‍🎓",woman_singer:"👩‍🎤",man_singer:"👨‍🎤",woman_teacher:"👩‍🏫",man_teacher:"👨‍🏫",woman_factory_worker:"👩‍🏭",man_factory_worker:"👨‍🏭",woman_technologist:"👩‍💻",man_technologist:"👨‍💻",woman_office_worker:"👩‍💼",man_office_worker:"👨‍💼",woman_mechanic:"👩‍🔧",man_mechanic:"👨‍🔧",woman_scientist:"👩‍🔬",man_scientist:"👨‍🔬",woman_artist:"👩‍🎨",man_artist:"👨‍🎨",woman_firefighter:"👩‍🚒",man_firefighter:"👨‍🚒",woman_pilot:"👩‍✈️",man_pilot:"👨‍✈️",woman_astronaut:"👩‍🚀",man_astronaut:"👨‍🚀",woman_judge:"👩‍⚖️",man_judge:"👨‍⚖️",mrs_claus:"🤶",santa:"🎅",angel:"👼",pregnant_woman:"🤰",princess:"👸",prince:"🤴",bride_with_veil:"👰",man_in_tuxedo:"🤵",running_woman:"🏃‍♀️",running_man:"🏃",walking_woman:"🚶‍♀️",walking_man:"🚶",dancer:"💃",man_dancing:"🕺",dancing_women:"👯",dancing_men:"👯‍♂️",couple:"👫",two_men_holding_hands:"👬",two_women_holding_hands:"👭",bowing_woman:"🙇‍♀️",bowing_man:"🙇",man_facepalming:"🤦",woman_facepalming:"🤦‍♀️",woman_shrugging:"🤷",man_shrugging:"🤷‍♂️",tipping_hand_woman:"💁",tipping_hand_man:"💁‍♂️",no_good_woman:"🙅",no_good_man:"🙅‍♂️",ok_woman:"🙆",ok_man:"🙆‍♂️",raising_hand_woman:"🙋",raising_hand_man:"🙋‍♂️",pouting_woman:"🙎",pouting_man:"🙎‍♂️",frowning_woman:"🙍",frowning_man:"🙍‍♂️",haircut_woman:"💇",haircut_man:"💇‍♂️",massage_woman:"💆",massage_man:"💆‍♂️",couple_with_heart_woman_man:"💑",couple_with_heart_woman_woman:"👩‍❤️‍👩",couple_with_heart_man_man:"👨‍❤️‍👨",couplekiss_man_woman:"💏",couplekiss_woman_woman:"👩‍❤️‍💋‍👩",couplekiss_man_man:"👨‍❤️‍💋‍👨",family_man_woman_boy:"👪",family_man_woman_girl:"👨‍👩‍👧",family_man_woman_girl_boy:"👨‍👩‍👧‍👦",family_man_woman_boy_boy:"👨‍👩‍👦‍👦",family_man_woman_girl_girl:"👨‍👩‍👧‍👧",family_woman_woman_boy:"👩‍👩‍👦",family_woman_woman_girl:"👩‍👩‍👧",family_woman_woman_girl_boy:"👩‍👩‍👧‍👦",family_woman_woman_boy_boy:"👩‍👩‍👦‍👦",family_woman_woman_girl_girl:"👩‍👩‍👧‍👧",family_man_man_boy:"👨‍👨‍👦",family_man_man_girl:"👨‍👨‍👧",family_man_man_girl_boy:"👨‍👨‍👧‍👦",family_man_man_boy_boy:"👨‍👨‍👦‍👦",family_man_man_girl_girl:"👨‍👨‍👧‍👧",family_woman_boy:"👩‍👦",family_woman_girl:"👩‍👧",family_woman_girl_boy:"👩‍👧‍👦",family_woman_boy_boy:"👩‍👦‍👦",family_woman_girl_girl:"👩‍👧‍👧",family_man_boy:"👨‍👦",family_man_girl:"👨‍👧",family_man_girl_boy:"👨‍👧‍👦",family_man_boy_boy:"👨‍👦‍👦",family_man_girl_girl:"👨‍👧‍👧",womans_clothes:"👚",tshirt:"👕",jeans:"👖",necktie:"👔",dress:"👗",bikini:"👙",kimono:"👘",lipstick:"💄",kiss:"💋",footprints:"👣",high_heel:"👠",sandal:"👡",boot:"👢",mans_shoe:"👞",athletic_shoe:"👟",womans_hat:"👒",tophat:"🎩",rescue_worker_helmet:"⛑",mortar_board:"🎓",crown:"👑",school_satchel:"🎒",pouch:"👝",purse:"👛",handbag:"👜",briefcase:"💼",eyeglasses:"👓",dark_sunglasses:"🕶",ring:"💍",closed_umbrella:"🌂",dog:"🐶",cat:"🐱",mouse:"🐭",hamster:"🐹",rabbit:"🐰",fox_face:"🦊",bear:"🐻",panda_face:"🐼",koala:"🐨",tiger:"🐯",lion:"🦁",cow:"🐮",pig:"🐷",pig_nose:"🐽",frog:"🐸",squid:"🦑",octopus:"🐙",shrimp:"🦐",monkey_face:"🐵",gorilla:"🦍",see_no_evil:"🙈",hear_no_evil:"🙉",speak_no_evil:"🙊",monkey:"🐒",chicken:"🐔",penguin:"🐧",bird:"🐦",baby_chick:"🐤",hatching_chick:"🐣",hatched_chick:"🐥",duck:"🦆",eagle:"🦅",owl:"🦉",bat:"🦇",wolf:"🐺",boar:"🐗",horse:"🐴",unicorn:"🦄",honeybee:"🐝",bug:"🐛",butterfly:"🦋",snail:"🐌",beetle:"🐞",ant:"🐜",spider:"🕷",scorpion:"🦂",crab:"🦀",snake:"🐍",lizard:"🦎",turtle:"🐢",tropical_fish:"🐠",fish:"🐟",blowfish:"🐡",dolphin:"🐬",shark:"🦈",whale:"🐳",whale2:"🐋",crocodile:"🐊",leopard:"🐆",tiger2:"🐅",water_buffalo:"🐃",ox:"🐂",cow2:"🐄",deer:"🦌",dromedary_camel:"🐪",camel:"🐫",elephant:"🐘",rhinoceros:"🦏",goat:"🐐",ram:"🐏",sheep:"🐑",racehorse:"🐎",pig2:"🐖",rat:"🐀",mouse2:"🐁",rooster:"🐓",turkey:"🦃",dove:"🕊",dog2:"🐕",poodle:"🐩",cat2:"🐈",rabbit2:"🐇",chipmunk:"🐿",paw_prints:"🐾",dragon:"🐉",dragon_face:"🐲",cactus:"🌵",christmas_tree:"🎄",evergreen_tree:"🌲",deciduous_tree:"🌳",palm_tree:"🌴",seedling:"🌱",herb:"🌿",shamrock:"☘",four_leaf_clover:"🍀",bamboo:"🎍",tanabata_tree:"🎋",leaves:"🍃",fallen_leaf:"🍂",maple_leaf:"🍁",ear_of_rice:"🌾",hibiscus:"🌺",sunflower:"🌻",rose:"🌹",wilted_flower:"🥀",tulip:"🌷",blossom:"🌼",cherry_blossom:"🌸",bouquet:"💐",mushroom:"🍄",chestnut:"🌰",jack_o_lantern:"🎃",shell:"🐚",spider_web:"🕸",earth_americas:"🌎",earth_africa:"🌍",earth_asia:"🌏",full_moon:"🌕",waning_gibbous_moon:"🌖",last_quarter_moon:"🌗",waning_crescent_moon:"🌘",new_moon:"🌑",waxing_crescent_moon:"🌒",first_quarter_moon:"🌓",waxing_gibbous_moon:"🌔",new_moon_with_face:"🌚",full_moon_with_face:"🌝",first_quarter_moon_with_face:"🌛",last_quarter_moon_with_face:"🌜",sun_with_face:"🌞",crescent_moon:"🌙",star:"⭐",star2:"🌟",dizzy:"💫",sparkles:"✨",comet:"☄",sunny:"☀️",sun_behind_small_cloud:"🌤",partly_sunny:"⛅",sun_behind_large_cloud:"🌥",sun_behind_rain_cloud:"🌦",cloud:"☁️",cloud_with_rain:"🌧",cloud_with_lightning_and_rain:"⛈",cloud_with_lightning:"🌩",zap:"⚡",fire:"🔥",boom:"💥",snowflake:"❄️",cloud_with_snow:"🌨",snowman:"⛄",snowman_with_snow:"☃",wind_face:"🌬",dash:"💨",tornado:"🌪",fog:"🌫",open_umbrella:"☂",umbrella:"☔",droplet:"💧",sweat_drops:"💦",ocean:"🌊",green_apple:"🍏",apple:"🍎",pear:"🍐",tangerine:"🍊",lemon:"🍋",banana:"🍌",watermelon:"🍉",grapes:"🍇",strawberry:"🍓",melon:"🍈",cherries:"🍒",peach:"🍑",pineapple:"🍍",kiwi_fruit:"🥝",avocado:"🥑",tomato:"🍅",eggplant:"🍆",cucumber:"🥒",carrot:"🥕",hot_pepper:"🌶",potato:"🥔",corn:"🌽",sweet_potato:"🍠",peanuts:"🥜",honey_pot:"🍯",croissant:"🥐",bread:"🍞",baguette_bread:"🥖",cheese:"🧀",egg:"🥚",bacon:"🥓",pancakes:"🥞",poultry_leg:"🍗",meat_on_bone:"🍖",fried_shrimp:"🍤",fried_egg:"🍳",hamburger:"🍔",fries:"🍟",stuffed_flatbread:"🥙",hotdog:"🌭",pizza:"🍕",spaghetti:"🍝",taco:"🌮",burrito:"🌯",green_salad:"🥗",shallow_pan_of_food:"🥘",ramen:"🍜",stew:"🍲",fish_cake:"🍥",sushi:"🍣",bento:"🍱",curry:"🍛",rice_ball:"🍙",rice:"🍚",rice_cracker:"🍘",oden:"🍢",dango:"🍡",shaved_ice:"🍧",ice_cream:"🍨",icecream:"🍦",cake:"🍰",birthday:"🎂",custard:"🍮",candy:"🍬",lollipop:"🍭",chocolate_bar:"🍫",popcorn:"🍿",doughnut:"🍩",cookie:"🍪",milk_glass:"🥛",beer:"🍺",beers:"🍻",clinking_glasses:"🥂",wine_glass:"🍷",tumbler_glass:"🥃",cocktail:"🍸",tropical_drink:"🍹",champagne:"🍾",sake:"🍶",tea:"🍵",coffee:"☕",baby_bottle:"🍼",spoon:"🥄",fork_and_knife:"🍴",plate_with_cutlery:"🍽",soccer:"⚽",basketball:"🏀",football:"🏈",baseball:"⚾",tennis:"🎾",volleyball:"🏐",rugby_football:"🏉","8ball":"🎱",golf:"⛳",golfing_woman:"🏌️‍♀️",golfing_man:"🏌",ping_pong:"🏓",badminton:"🏸",goal_net:"🥅",ice_hockey:"🏒",field_hockey:"🏑",cricket:"🏏",ski:"🎿",skier:"⛷",snowboarder:"🏂",person_fencing:"🤺",women_wrestling:"🤼‍♀️",men_wrestling:"🤼‍♂️",woman_cartwheeling:"🤸‍♀️",man_cartwheeling:"🤸‍♂️",woman_playing_handball:"🤾‍♀️",man_playing_handball:"🤾‍♂️",ice_skate:"⛸",bow_and_arrow:"🏹",fishing_pole_and_fish:"🎣",boxing_glove:"🥊",martial_arts_uniform:"🥋",rowing_woman:"🚣‍♀️",rowing_man:"🚣",swimming_woman:"🏊‍♀️",swimming_man:"🏊",woman_playing_water_polo:"🤽‍♀️",man_playing_water_polo:"🤽‍♂️",surfing_woman:"🏄‍♀️",surfing_man:"🏄",bath:"🛀",basketball_woman:"⛹️‍♀️",basketball_man:"⛹",weight_lifting_woman:"🏋️‍♀️",weight_lifting_man:"🏋",biking_woman:"🚴‍♀️",biking_man:"🚴",mountain_biking_woman:"🚵‍♀️",mountain_biking_man:"🚵",horse_racing:"🏇",business_suit_levitating:"🕴",trophy:"🏆",running_shirt_with_sash:"🎽",medal_sports:"🏅",medal_military:"🎖","1st_place_medal":"🥇","2nd_place_medal":"🥈","3rd_place_medal":"🥉",reminder_ribbon:"🎗",rosette:"🏵",ticket:"🎫",tickets:"🎟",performing_arts:"🎭",art:"🎨",circus_tent:"🎪",woman_juggling:"🤹‍♀️",man_juggling:"🤹‍♂️",microphone:"🎤",headphones:"🎧",musical_score:"🎼",musical_keyboard:"🎹",drum:"🥁",saxophone:"🎷",trumpet:"🎺",guitar:"🎸",violin:"🎻",clapper:"🎬",video_game:"🎮",space_invader:"👾",dart:"🎯",game_die:"🎲",slot_machine:"🎰",bowling:"🎳",red_car:"🚗",taxi:"🚕",blue_car:"🚙",bus:"🚌",trolleybus:"🚎",racing_car:"🏎",police_car:"🚓",ambulance:"🚑",fire_engine:"🚒",minibus:"🚐",truck:"🚚",articulated_lorry:"🚛",tractor:"🚜",kick_scooter:"🛴",motorcycle:"🏍",bike:"🚲",motor_scooter:"🛵",rotating_light:"🚨",oncoming_police_car:"🚔",oncoming_bus:"🚍",oncoming_automobile:"🚘",oncoming_taxi:"🚖",aerial_tramway:"🚡",mountain_cableway:"🚠",suspension_railway:"🚟",railway_car:"🚃",train:"🚋",monorail:"🚝",bullettrain_side:"🚄",bullettrain_front:"🚅",light_rail:"🚈",mountain_railway:"🚞",steam_locomotive:"🚂",train2:"🚆",metro:"🚇",tram:"🚊",station:"🚉",helicopter:"🚁",small_airplane:"🛩",airplane:"✈️",flight_departure:"🛫",flight_arrival:"🛬",sailboat:"⛵",motor_boat:"🛥",speedboat:"🚤",ferry:"⛴",passenger_ship:"🛳",rocket:"🚀",artificial_satellite:"🛰",seat:"💺",canoe:"🛶",anchor:"⚓",construction:"🚧",fuelpump:"⛽",busstop:"🚏",vertical_traffic_light:"🚦",traffic_light:"🚥",checkered_flag:"🏁",ship:"🚢",ferris_wheel:"🎡",roller_coaster:"🎢",carousel_horse:"🎠",building_construction:"🏗",foggy:"🌁",tokyo_tower:"🗼",factory:"🏭",fountain:"⛲",rice_scene:"🎑",mountain:"⛰",mountain_snow:"🏔",mount_fuji:"🗻",volcano:"🌋",japan:"🗾",camping:"🏕",tent:"⛺",national_park:"🏞",motorway:"🛣",railway_track:"🛤",sunrise:"🌅",sunrise_over_mountains:"🌄",desert:"🏜",beach_umbrella:"🏖",desert_island:"🏝",city_sunrise:"🌇",city_sunset:"🌆",cityscape:"🏙",night_with_stars:"🌃",bridge_at_night:"🌉",milky_way:"🌌",stars:"🌠",sparkler:"🎇",fireworks:"🎆",rainbow:"🌈",houses:"🏘",european_castle:"🏰",japanese_castle:"🏯",stadium:"🏟",statue_of_liberty:"🗽",house:"🏠",house_with_garden:"🏡",derelict_house:"🏚",office:"🏢",department_store:"🏬",post_office:"🏣",european_post_office:"🏤",hospital:"🏥",bank:"🏦",hotel:"🏨",convenience_store:"🏪",school:"🏫",love_hotel:"🏩",wedding:"💒",classical_building:"🏛",church:"⛪",mosque:"🕌",synagogue:"🕍",kaaba:"🕋",shinto_shrine:"⛩",watch:"⌚",iphone:"📱",calling:"📲",computer:"💻",keyboard:"⌨",desktop_computer:"🖥",printer:"🖨",computer_mouse:"🖱",trackball:"🖲",joystick:"🕹",clamp:"🗜",minidisc:"💽",floppy_disk:"💾",cd:"💿",dvd:"📀",vhs:"📼",camera:"📷",camera_flash:"📸",video_camera:"📹",movie_camera:"🎥",film_projector:"📽",film_strip:"🎞",telephone_receiver:"📞",phone:"☎️",pager:"📟",fax:"📠",tv:"📺",radio:"📻",studio_microphone:"🎙",level_slider:"🎚",control_knobs:"🎛",stopwatch:"⏱",timer_clock:"⏲",alarm_clock:"⏰",mantelpiece_clock:"🕰",hourglass_flowing_sand:"⏳",hourglass:"⌛",satellite:"📡",battery:"🔋",electric_plug:"🔌",bulb:"💡",flashlight:"🔦",candle:"🕯",wastebasket:"🗑",oil_drum:"🛢",money_with_wings:"💸",dollar:"💵",yen:"💴",euro:"💶",pound:"💷",moneybag:"💰",credit_card:"💳",gem:"💎",balance_scale:"⚖",wrench:"🔧",hammer:"🔨",hammer_and_pick:"⚒",hammer_and_wrench:"🛠",pick:"⛏",nut_and_bolt:"🔩",gear:"⚙",chains:"⛓",gun:"🔫",bomb:"💣",hocho:"🔪",dagger:"🗡",crossed_swords:"⚔",shield:"🛡",smoking:"🚬",skull_and_crossbones:"☠",coffin:"⚰",funeral_urn:"⚱",amphora:"🏺",crystal_ball:"🔮",prayer_beads:"📿",barber:"💈",alembic:"⚗",telescope:"🔭",microscope:"🔬",hole:"🕳",pill:"💊",syringe:"💉",thermometer:"🌡",label:"🏷",bookmark:"🔖",toilet:"🚽",shower:"🚿",bathtub:"🛁",key:"🔑",old_key:"🗝",couch_and_lamp:"🛋",sleeping_bed:"🛌",bed:"🛏",door:"🚪",bellhop_bell:"🛎",framed_picture:"🖼",world_map:"🗺",parasol_on_ground:"⛱",moyai:"🗿",shopping:"🛍",shopping_cart:"🛒",balloon:"🎈",flags:"🎏",ribbon:"🎀",gift:"🎁",confetti_ball:"🎊",tada:"🎉",dolls:"🎎",wind_chime:"🎐",crossed_flags:"🎌",izakaya_lantern:"🏮",email:"✉️",envelope_with_arrow:"📩",incoming_envelope:"📨","e-mail":"📧",love_letter:"💌",postbox:"📮",mailbox_closed:"📪",mailbox:"📫",mailbox_with_mail:"📬",mailbox_with_no_mail:"📭",package:"📦",postal_horn:"📯",inbox_tray:"📥",outbox_tray:"📤",scroll:"📜",page_with_curl:"📃",bookmark_tabs:"📑",bar_chart:"📊",chart_with_upwards_trend:"📈",chart_with_downwards_trend:"📉",page_facing_up:"📄",date:"📅",calendar:"📆",spiral_calendar:"🗓",card_index:"📇",card_file_box:"🗃",ballot_box:"🗳",file_cabinet:"🗄",clipboard:"📋",spiral_notepad:"🗒",file_folder:"📁",open_file_folder:"📂",card_index_dividers:"🗂",newspaper_roll:"🗞",newspaper:"📰",notebook:"📓",closed_book:"📕",green_book:"📗",blue_book:"📘",orange_book:"📙",notebook_with_decorative_cover:"📔",ledger:"📒",books:"📚",open_book:"📖",link:"🔗",paperclip:"📎",paperclips:"🖇",scissors:"✂️",triangular_ruler:"📐",straight_ruler:"📏",pushpin:"📌",round_pushpin:"📍",triangular_flag_on_post:"🚩",white_flag:"🏳",black_flag:"🏴",rainbow_flag:"🏳️‍🌈",closed_lock_with_key:"🔐",lock:"🔒",unlock:"🔓",lock_with_ink_pen:"🔏",pen:"🖊",fountain_pen:"🖋",black_nib:"✒️",memo:"📝",pencil2:"✏️",crayon:"🖍",paintbrush:"🖌",mag:"🔍",mag_right:"🔎",heart:"❤️",yellow_heart:"💛",green_heart:"💚",blue_heart:"💙",purple_heart:"💜",black_heart:"🖤",broken_heart:"💔",heavy_heart_exclamation:"❣",two_hearts:"💕",revolving_hearts:"💞",heartbeat:"💓",heartpulse:"💗",sparkling_heart:"💖",cupid:"💘",gift_heart:"💝",heart_decoration:"💟",peace_symbol:"☮",latin_cross:"✝",star_and_crescent:"☪",om:"🕉",wheel_of_dharma:"☸",star_of_david:"✡",six_pointed_star:"🔯",menorah:"🕎",yin_yang:"☯",orthodox_cross:"☦",place_of_worship:"🛐",ophiuchus:"⛎",aries:"♈",taurus:"♉",gemini:"♊",cancer:"♋",leo:"♌",virgo:"♍",libra:"♎",scorpius:"♏",sagittarius:"♐",capricorn:"♑",aquarius:"♒",pisces:"♓",id:"🆔",atom_symbol:"⚛",u7a7a:"🈳",u5272:"🈹",radioactive:"☢",biohazard:"☣",mobile_phone_off:"📴",vibration_mode:"📳",u6709:"🈶",u7121:"🈚",u7533:"🈸",u55b6:"🈺",u6708:"🈷️",eight_pointed_black_star:"✴️",vs:"🆚",accept:"🉑",white_flower:"💮",ideograph_advantage:"🉐",secret:"㊙️",congratulations:"㊗️",u5408:"🈴",u6e80:"🈵",u7981:"🈲",a:"🅰️",b:"🅱️",ab:"🆎",cl:"🆑",o2:"🅾️",sos:"🆘",no_entry:"⛔",name_badge:"📛",no_entry_sign:"🚫",x:"❌",o:"⭕",stop_sign:"🛑",anger:"💢",hotsprings:"♨️",no_pedestrians:"🚷",do_not_litter:"🚯",no_bicycles:"🚳","non-potable_water":"🚱",underage:"🔞",no_mobile_phones:"📵",exclamation:"❗",grey_exclamation:"❕",question:"❓",grey_question:"❔",bangbang:"‼️",interrobang:"⁉️",low_brightness:"🔅",high_brightness:"🔆",trident:"🔱",fleur_de_lis:"⚜",part_alternation_mark:"〽️",warning:"⚠️",children_crossing:"🚸",beginner:"🔰",recycle:"♻️",u6307:"🈯",chart:"💹",sparkle:"❇️",eight_spoked_asterisk:"✳️",negative_squared_cross_mark:"❎",white_check_mark:"✅",diamond_shape_with_a_dot_inside:"💠",cyclone:"🌀",loop:"➿",globe_with_meridians:"🌐",m:"Ⓜ️",atm:"🏧",sa:"🈂️",passport_control:"🛂",customs:"🛃",baggage_claim:"🛄",left_luggage:"🛅",wheelchair:"♿",no_smoking:"🚭",wc:"🚾",parking:"🅿️",potable_water:"🚰",mens:"🚹",womens:"🚺",baby_symbol:"🚼",restroom:"🚻",put_litter_in_its_place:"🚮",cinema:"🎦",signal_strength:"📶",koko:"🈁",ng:"🆖",ok:"🆗",up:"🆙",cool:"🆒",new:"🆕",free:"🆓",zero:"0️⃣",one:"1️⃣",two:"2️⃣",three:"3️⃣",four:"4️⃣",five:"5️⃣",six:"6️⃣",seven:"7️⃣",eight:"8️⃣",nine:"9️⃣",keycap_ten:"🔟",asterisk:"*⃣",arrow_forward:"▶️",pause_button:"⏸",next_track_button:"⏭",stop_button:"⏹",record_button:"⏺",play_or_pause_button:"⏯",previous_track_button:"⏮",fast_forward:"⏩",rewind:"⏪",twisted_rightwards_arrows:"🔀",repeat:"🔁",repeat_one:"🔂",arrow_backward:"◀️",arrow_up_small:"🔼",arrow_down_small:"🔽",arrow_double_up:"⏫",arrow_double_down:"⏬",arrow_right:"➡️",arrow_left:"⬅️",arrow_up:"⬆️",arrow_down:"⬇️",arrow_upper_right:"↗️",arrow_lower_right:"↘️",arrow_lower_left:"↙️",arrow_upper_left:"↖️",arrow_up_down:"↕️",left_right_arrow:"↔️",arrows_counterclockwise:"🔄",arrow_right_hook:"↪️",leftwards_arrow_with_hook:"↩️",arrow_heading_up:"⤴️",arrow_heading_down:"⤵️",hash:"#️⃣",information_source:"ℹ️",abc:"🔤",abcd:"🔡",capital_abcd:"🔠",symbols:"🔣",musical_note:"🎵",notes:"🎶",wavy_dash:"〰️",curly_loop:"➰",heavy_check_mark:"✔️",arrows_clockwise:"🔃",heavy_plus_sign:"➕",heavy_minus_sign:"➖",heavy_division_sign:"➗",heavy_multiplication_x:"✖️",heavy_dollar_sign:"💲",currency_exchange:"💱",copyright:"©️",registered:"®️",tm:"™️",end:"🔚",back:"🔙",on:"🔛",top:"🔝",soon:"🔜",ballot_box_with_check:"☑️",radio_button:"🔘",white_circle:"⚪",black_circle:"⚫",red_circle:"🔴",large_blue_circle:"🔵",small_orange_diamond:"🔸",small_blue_diamond:"🔹",large_orange_diamond:"🔶",large_blue_diamond:"🔷",small_red_triangle:"🔺",black_small_square:"▪️",white_small_square:"▫️",black_large_square:"⬛",white_large_square:"⬜",small_red_triangle_down:"🔻",black_medium_square:"◼️",white_medium_square:"◻️",black_medium_small_square:"◾",white_medium_small_square:"◽",black_square_button:"🔲",white_square_button:"🔳",speaker:"🔈",sound:"🔉",loud_sound:"🔊",mute:"🔇",mega:"📣",loudspeaker:"📢",bell:"🔔",no_bell:"🔕",black_joker:"🃏",mahjong:"🀄",spades:"♠️",clubs:"♣️",hearts:"♥️",diamonds:"♦️",flower_playing_cards:"🎴",thought_balloon:"💭",right_anger_bubble:"🗯",speech_balloon:"💬",left_speech_bubble:"🗨",clock1:"🕐",clock2:"🕑",clock3:"🕒",clock4:"🕓",clock5:"🕔",clock6:"🕕",clock7:"🕖",clock8:"🕗",clock9:"🕘",clock10:"🕙",clock11:"🕚",clock12:"🕛",clock130:"🕜",clock230:"🕝",clock330:"🕞",clock430:"🕟",clock530:"🕠",clock630:"🕡",clock730:"🕢",clock830:"🕣",clock930:"🕤",clock1030:"🕥",clock1130:"🕦",clock1230:"🕧",afghanistan:"🇦🇫",aland_islands:"🇦🇽",albania:"🇦🇱",algeria:"🇩🇿",american_samoa:"🇦🇸",andorra:"🇦🇩",angola:"🇦🇴",anguilla:"🇦🇮",antarctica:"🇦🇶",antigua_barbuda:"🇦🇬",argentina:"🇦🇷",armenia:"🇦🇲",aruba:"🇦🇼",australia:"🇦🇺",austria:"🇦🇹",azerbaijan:"🇦🇿",bahamas:"🇧🇸",bahrain:"🇧🇭",bangladesh:"🇧🇩",barbados:"🇧🇧",belarus:"🇧🇾",belgium:"🇧🇪",belize:"🇧🇿",benin:"🇧🇯",bermuda:"🇧🇲",bhutan:"🇧🇹",bolivia:"🇧🇴",caribbean_netherlands:"🇧🇶",bosnia_herzegovina:"🇧🇦",botswana:"🇧🇼",brazil:"🇧🇷",british_indian_ocean_territory:"🇮🇴",british_virgin_islands:"🇻🇬",brunei:"🇧🇳",bulgaria:"🇧🇬",burkina_faso:"🇧🇫",burundi:"🇧🇮",cape_verde:"🇨🇻",cambodia:"🇰🇭",cameroon:"🇨🇲",canada:"🇨🇦",canary_islands:"🇮🇨",cayman_islands:"🇰🇾",central_african_republic:"🇨🇫",chad:"🇹🇩",chile:"🇨🇱",cn:"🇨🇳",christmas_island:"🇨🇽",cocos_islands:"🇨🇨",colombia:"🇨🇴",comoros:"🇰🇲",congo_brazzaville:"🇨🇬",congo_kinshasa:"🇨🇩",cook_islands:"🇨🇰",costa_rica:"🇨🇷",croatia:"🇭🇷",cuba:"🇨🇺",curacao:"🇨🇼",cyprus:"🇨🇾",czech_republic:"🇨🇿",denmark:"🇩🇰",djibouti:"🇩🇯",dominica:"🇩🇲",dominican_republic:"🇩🇴",ecuador:"🇪🇨",egypt:"🇪🇬",el_salvador:"🇸🇻",equatorial_guinea:"🇬🇶",eritrea:"🇪🇷",estonia:"🇪🇪",ethiopia:"🇪🇹",eu:"🇪🇺",falkland_islands:"🇫🇰",faroe_islands:"🇫🇴",fiji:"🇫🇯",finland:"🇫🇮",fr:"🇫🇷",french_guiana:"🇬🇫",french_polynesia:"🇵🇫",french_southern_territories:"🇹🇫",gabon:"🇬🇦",gambia:"🇬🇲",georgia:"🇬🇪",de:"🇩🇪",ghana:"🇬🇭",gibraltar:"🇬🇮",greece:"🇬🇷",greenland:"🇬🇱",grenada:"🇬🇩",guadeloupe:"🇬🇵",guam:"🇬🇺",guatemala:"🇬🇹",guernsey:"🇬🇬",guinea:"🇬🇳",guinea_bissau:"🇬🇼",guyana:"🇬🇾",haiti:"🇭🇹",honduras:"🇭🇳",hong_kong:"🇭🇰",hungary:"🇭🇺",iceland:"🇮🇸",india:"🇮🇳",indonesia:"🇮🇩",iran:"🇮🇷",iraq:"🇮🇶",ireland:"🇮🇪",isle_of_man:"🇮🇲",israel:"🇮🇱",it:"🇮🇹",cote_divoire:"🇨🇮",jamaica:"🇯🇲",jp:"🇯🇵",jersey:"🇯🇪",jordan:"🇯🇴",kazakhstan:"🇰🇿",kenya:"🇰🇪",kiribati:"🇰🇮",kosovo:"🇽🇰",kuwait:"🇰🇼",kyrgyzstan:"🇰🇬",laos:"🇱🇦",latvia:"🇱🇻",lebanon:"🇱🇧",le