/* Cook The Books v2.1.0 Licensed under CC BY-SA 4.0 Copyright 2022-2024 Oldgate Studios Copyright 2019-2024 ScriptsTown Copyright 2003-2024 The WordPress.org Team */ var cookthebooks = cookthebooks || {}; function cookthebooksDomReady(e) { if ("function" == typeof e) return "interactive" === document.readyState || "complete" === document.readyState ? e() : void document.addEventListener("DOMContentLoaded", e, !1) } Math.easeInOutQuad = function(e, t, n, a) { return (e /= a / 2) < 1 ? n / 2 * e * e + t : -n / 2 * (--e * (e - 2) - 1) + t } , cookthebooks.setupMainMenu = { init: function() { var e, t, n, a, o, i, s, r = document.getElementById("site-navigation"); r && (t = r.getElementsByTagName("ul")[0], e = r.querySelector(".primary-menu-toggle"), void 0 === t ? e && (e.style.display = "none") : (t.classList.add("nav-menu"), t = r.querySelectorAll(".main-navigation-arrow-btn"), n = r.querySelectorAll("li > a"), a = r.querySelectorAll("li:not(.menu-item-has-children) > a"), o = r.querySelectorAll("li:last-child:not(.menu-item-has-children) > a"), i = r.querySelector(".primary-menu-search"), s = r.querySelector(".primary-menu-search-toggle"), this.toggleTouchClass(r), this.toggleNavigation(e, r), this.collapseIfClickOutside(e, r), this.collapseIfEscapeKeyPress(e, r), this.collapseOnResize(e, r), this.toggleSubmenu(t, n, a, o), this.trapFocusInModal(r), this.toggleSearch(s, i), this.trapFocusInSearch(i))) }, toggleTouchClass: function(e) { const t = "main-navigation--touch"; function n() { return "ontouchstart"in window || 0 < navigator.maxTouchPoints || 0 < navigator.msMaxTouchPoints } n() && e.classList.add(t), window.addEventListener("resize", function() { n() ? e.classList.add(t) : e.classList.remove(t) }) }, toggleNavigation: function(t, n) { t && t.addEventListener("click", function(e) { e.preventDefault(), n.classList.toggle("toggled"), t && ("true" === t.getAttribute("aria-expanded") ? t.setAttribute("aria-expanded", "false") : t.setAttribute("aria-expanded", "true")) }) }, collapseIfClickOutside: function(e, t) { const n = this; document.addEventListener("click", function(e) { t.contains(e.target) || t.classList.contains("toggled") || ([].forEach.call(t.querySelectorAll(".focus"), function(e) { e.classList.remove("focus") }), [].forEach.call(t.querySelectorAll(".main-navigation-arrow-btn"), function(e) { e.setAttribute("aria-expanded", "false") }), n.collapseSearchForm(t)) }) }, collapseIfEscapeKeyPress: function(t, n) { const a = this; document.addEventListener("keyup", function(e) { "Escape" === e.key && (n.classList.remove("toggled"), t && t.setAttribute("aria-expanded", "false"), a.collapseSearchForm(n)) }) }, collapseOnResize: function(e, t) { window.addEventListener("resize", function() { window.matchMedia("screen and (min-width: 768px)").matches && (t.classList.remove("toggled"), e) && e.setAttribute("aria-expanded", "false") }) }, toggleSubmenu: function(e, t, n, a) { function o() { for (var e = this, t = !1; "ul" !== e.tagName.toLowerCase(); ) "li" !== e.tagName.toLowerCase() || t || e.classList.contains("focus") || (t = e), e = e.parentElement; [].forEach.call(e.querySelectorAll(".focus"), function(e) { e.classList.remove("focus") }), [].forEach.call(e.querySelectorAll(".main-navigation-arrow-btn"), function(e) { e.setAttribute("aria-expanded", "false") }), t && (t.classList.add("focus"), this.setAttribute("aria-expanded", "true")) } function i(e) { var t = this.parentElement , n = "Tab" === e.key , e = e.shiftKey; n && e && t.classList.contains("focus") ? (t.classList.remove("focus"), this.setAttribute("aria-expanded", "false")) : !n || e || t.classList.contains("focus") || (t.classList.add("focus"), this.setAttribute("aria-expanded", "true")) } function s() { for (var e = this, t = !1; !e.classList.contains("nav-menu"); ) t || "ul" !== e.tagName.toLowerCase() || ([].forEach.call(e.querySelectorAll(".focus"), function(e) { e.classList.remove("focus") }), [].forEach.call(e.querySelectorAll(".main-navigation-arrow-btn"), function(e) { e.setAttribute("aria-expanded", "false") }), t = !0), e = e.parentElement } function r() { for (var e = this; !e.classList.contains("nav-menu"); ) "li" === e.tagName.toLowerCase() && !e.classList.contains("focus") && (e.classList.add("focus"), e.querySelector(".main-navigation-arrow-btn")) && this.setAttribute("aria-expanded", "true"), e = e.parentElement } function c(e) { var t, n = this, a = "Tab" === e.key, e = e.shiftKey; if (a && !e) { for (; t = function(e) { for (; (e = e.nextSibling) && 1 !== e.nodeType; ) ; return e }(n), n = n.parentElement, !t; ) ; [].forEach.call(n.querySelectorAll(".focus"), function(e) { e.classList.remove("focus") }), [].forEach.call(n.querySelectorAll(".main-navigation-arrow-btn"), function(e) { e.setAttribute("aria-expanded", "false") }) } } [].forEach.call(e, function(e) { e.addEventListener("click", o), e.addEventListener("keydown", i) }), [].forEach.call(t, function(e) { e.addEventListener("focus", s) }), [].forEach.call(n, function(e) { e.addEventListener("focus", r) }), [].forEach.call(a, function(e) { e.addEventListener("keydown", c) }) }, trapFocusInModal: function(s) { document.addEventListener("keydown", function(e) { var t, n, a, o, i; !s.classList.contains("toggled") || (n = s.querySelectorAll("input, a, button")).length < 1 || (t = n[0], n = n[n.length - 1], a = document.activeElement, o = "Tab" === e.key, i = e.shiftKey, o && !i && n === a && (e.preventDefault(), t.focus()), o && i && t === a && (e.preventDefault(), n.focus())) }) }, toggleSearch: function(t, n) { t && n && t.addEventListener("click", function(e) { e.preventDefault(), n.classList.toggle("toggled"), "true" === t.getAttribute("aria-expanded") ? t.setAttribute("aria-expanded", "false") : t.setAttribute("aria-expanded", "true") }) }, collapseSearchForm: function(e) { var t = e.querySelector(".primary-menu-search") , e = e.querySelector(".primary-menu-search-toggle"); t && t.classList.remove("toggled"), e && e.setAttribute("aria-expanded", "false") }, trapFocusInSearch: function(s) { document.addEventListener("keydown", function(e) { var t, n, a, o, i; s && s.classList.contains("toggled") && (n = s.querySelector(".primary-menu-search-toggle"), "none" === window.getComputedStyle(n, null).display || (n = s.querySelectorAll("input, a, button")).length < 1 || (t = n[0], n = n[n.length - 1], a = document.activeElement, o = "Tab" === e.key, i = e.shiftKey, o && !i && n === a && (e.preventDefault(), t.focus()), o && i && t === a && (e.preventDefault(), n.focus()))) }) } }, cookthebooks.goToTop = { offset: 300, offsetOpacity: 1200, scrollDuration: 700, init: function() { var e = document.querySelector(".go-to-top"); e && (this.handleScroll(e), this.handleClick(e)) }, handleScroll: function(t) { var n = this.offset , a = this.offsetOpacity , o = !1; function e() { var e = window.scrollY || document.documentElement.scrollTop; n < e ? t.classList.add("go-to-top--show") : (t.classList.remove("go-to-top--show"), t.classList.remove("go-to-top--fade-out")), a < e && t.classList.add("go-to-top--fade-out"), o = !1 } window.addEventListener("scroll", function() { o || (o = !0, window.requestAnimationFrame ? window.requestAnimationFrame(e) : setTimeout(e, 250)) }) }, handleClick: function(t) { t.addEventListener("click", function(e) { function n(e) { var e = e - (r = r || e) , t = (o < e && (e = o), Math.easeInOutQuad(e, s, a - s, o)); window.scrollTo(0, t), e < o ? window.requestAnimationFrame(n) : i && i() } var a, o, i, s, r; e.preventDefault(), window.requestAnimationFrame ? (a = 0, o = this.scrollDuration, s = window.scrollY || document.documentElement.scrollTop, r = null, window.requestAnimationFrame(n)) : window.scrollTo(0, 0), t.blur() } .bind(this)) } }, cookthebooksDomReady(function() { cookthebooks.setupMainMenu.init(), cookthebooks.goToTop.init() }); /* ResizeObserver.js */ !function(t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.ResizeObserver = e() }(this, function() { "use strict"; var r = function() { if ("undefined" != typeof Map) return Map; function r(t, n) { var r = -1; return t.some(function(t, e) { return t[0] === n && (r = e, !0) }), r } return function() { function t() { this.__entries__ = [] } return Object.defineProperty(t.prototype, "size", { get: function() { return this.__entries__.length }, enumerable: !0, configurable: !0 }), t.prototype.get = function(t) { var e = r(this.__entries__, t) , n = this.__entries__[e]; return n && n[1] } , t.prototype.set = function(t, e) { var n = r(this.__entries__, t); ~n ? this.__entries__[n][1] = e : this.__entries__.push([t, e]) } , t.prototype.delete = function(t) { var e = this.__entries__ , n = r(e, t); ~n && e.splice(n, 1) } , t.prototype.has = function(t) { return !!~r(this.__entries__, t) } , t.prototype.clear = function() { this.__entries__.splice(0) } , t.prototype.forEach = function(t, e) { void 0 === e && (e = null); for (var n = 0, r = this.__entries__; n < r.length; n++) { var i = r[n]; t.call(e, i[1], i[0]) } } , t }() }() , n = "undefined" != typeof window && "undefined" != typeof document && window.document === document , e = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")() , a = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(e) : function(t) { return setTimeout(function() { return t(Date.now()) }, 1e3 / 60) } , h = 2; var i = ["top", "right", "bottom", "left", "width", "height", "size", "weight"] , o = "undefined" != typeof MutationObserver , s = function() { function t() { this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function(t, e) { var n = !1 , r = !1 , i = 0; function o() { n && (n = !1, t()), r && c() } function s() { a(o) } function c() { var t = Date.now(); if (n) { if (t - i < h) return; r = !0 } else r = !(n = !0), setTimeout(s, e); i = t } return c }(this.refresh.bind(this), 20) } return t.prototype.addObserver = function(t) { ~this.observers_.indexOf(t) || this.observers_.push(t), this.connected_ || this.connect_() } , t.prototype.removeObserver = function(t) { var e = this.observers_ , n = e.indexOf(t); ~n && e.splice(n, 1), !e.length && this.connected_ && this.disconnect_() } , t.prototype.refresh = function() { this.updateObservers_() && this.refresh() } , t.prototype.updateObservers_ = function() { var t = this.observers_.filter(function(t) { return t.gatherActive(), t.hasActive() }); return t.forEach(function(t) { return t.broadcastActive() }), 0 < t.length } , t.prototype.connect_ = function() { n && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), o ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0) } , t.prototype.disconnect_ = function() { n && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1) } , t.prototype.onTransitionEnd_ = function(t) { var e = t.propertyName , n = void 0 === e ? "" : e; i.some(function(t) { return !!~n.indexOf(t) }) && this.refresh() } , t.getInstance = function() { return this.instance_ || (this.instance_ = new t), this.instance_ } , t.instance_ = null, t }() , u = function(t, e) { for (var n = 0, r = Object.keys(e); n < r.length; n++) { var i = r[n]; Object.defineProperty(t, i, { value: e[i], enumerable: !1, writable: !1, configurable: !0 }) } return t } , d = function(t) { return t && t.ownerDocument && t.ownerDocument.defaultView || e } , p = b(0, 0, 0, 0); function v(t) { return parseFloat(t) || 0 } function l(n) { for (var t = [], e = 1; e < arguments.length; e++) t[e - 1] = arguments[e]; return t.reduce(function(t, e) { return t + v(n["border-" + e + "-width"]) }, 0) } function c(t) { var e = t.clientWidth , n = t.clientHeight; if (!e && !n) return p; var r, i = d(t).getComputedStyle(t), o = function(t) { for (var e = {}, n = 0, r = ["top", "right", "bottom", "left"]; n < r.length; n++) { var i = r[n] , o = t["padding-" + i]; e[i] = v(o) } return e }(i), s = o.left + o.right, c = o.top + o.bottom, a = v(i.width), h = v(i.height); if ("border-box" === i.boxSizing && (Math.round(a + s) !== e && (a -= l(i, "left", "right") + s), Math.round(h + c) !== n && (h -= l(i, "top", "bottom") + c)), (r = t) !== d(r).document.documentElement) { var u = Math.round(a + s) - e , f = Math.round(h + c) - n; 1 !== Math.abs(u) && (a -= u), 1 !== Math.abs(f) && (h -= f) } return b(o.left, o.top, a, h) } var f = "undefined" != typeof SVGGraphicsElement ? function(t) { return t instanceof d(t).SVGGraphicsElement } : function(t) { return t instanceof d(t).SVGElement && "function" == typeof t.getBBox } ; function _(t) { return n ? f(t) ? b(0, 0, (e = t.getBBox()).width, e.height) : c(t) : p; var e } function b(t, e, n, r) { return { x: t, y: e, width: n, height: r } } var m = function() { function t(t) { this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = b(0, 0, 0, 0), this.target = t } return t.prototype.isActive = function() { var t = _(this.target); return (this.contentRect_ = t).width !== this.broadcastWidth || t.height !== this.broadcastHeight } , t.prototype.broadcastRect = function() { var t = this.contentRect_; return this.broadcastWidth = t.width, this.broadcastHeight = t.height, t } , t }() , y = function(t, e) { var n, r, i, o, s, c, a, h = (r = (n = e).x, i = n.y, o = n.width, s = n.height, c = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object, a = Object.create(c.prototype), u(a, { x: r, y: i, width: o, height: s, top: i, right: r + o, bottom: s + i, left: r }), a); u(this, { target: t, contentRect: h }) } , g = function() { function t(t, e, n) { if (this.activeObservations_ = [], this.observations_ = new r, "function" != typeof t) throw new TypeError("The callback provided as parameter 1 is not a function."); this.callback_ = t, this.controller_ = e, this.callbackCtx_ = n } return t.prototype.observe = function(t) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" != typeof Element && Element instanceof Object) { if (!(t instanceof d(t).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var e = this.observations_; e.has(t) || (e.set(t, new m(t)), this.controller_.addObserver(this), this.controller_.refresh()) } } , t.prototype.unobserve = function(t) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" != typeof Element && Element instanceof Object) { if (!(t instanceof d(t).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var e = this.observations_; e.has(t) && (e.delete(t), e.size || this.controller_.removeObserver(this)) } } , t.prototype.disconnect = function() { this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this) } , t.prototype.gatherActive = function() { var e = this; this.clearActive(), this.observations_.forEach(function(t) { t.isActive() && e.activeObservations_.push(t) }) } , t.prototype.broadcastActive = function() { if (this.hasActive()) { var t = this.callbackCtx_ , e = this.activeObservations_.map(function(t) { return new y(t.target,t.broadcastRect()) }); this.callback_.call(t, e, t), this.clearActive() } } , t.prototype.clearActive = function() { this.activeObservations_.splice(0) } , t.prototype.hasActive = function() { return 0 < this.activeObservations_.length } , t }() , w = "undefined" != typeof WeakMap ? new WeakMap : new r , t = function t(e) { if (!(this instanceof t)) throw new TypeError("Cannot call a class as a function."); if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); var n = s.getInstance() , r = new g(e,n,this); w.set(this, r) }; return ["observe", "unobserve", "disconnect"].forEach(function(e) { t.prototype[e] = function() { var t; return (t = w.get(this))[e].apply(t, arguments) } }), void 0 !== e.ResizeObserver ? e.ResizeObserver : t }); /*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ var twemoji = function () { "use strict"; var twemoji = { base: "https://cdn.jsdelivr.net/gh/jdecked/twemoji@15.1.0/assets/", ext: ".svg", size: "svg", 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\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\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\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\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\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\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\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\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\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\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\udc70\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\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\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\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\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\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|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\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|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\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|\ud83d\udc08\u200d\u2b1b)|[#*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[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\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\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\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-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\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"); img.setAttribute("loading", "lazy"); 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 < text.length) { fragment.appendChild(createText(text.slice(i), true)) } subnode.parentNode.replaceChild(fragment, subnode) } } return node } function parseString(str, options) { return replace(str, function(rawText) { var ret = rawText, iconId = grabTheRightIcon(rawText), src = options.callback(iconId, options), attrib, attrname; if (iconId && src) { ret = "") } 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 < unicodeSurrogates.length) { c = unicodeSurrogates.charCodeAt(i++); if (p) { r.push((65536 + (p - 55296 << 10) + (c - 56320)).toString(16)); p = 0 } else if (55296 <= c && c <= 56319) { p = c } else { r.push(c.toString(16)) } } return r.join(sep || "-") } }();