summaryrefslogtreecommitdiff
path: root/themes/CodeIT/assets/js
diff options
context:
space:
mode:
Diffstat (limited to 'themes/CodeIT/assets/js')
-rw-r--r--themes/CodeIT/assets/js/theme.min.js2
-rw-r--r--themes/CodeIT/assets/js/theme.min.js.map2
2 files changed, 2 insertions, 2 deletions
diff --git a/themes/CodeIT/assets/js/theme.min.js b/themes/CodeIT/assets/js/theme.min.js
index b22d09a..8baf0be 100644
--- a/themes/CodeIT/assets/js/theme.min.js
+++ b/themes/CodeIT/assets/js/theme.min.js
@@ -1,3 +1,3 @@
-"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a,b){var c;if("undefined"==typeof Symbol||null==a[Symbol.iterator]){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=a[Symbol.iterator]()},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a))return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}var Util=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"forEach",value:function forEach(a,b){a=a||[];for(var c=0;c<a.length;c++)b(a[c])}},{key:"getScrollTop",value:function getScrollTop(){return document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop}},{key:"isMobile",value:function isMobile(){return window.matchMedia("only screen and (max-width: 680px)").matches}},{key:"isTocStatic",value:function isTocStatic(){return window.matchMedia("only screen and (max-width: 960px)").matches}},{key:"animateCSS",value:function animateCSS(a,b,c,d){var e;Array.isArray(b)||(b=[b]),(e=a.classList).add.apply(e,["animated"].concat(_toConsumableArray(b)));var f=function(){var c;(c=a.classList).remove.apply(c,["animated"].concat(_toConsumableArray(b))),a.removeEventListener("animationend",f),"function"==typeof d&&d()};c||a.addEventListener("animationend",f,!1)}}]),a}(),Theme=/*#__PURE__*/function(){function a(){_classCallCheck(this,a),this.config=window.config,this.data=this.config.data,this.isDark="dark"===document.body.getAttribute("theme"),this.util=new Util,this.newScrollTop=this.util.getScrollTop(),this.oldScrollTop=this.newScrollTop,this.scrollEventSet=new Set,this.resizeEventSet=new Set,this.switchThemeEventSet=new Set,this.clickMaskEventSet=new Set,window.objectFitImages&&objectFitImages()}return _createClass(a,[{key:"initSVGIcon",value:function initSVGIcon(){this.util.forEach(document.querySelectorAll("[data-svg-src]"),function(a){fetch(a.getAttribute("data-svg-src")).then(function(a){return a.text()}).then(function(b){var c=document.createElement("div");c.insertAdjacentHTML("afterbegin",b);var d=c.firstChild;d.setAttribute("data-svg-src",a.getAttribute("data-svg-src")),d.classList.add("icon");var e=d.getElementsByTagName("title");e.length&&d.removeChild(e[0]),a.parentElement.replaceChild(d,a)}).catch(function(a){console.error(a)})})}},{key:"initTwemoji",value:function initTwemoji(){this.config.twemoji&&twemoji.parse(document.body)}},{key:"initMenuMobile",value:function initMenuMobile(){var a=document.getElementById("menu-toggle-mobile"),b=document.getElementById("menu-mobile");a.addEventListener("click",function(){document.body.classList.toggle("blur"),a.classList.toggle("active"),b.classList.toggle("active")},!1),this._menuMobileOnClickMask=this._menuMobileOnClickMask||function(){a.classList.remove("active"),b.classList.remove("active")},this.clickMaskEventSet.add(this._menuMobileOnClickMask)}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){"dark"===document.body.getAttribute("theme")?document.body.setAttribute("theme","light"):document.body.setAttribute("theme","dark"),a.isDark=!a.isDark,window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength?b.maxResultLength:10,e=b.snippetLength?b.snippetLength:50,f=b.highlightTag?b.highlightTag:"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c<l||0===l)&&(l=c)}}),l-=e/5,0<l?(l+=k.substr(l,20).lastIndexOf(" ")+1,k="..."+k.substr(l,e)):k=k.substr(0,e),Object.keys(g).forEach(function(a){j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.lunrLanguageCode]),this.ref("objectID"),this.field("title",{boost:50}),this.field("tags",{boost:20}),this.field("categories",{boost:20}),this.field("content",{boost:10}),this.metadataWhitelist=["position"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"</".concat(f,">")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"<div><span class=\"suggestion-title\">".concat(b,"</span><span class=\"suggestion-date\">").concat(c,"</span></div><div class=\"suggestion-context\">").concat(d,"</div>")},empty:function empty(a){var c=a.query;return"<div class=\"search-empty\">".concat(b.noResultsFound,": <span class=\"search-query\">\"").concat(c,"\"</span></div>")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"<i class=\"fab fa-algolia fa-fw\"></i>",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"<div class=\"search-footer\">Search by <a href=\"".concat(f,"\" rel=\"noopener noreferrer\" target=\"_blank\">").concat(e," ").concat(d,"</a></div>")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin","<i class=\"arrow fas fa-chevron-right fa-fw\"></i>"),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin","<i class=\"fas fa-ellipsis-h fa-fw\"></i>"),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g);var h=document.createElement("span");h.insertAdjacentHTML("afterbegin","<i class=\"far fa-copy fa-fw\"></i>"),h.classList.add("copy");var i=d.innerText;if((0>a.config.code.maxShownLines||i.split("\n").length<a.config.code.maxShownLines+2)&&b.classList.add("open"),a.config.code.copyTitle){h.setAttribute("data-clipboard-text",i),h.title=a.config.code.copyTitle;var j=new ClipboardJS(h);j.on("success",function(){a.util.animateCSS(d,"flash")}),e.appendChild(h)}b.insertBefore(e,b.firstChild)}})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin","<a href=\"#".concat(a.id,"\" class=\"header-mark\"></a>"))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if(document.getElementById("toc-static").getAttribute("kept")||this.util.isTocStatic()){var o=document.getElementById("toc-content-static");b.parentElement!==o&&(b.parentElement.removeChild(b),o.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var p=document.getElementById("toc-content-auto");b.parentElement!==p&&(b.parentElement.removeChild(b),p.appendChild(b));var c=document.getElementById("toc-auto"),d=document.getElementsByClassName("page")[0],e=d.getBoundingClientRect();c.style.left="".concat(e.left+e.width+20,"px"),c.style.maxWidth="".concat(d.getBoundingClientRect().left-20,"px"),c.style.visibility="visible";var f=b.querySelectorAll("a:first-child"),g=b.getElementsByTagName("li"),h=document.getElementsByClassName("headerLink"),j="normal"!==document.body.getAttribute("header-desktop"),k=document.getElementById("header-desktop").offsetHeight,l=20+(j?k:0),m=c.offsetTop,n=m-l+(j?0:k);this._tocOnScroll=this._tocOnScroll||function(){var d=document.getElementById("post-footer").offsetTop,e=d-c.getBoundingClientRect().height,o=e-l+(j?0:k);a.newScrollTop<n?(c.style.position="absolute",c.style.top="".concat(m,"px")):a.newScrollTop>o?(c.style.position="absolute",c.style.top="".concat(e,"px")):(c.style.position="fixed",c.style.top="".concat(l,"px")),a.util.forEach(f,function(a){a.classList.remove("active")}),a.util.forEach(g,function(a){a.classList.remove("has-active")});for(var p=20+(j?k:0),q=h.length-1,r=0;r<h.length-1;r++){var s=h[r].getBoundingClientRect().top,t=h[r+1].getBoundingClientRect().top;if(0==r&&s>p||s<=p&&t>p){q=r;break}}if(-1!==q){f[q].classList.add("active");for(var u=f[q].parentElement;u!==b;)u.classList.add("has-active"),u=u.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"null"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].dispose();a._echartsArr=[],a.util.forEach(document.getElementsByClassName("echarts"),function(b){var c=echarts.init(b,a.isDark?"dark":"macarons",{renderer:"svg"});c.setOption(JSON.parse(a.data[b.id])),a._echartsArr.push(c)})},this.switchThemeEventSet.add(this._echartsOnSwitchTheme),this._echartsOnSwitchTheme(),this._echartsOnResize=this._echartsOnResize||function(){for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].resize()},this.resizeEventSet.add(this._echartsOnResize)}},{key:"initMapbox",value:function initMapbox(){var a=this;this.config.mapbox&&(mapboxgl.accessToken=this.config.mapbox.accessToken,mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin),this._mapboxArr=this._mapboxArr||[],this.util.forEach(document.getElementsByClassName("mapbox"),function(b){var c=a.data[b.id],d=c.lng,e=c.lat,f=c.zoom,g=c.lightStyle,h=c.darkStyle,i=c.marked,j=c.navigation,k=c.geolocate,l=c.scale,m=c.fullscreen,n=new mapboxgl.Map({container:b,center:[d,e],zoom:f,minZoom:.2,style:a.isDark?h:g,attributionControl:!1});i&&new mapboxgl.Marker().setLngLat([d,e]).addTo(n),j&&n.addControl(new mapboxgl.NavigationControl,"bottom-right"),k&&n.addControl(new mapboxgl.GeolocateControl({positionOptions:{enableHighAccuracy:!0},showUserLocation:!0,trackUserLocation:!0}),"bottom-right"),l&&n.addControl(new mapboxgl.ScaleControl),m&&n.addControl(new mapboxgl.FullscreenControl),n.addControl(new MapboxLanguage),a._mapboxArr.push(n)}),this._mapboxOnSwitchTheme=this._mapboxOnSwitchTheme||function(){a.util.forEach(a._mapboxArr,function(b){var c=b.getContainer(),d=a.data[c.id],e=d.lightStyle,f=d.darkStyle;b.setStyle(a.isDark?f:e),b.addControl(new MapboxLanguage)})},this.switchThemeEventSet.add(this._mapboxOnSwitchTheme))}},{key:"initTypeit",value:function initTypeit(){var a=this;if(this.config.typeit){var b=this.config.typeit,c=b.speed?b.speed:100,d=b.cursorSpeed?b.cursorSpeed:1e3,e=b.cursorChar?b.cursorChar:"|";Object.values(b.data).forEach(function(f){var g=function(h){var i=f[h],j=new TypeIt("#".concat(i),{strings:a.data[i],speed:c,lifeLike:!0,cursorSpeed:d,cursorChar:e,waitUntilVisible:!0,afterComplete:function afterComplete(){return h===f.length-1?void(0<=b.duration&&window.setTimeout(function(){j.destroy()},b.duration)):void(j.destroy(),g(h+1))}}).go()};g(0)})}}},{key:"initComment",value:function initComment(){var a=this;if(this.config.comment){if(this.config.comment.gitalk){this.config.comment.gitalk.body=decodeURI(window.location.href);var d=new Gitalk(this.config.comment.gitalk);d.render("gitalk")}if(this.config.comment.valine&&new Valine(this.config.comment.valine),this.config.comment.utterances){var b=this.config.comment.utterances,c=document.createElement("script");c.src="https://utteranc.es/client.js",c.type="text/javascript",c.setAttribute("repo",b.repo),c.setAttribute("issue-term",b.issueTerm),b.label&&c.setAttribute("label",b.label),c.setAttribute("theme",this.isDark?b.darkTheme:b.lightTheme),c.crossOrigin="anonymous",c.async=!0,document.getElementById("utterances").appendChild(c),this._utterancesOnSwitchTheme=this._utterancesOnSwitchTheme||function(){var c={type:"set-theme",theme:a.isDark?b.darkTheme:b.lightTheme},d=document.querySelector(".utterances-frame");d.contentWindow.postMessage(c,"https://utteranc.es")},this.switchThemeEventSet.add(this._utterancesOnSwitchTheme)}}}},{key:"initSmoothScroll",value:function initSmoothScroll(){SmoothScroll&&new SmoothScroll("[href^=\"#\"]",{speed:300,speedAsDuration:!0,header:"#header-desktop"})}},{key:"initCookieconsent",value:function initCookieconsent(){this.config.cookieconsent&&cookieconsent.initialise(this.config.cookieconsent)}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(){a.newScrollTop=a.util.getScrollTop();var e=a.newScrollTop-a.oldScrollTop,f=a.util.isMobile();a.util.forEach(b,function(b){e>d?(b.classList.remove("fadeInDown"),a.util.animateCSS(b,["fadeOutUp","faster"],!0)):e<-d&&(b.classList.remove("fadeOutUp"),a.util.animateCSS(b,["fadeInDown","faster"],!0))}),a.newScrollTop>100?f&&e>d?(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)):(!f||e<-d)&&(c.style.display="block",c.classList.remove("fadeOut"),a.util.animateCSS(c,["fadeIn","faster"],!0)):(!f&&(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)),c.style.display="none");var g,h=_createForOfIteratorHelper(a.scrollEventSet);try{for(h.s();!(g=h.n()).done;){var i=g.value;i()}}catch(a){h.e(a)}finally{h.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){var a=this;try{this.initSVGIcon(),this.initTwemoji(),this.initMenuMobile(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initSmoothScroll(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.initCookieconsent()}catch(a){console.error(a)}window.setTimeout(function(){a.initToc(),a.initComment(),a.onScroll(),a.onResize(),a.onClickMask()},100)}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();
+"use strict";function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}var Util=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"forEach",value:function forEach(a,b){a=a||[];for(var c=0;c<a.length;c++)b(a[c])}},{key:"getScrollTop",value:function getScrollTop(){return document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop}},{key:"isMobile",value:function isMobile(){return window.matchMedia("only screen and (max-width: 680px)").matches}},{key:"isTocStatic",value:function isTocStatic(){return window.matchMedia("only screen and (max-width: 960px)").matches}},{key:"animateCSS",value:function animateCSS(a,b,c,d){var e;Array.isArray(b)||(b=[b]),(e=a.classList).add.apply(e,["animated"].concat(_toConsumableArray(b)));var f=function(){var c;(c=a.classList).remove.apply(c,["animated"].concat(_toConsumableArray(b))),a.removeEventListener("animationend",f),"function"==typeof d&&d()};c||a.addEventListener("animationend",f,!1)}}]),a}(),Theme=/*#__PURE__*/function(){function a(){_classCallCheck(this,a),this.config=window.config,this.data=this.config.data,this.isDark="dark"===document.body.getAttribute("theme"),this.util=new Util,this.newScrollTop=this.util.getScrollTop(),this.oldScrollTop=this.newScrollTop,this.scrollEventSet=new Set,this.resizeEventSet=new Set,this.switchThemeEventSet=new Set,this.clickMaskEventSet=new Set,window.objectFitImages&&objectFitImages()}return _createClass(a,[{key:"initSVGIcon",value:function initSVGIcon(){this.util.forEach(document.querySelectorAll("[data-svg-src]"),function(a){fetch(a.getAttribute("data-svg-src")).then(function(a){return a.text()}).then(function(b){var c=document.createElement("div");c.insertAdjacentHTML("afterbegin",b);var d=c.firstChild;d.setAttribute("data-svg-src",a.getAttribute("data-svg-src")),d.classList.add("icon");var e=d.getElementsByTagName("title");e.length&&d.removeChild(e[0]),a.parentElement.replaceChild(d,a)}).catch(function(a){console.error(a)})})}},{key:"initTwemoji",value:function initTwemoji(){this.config.twemoji&&twemoji.parse(document.body)}},{key:"initMenuMobile",value:function initMenuMobile(){var a=document.getElementById("menu-toggle-mobile"),b=document.getElementById("menu-mobile");a.addEventListener("click",function(){document.body.classList.toggle("blur"),a.classList.toggle("active"),b.classList.toggle("active")},!1),this._menuMobileOnClickMask=this._menuMobileOnClickMask||function(){a.classList.remove("active"),b.classList.remove("active")},this.clickMaskEventSet.add(this._menuMobileOnClickMask)}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){"dark"===document.body.getAttribute("theme")?document.body.setAttribute("theme","light"):document.body.setAttribute("theme","dark"),a.isDark=!a.isDark,a.config.cookieconsent&&window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength?b.maxResultLength:10,e=b.snippetLength?b.snippetLength:50,f=b.highlightTag?b.highlightTag:"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c<l||0===l)&&(l=c)}}),l-=e/5,0<l?(l+=k.substr(l,20).lastIndexOf(" ")+1,k="..."+k.substr(l,e)):k=k.substr(0,e),Object.keys(g).forEach(function(a){j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.lunrLanguageCode]),this.ref("objectID"),this.field("title",{boost:50}),this.field("tags",{boost:20}),this.field("categories",{boost:20}),this.field("content",{boost:10}),this.metadataWhitelist=["position"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"</".concat(f,">")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"<div><span class=\"suggestion-title\">".concat(b,"</span><span class=\"suggestion-date\">").concat(c,"</span></div><div class=\"suggestion-context\">").concat(d,"</div>")},empty:function empty(a){var c=a.query;return"<div class=\"search-empty\">".concat(b.noResultsFound,": <span class=\"search-query\">\"").concat(c,"\"</span></div>")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"<i class=\"fab fa-algolia fa-fw\"></i>",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"<div class=\"search-footer\">Search by <a href=\"".concat(f,"\" rel=\"noopener noreferrer\" target=\"_blank\">").concat(e," ").concat(d,"</a></div>")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin","<i class=\"arrow fas fa-chevron-right fa-fw\"></i>"),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin","<i class=\"fas fa-ellipsis-h fa-fw\"></i>"),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g);var h=document.createElement("span");h.insertAdjacentHTML("afterbegin","<i class=\"far fa-copy fa-fw\"></i>"),h.classList.add("copy");var i=d.innerText;if((0>a.config.code.maxShownLines||i.split("\n").length<a.config.code.maxShownLines+2)&&b.classList.add("open"),a.config.code.copyTitle){h.setAttribute("data-clipboard-text",i),h.title=a.config.code.copyTitle;var j=new ClipboardJS(h);j.on("success",function(){a.util.animateCSS(d,"flash")}),e.appendChild(h)}b.insertBefore(e,b.firstChild)}})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin","<a href=\"#".concat(a.id,"\" class=\"header-mark\"></a>"))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if(document.getElementById("toc-static").getAttribute("kept")||this.util.isTocStatic()){var o=document.getElementById("toc-content-static");b.parentElement!==o&&(b.parentElement.removeChild(b),o.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var p=document.getElementById("toc-content-auto");b.parentElement!==p&&(b.parentElement.removeChild(b),p.appendChild(b));var c=document.getElementById("toc-auto"),d=document.getElementsByClassName("page")[0],e=d.getBoundingClientRect();c.style.left="".concat(e.left+e.width+20,"px"),c.style.maxWidth="".concat(d.getBoundingClientRect().left-20,"px"),c.style.visibility="visible";var f=b.querySelectorAll("a:first-child"),g=b.getElementsByTagName("li"),h=document.getElementsByClassName("headerLink"),j="normal"!==document.body.getAttribute("header-desktop"),k=document.getElementById("header-desktop").offsetHeight,l=20+(j?k:0),m=c.offsetTop,n=m-l+(j?0:k);this._tocOnScroll=this._tocOnScroll||function(){var d=document.getElementById("post-footer").offsetTop,e=d-c.getBoundingClientRect().height,o=e-l+(j?0:k);a.newScrollTop<n?(c.style.position="absolute",c.style.top="".concat(m,"px")):a.newScrollTop>o?(c.style.position="absolute",c.style.top="".concat(e,"px")):(c.style.position="fixed",c.style.top="".concat(l,"px")),a.util.forEach(f,function(a){a.classList.remove("active")}),a.util.forEach(g,function(a){a.classList.remove("has-active")});for(var p=20+(j?k:0),q=h.length-1,r=0;r<h.length-1;r++){var s=h[r].getBoundingClientRect().top,t=h[r+1].getBoundingClientRect().top;if(0==r&&s>p||s<=p&&t>p){q=r;break}}if(-1!==q){f[q].classList.add("active");for(var u=f[q].parentElement;u!==b;)u.classList.add("has-active"),u=u.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"null"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].dispose();a._echartsArr=[],a.util.forEach(document.getElementsByClassName("echarts"),function(b){var c=echarts.init(b,a.isDark?"dark":"macarons",{renderer:"svg"});c.setOption(JSON.parse(a.data[b.id])),a._echartsArr.push(c)})},this.switchThemeEventSet.add(this._echartsOnSwitchTheme),this._echartsOnSwitchTheme(),this._echartsOnResize=this._echartsOnResize||function(){for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].resize()},this.resizeEventSet.add(this._echartsOnResize)}},{key:"initMapbox",value:function initMapbox(){var a=this;this.config.mapbox&&(mapboxgl.accessToken=this.config.mapbox.accessToken,mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin),this._mapboxArr=this._mapboxArr||[],this.util.forEach(document.getElementsByClassName("mapbox"),function(b){var c=a.data[b.id],d=c.lng,e=c.lat,f=c.zoom,g=c.lightStyle,h=c.darkStyle,i=c.marked,j=c.navigation,k=c.geolocate,l=c.scale,m=c.fullscreen,n=c.optionsJson,o=new mapboxgl.Map({container:b,center:[d,e],zoom:f,minZoom:.2,style:a.isDark?h:g,attributionControl:!1});i&&new mapboxgl.Marker().setLngLat([d,e]).addTo(o),j&&o.addControl(new mapboxgl.NavigationControl,"bottom-right"),k&&o.addControl(new mapboxgl.GeolocateControl({positionOptions:{enableHighAccuracy:!0},showUserLocation:!0,trackUserLocation:!0}),"bottom-right"),l&&o.addControl(new mapboxgl.ScaleControl),m&&o.addControl(new mapboxgl.FullscreenControl),"object"===_typeof(n)&&null!==n&&(console.log(n),o.on("load",function(){var a,b=_createForOfIteratorHelper(n.sources);try{for(b.s();!(a=b.n()).done;){var e=a.value;o.addSource(e.id,e.properties)}}catch(a){b.e(a)}finally{b.f()}var c,d=_createForOfIteratorHelper(n.layers);try{for(d.s();!(c=d.n()).done;){var f=c.value;o.addLayer(f)}}catch(a){d.e(a)}finally{d.f()}})),o.addControl(new MapboxLanguage),a._mapboxArr.push(o)}),this._mapboxOnSwitchTheme=this._mapboxOnSwitchTheme||function(){a.util.forEach(a._mapboxArr,function(b){var c=b.getContainer(),d=a.data[c.id],e=d.lightStyle,f=d.darkStyle;b.setStyle(a.isDark?f:e),b.addControl(new MapboxLanguage)})},this.switchThemeEventSet.add(this._mapboxOnSwitchTheme))}},{key:"initTypeit",value:function initTypeit(){var a=this;if(this.config.typeit){var b=this.config.typeit,c=b.speed?b.speed:100,d=b.cursorSpeed?b.cursorSpeed:1e3,e=b.cursorChar?b.cursorChar:"|";Object.values(b.data).forEach(function(f){var g=function(h){var i=f[h],j=new TypeIt("#".concat(i),{strings:a.data[i],speed:c,lifeLike:!0,cursorSpeed:d,cursorChar:e,waitUntilVisible:!0,afterComplete:function afterComplete(){return h===f.length-1?void(0<=b.duration&&window.setTimeout(function(){j.destroy()},b.duration)):void(j.destroy(),g(h+1))}}).go()};g(0)})}}},{key:"initComment",value:function initComment(){var a=this;if(this.config.comment){if(this.config.comment.gitalk){this.config.comment.gitalk.body=decodeURI(window.location.href);var d=new Gitalk(this.config.comment.gitalk);d.render("gitalk")}if(this.config.comment.valine&&new Valine(this.config.comment.valine),this.config.comment.utterances){var b=this.config.comment.utterances,c=document.createElement("script");c.src="https://utteranc.es/client.js",c.type="text/javascript",c.setAttribute("repo",b.repo),c.setAttribute("issue-term",b.issueTerm),b.label&&c.setAttribute("label",b.label),c.setAttribute("theme",this.isDark?b.darkTheme:b.lightTheme),c.crossOrigin="anonymous",c.async=!0,document.getElementById("utterances").appendChild(c),this._utterancesOnSwitchTheme=this._utterancesOnSwitchTheme||function(){var c={type:"set-theme",theme:a.isDark?b.darkTheme:b.lightTheme},d=document.querySelector(".utterances-frame");d.contentWindow.postMessage(c,"https://utteranc.es")},this.switchThemeEventSet.add(this._utterancesOnSwitchTheme)}}}},{key:"initSmoothScroll",value:function initSmoothScroll(){SmoothScroll&&new SmoothScroll("[href^=\"#\"]",{speed:300,speedAsDuration:!0,header:"#header-desktop"})}},{key:"initCookieconsent",value:function initCookieconsent(){this.config.cookieconsent&&cookieconsent.initialise(this.config.cookieconsent)}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(){a.newScrollTop=a.util.getScrollTop();var e=a.newScrollTop-a.oldScrollTop,f=a.util.isMobile();a.util.forEach(b,function(b){e>d?(b.classList.remove("fadeInDown"),a.util.animateCSS(b,["fadeOutUp","faster"],!0)):e<-d&&(b.classList.remove("fadeOutUp"),a.util.animateCSS(b,["fadeInDown","faster"],!0))}),a.newScrollTop>100?f&&e>d?(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)):(!f||e<-d)&&(c.style.display="block",c.classList.remove("fadeOut"),a.util.animateCSS(c,["fadeIn","faster"],!0)):(!f&&(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)),c.style.display="none");var g,h=_createForOfIteratorHelper(a.scrollEventSet);try{for(h.s();!(g=h.n()).done;){var i=g.value;i()}}catch(a){h.e(a)}finally{h.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){var a=this;try{this.initSVGIcon(),this.initTwemoji(),this.initMenuMobile(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initSmoothScroll(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.initCookieconsent()}catch(a){console.error(a)}window.setTimeout(function(){a.initToc(),a.initComment(),a.onScroll(),a.onResize(),a.onClickMask()},100)}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();
//# sourceMappingURL=theme.min.js.map \ No newline at end of file
diff --git a/themes/CodeIT/assets/js/theme.min.js.map b/themes/CodeIT/assets/js/theme.min.js.map
index 04f0452..8ec7e1c 100644
--- a/themes/CodeIT/assets/js/theme.min.js.map
+++ b/themes/CodeIT/assets/js/theme.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n }\n\n getScrollTop() {\n return (\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n isMobile() {\n return window.matchMedia(\"only screen and (max-width: 680px)\").matches;\n }\n\n isTocStatic() {\n return window.matchMedia(\"only screen and (max-width: 960px)\").matches;\n }\n\n animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add(\"animated\", ...animation);\n const handler = () => {\n element.classList.remove(\"animated\", ...animation);\n element.removeEventListener(\"animationend\", handler);\n if (typeof callback === \"function\") callback();\n };\n if (!reserved) element.addEventListener(\"animationend\", handler, false);\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute(\"theme\") === \"dark\";\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n if (window.objectFitImages) objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll(\"[data-svg-src]\"), ($icon) => {\n fetch($icon.getAttribute(\"data-svg-src\"))\n .then((response) => response.text())\n .then((svg) => {\n const $temp = document.createElement(\"div\");\n $temp.insertAdjacentHTML(\"afterbegin\", svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute(\"data-svg-src\", $icon.getAttribute(\"data-svg-src\"));\n $svg.classList.add(\"icon\");\n const $titleElements = $svg.getElementsByTagName(\"title\");\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch((err) => {\n console.error(err);\n });\n });\n }\n\n initTwemoji() {\n if (this.config.twemoji) twemoji.parse(document.body);\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById(\"menu-toggle-mobile\");\n const $menuMobile = document.getElementById(\"menu-mobile\");\n $menuToggleMobile.addEventListener(\n \"click\",\n () => {\n document.body.classList.toggle(\"blur\");\n $menuToggleMobile.classList.toggle(\"active\");\n $menuMobile.classList.toggle(\"active\");\n },\n false\n );\n this._menuMobileOnClickMask =\n this._menuMobileOnClickMask ||\n (() => {\n $menuToggleMobile.classList.remove(\"active\");\n $menuMobile.classList.remove(\"active\");\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n }\n\n initSwitchTheme() {\n this.util.forEach(\n document.getElementsByClassName(\"theme-switch\"),\n ($themeSwitch) => {\n $themeSwitch.addEventListener(\n \"click\",\n () => {\n if (document.body.getAttribute(\"theme\") === \"dark\")\n document.body.setAttribute(\"theme\", \"light\");\n else document.body.setAttribute(\"theme\", \"dark\");\n this.isDark = !this.isDark;\n window.localStorage &&\n localStorage.setItem(\"theme\", this.isDark ? \"dark\" : \"light\");\n for (let event of this.switchThemeEventSet) event();\n },\n false\n );\n }\n );\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (\n !searchConfig ||\n (isMobile && this._searchMobileOnce) ||\n (!isMobile && this._searchDesktopOnce)\n )\n return;\n\n const maxResultLength = searchConfig.maxResultLength\n ? searchConfig.maxResultLength\n : 10;\n const snippetLength = searchConfig.snippetLength\n ? searchConfig.snippetLength\n : 50;\n const highlightTag = searchConfig.highlightTag\n ? searchConfig.highlightTag\n : \"em\";\n\n const suffix = isMobile ? \"mobile\" : \"desktop\";\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener(\n \"focus\",\n () => {\n document.body.classList.add(\"blur\");\n $header.classList.add(\"open\");\n },\n false\n );\n document.getElementById(\"search-cancel-mobile\").addEventListener(\n \"click\",\n () => {\n $header.classList.remove(\"open\");\n document.body.classList.remove(\"blur\");\n document\n .getElementById(\"menu-toggle-mobile\")\n .classList.remove(\"active\");\n document.getElementById(\"menu-mobile\").classList.remove(\"active\");\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"none\";\n this._searchMobile && this._searchMobile.autocomplete.setVal(\"\");\n },\n false\n );\n $searchClear.addEventListener(\n \"click\",\n () => {\n $searchClear.style.display = \"none\";\n this._searchMobile && this._searchMobile.autocomplete.setVal(\"\");\n },\n false\n );\n this._searchMobileOnClickMask =\n this._searchMobileOnClickMask ||\n (() => {\n $header.classList.remove(\"open\");\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"none\";\n this._searchMobile && this._searchMobile.autocomplete.setVal(\"\");\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener(\n \"click\",\n () => {\n document.body.classList.add(\"blur\");\n $header.classList.add(\"open\");\n $searchInput.focus();\n },\n false\n );\n $searchClear.addEventListener(\n \"click\",\n () => {\n $searchClear.style.display = \"none\";\n this._searchDesktop && this._searchDesktop.autocomplete.setVal(\"\");\n },\n false\n );\n this._searchDesktopOnClickMask =\n this._searchDesktopOnClickMask ||\n (() => {\n $header.classList.remove(\"open\");\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"none\";\n this._searchDesktop && this._searchDesktop.autocomplete.setVal(\"\");\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener(\n \"input\",\n () => {\n if ($searchInput.value === \"\") $searchClear.style.display = \"none\";\n else $searchClear.style.display = \"inline\";\n },\n false\n );\n\n const initAutosearch = () => {\n const autosearch = autocomplete(\n `#search-input-${suffix}`,\n {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\n },\n {\n name: \"search\",\n source: (query, callback) => {\n $searchLoading.style.display = \"inline\";\n $searchClear.style.display = \"none\";\n const finish = (results) => {\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"inline\";\n callback(results);\n };\n if (searchConfig.type === \"lunr\") {\n const search = () => {\n if (lunr.queryHandler) query = lunr.queryHandler(query);\n const results = {};\n this._index\n .search(query)\n .forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0)\n position = matchPosition;\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position +=\n context.substr(position, 20).lastIndexOf(\" \") + 1;\n context = \"...\" + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach((key) => {\n title = title.replace(\n new RegExp(`(${key})`, \"gi\"),\n `<${highlightTag}>$1</${highlightTag}>`\n );\n context = context.replace(\n new RegExp(`(${key})`, \"gi\"),\n `<${highlightTag}>$1</${highlightTag}>`\n );\n });\n results[uri] = {\n uri: uri,\n title: title,\n date: matchData.date,\n context: context,\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode)\n this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref(\"objectID\");\n this.field(\"title\", { boost: 50 });\n this.field(\"tags\", { boost: 20 });\n this.field(\"categories\", { boost: 20 });\n this.field(\"content\", { boost: 10 });\n this.metadataWhitelist = [\"position\"];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === \"algolia\") {\n this._algoliaIndex =\n this._algoliaIndex ||\n algoliasearch(\n searchConfig.algoliaAppID,\n searchConfig.algoliaSearchKey\n ).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: [\"title\"],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: `</${highlightTag}>`,\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(\n ({\n uri,\n date,\n _highlightResult: { title },\n _snippetResult: { content },\n }) => {\n if (\n results[uri] &&\n results[uri].context.length > content.value\n )\n return;\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value,\n };\n }\n );\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) =>\n `<div><span class=\"suggestion-title\">${title}</span><span class=\"suggestion-date\">${date}</span></div><div class=\"suggestion-context\">${context}</div>`,\n empty: ({ query }) =>\n `<div class=\"search-empty\">${searchConfig.noResultsFound}: <span class=\"search-query\">\"${query}\"</span></div>`,\n footer: ({}) => {\n const { searchType, icon, href } =\n searchConfig.type === \"algolia\"\n ? {\n searchType: \"algolia\",\n icon: '<i class=\"fab fa-algolia fa-fw\"></i>',\n href: \"https://www.algolia.com/\",\n }\n : {\n searchType: \"Lunr.js\",\n icon: \"\",\n href: \"https://lunrjs.com/\",\n };\n return `<div class=\"search-footer\">Search by <a href=\"${href}\" rel=\"noopener noreferrer\" target=\"_blank\">${icon} ${searchType}</a></div>`;\n },\n },\n }\n );\n autosearch.on(\n \"autocomplete:selected\",\n (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n }\n );\n if (isMobile) this._searchMobile = autosearch;\n else this._searchDesktop = autosearch;\n };\n if (\n searchConfig.lunrSegmentitURL &&\n !document.getElementById(\"lunr-segmentit\")\n ) {\n const script = document.createElement(\"script\");\n script.id = \"lunr-segmentit\";\n script.type = \"text/javascript\";\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (\n script.readyState == \"loaded\" ||\n script.readyState == \"complete\"\n ) {\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else initAutosearch();\n }\n\n initDetails() {\n this.util.forEach(\n document.getElementsByClassName(\"details\"),\n ($details) => {\n const $summary = $details.getElementsByClassName(\"details-summary\")[0];\n $summary.addEventListener(\n \"click\",\n () => {\n $details.classList.toggle(\"open\");\n },\n false\n );\n }\n );\n }\n\n initLightGallery() {\n if (this.config.lightGallery)\n lightGallery(\n document.getElementById(\"content\"),\n this.config.lightGallery\n );\n }\n\n initHighlight() {\n this.util.forEach(\n document.querySelectorAll(\".highlight > pre.chroma\"),\n ($preChroma) => {\n const $chroma = document.createElement(\"div\");\n $chroma.className = $preChroma.className;\n const $table = document.createElement(\"table\");\n $chroma.appendChild($table);\n const $tbody = document.createElement(\"tbody\");\n $table.appendChild($tbody);\n const $tr = document.createElement(\"tr\");\n $tbody.appendChild($tr);\n const $td = document.createElement(\"td\");\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n }\n );\n this.util.forEach(\n document.querySelectorAll(\".highlight > .chroma\"),\n ($chroma) => {\n const $codeElements = $chroma.querySelectorAll(\"pre.chroma > code\");\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement(\"div\");\n $header.className = \"code-header \" + $code.className.toLowerCase();\n const $title = document.createElement(\"span\");\n $title.classList.add(\"code-title\");\n $title.insertAdjacentHTML(\n \"afterbegin\",\n '<i class=\"arrow fas fa-chevron-right fa-fw\"></i>'\n );\n $title.addEventListener(\n \"click\",\n () => {\n $chroma.classList.toggle(\"open\");\n },\n false\n );\n $header.appendChild($title);\n const $ellipses = document.createElement(\"span\");\n $ellipses.insertAdjacentHTML(\n \"afterbegin\",\n '<i class=\"fas fa-ellipsis-h fa-fw\"></i>'\n );\n $ellipses.classList.add(\"ellipses\");\n $ellipses.addEventListener(\n \"click\",\n () => {\n $chroma.classList.add(\"open\");\n },\n false\n );\n $header.appendChild($ellipses);\n const $copy = document.createElement(\"span\");\n $copy.insertAdjacentHTML(\n \"afterbegin\",\n '<i class=\"far fa-copy fa-fw\"></i>'\n );\n $copy.classList.add(\"copy\");\n const code = $code.innerText;\n if (\n this.config.code.maxShownLines < 0 ||\n code.split(\"\\n\").length < this.config.code.maxShownLines + 2\n )\n $chroma.classList.add(\"open\");\n if (this.config.code.copyTitle) {\n $copy.setAttribute(\"data-clipboard-text\", code);\n $copy.title = this.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on(\"success\", (_e) => {\n this.util.animateCSS($code, \"flash\");\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n }\n );\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll(\".content table\"), ($table) => {\n const $wrapper = document.createElement(\"div\");\n $wrapper.className = \"table-wrapper\";\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(\n document.querySelectorAll(\".single .content > h\" + num),\n ($header) => {\n $header.classList.add(\"headerLink\");\n $header.insertAdjacentHTML(\n \"afterbegin\",\n `<a href=\"#${$header.id}\" class=\"header-mark\"></a>`\n );\n }\n );\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById(\"TableOfContents\");\n if ($tocCore === null) return;\n if (\n document.getElementById(\"toc-static\").getAttribute(\"kept\") ||\n this.util.isTocStatic()\n ) {\n const $tocContentStatic = document.getElementById(\"toc-content-static\");\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById(\"toc-content-auto\");\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById(\"toc-auto\");\n const $page = document.getElementsByClassName(\"page\")[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${$page.getBoundingClientRect().left - 20}px`;\n $toc.style.visibility = \"visible\";\n const $tocLinkElements = $tocCore.querySelectorAll(\"a:first-child\");\n const $tocLiElements = $tocCore.getElementsByTagName(\"li\");\n const $headerLinkElements = document.getElementsByClassName(\"headerLink\");\n const headerIsFixed =\n document.body.getAttribute(\"header-desktop\") !== \"normal\";\n const headerHeight = document.getElementById(\"header-desktop\")\n .offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop =\n minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n this._tocOnScroll =\n this._tocOnScroll ||\n (() => {\n const footerTop = document.getElementById(\"post-footer\").offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop =\n maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (this.newScrollTop < minScrollTop) {\n $toc.style.position = \"absolute\";\n $toc.style.top = `${minTocTop}px`;\n } else if (this.newScrollTop > maxScrollTop) {\n $toc.style.position = \"absolute\";\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = \"fixed\";\n $toc.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach($tocLinkElements, ($tocLink) => {\n $tocLink.classList.remove(\"active\");\n });\n this.util.forEach($tocLiElements, ($tocLi) => {\n $tocLi.classList.remove(\"has-active\");\n });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect()\n .top;\n if (\n (i == 0 && thisTop > INDEX_SPACING) ||\n (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)\n ) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add(\"active\");\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add(\"has-active\");\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) renderMathInElement(document.body, this.config.math);\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName(\"mermaid\");\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: \"null\" });\n this.util.forEach($mermaidElements, ($mermaid) => {\n mermaid.mermaidAPI.render(\n \"svg-\" + $mermaid.id,\n this.data[$mermaid.id],\n (svgCode) => {\n $mermaid.insertAdjacentHTML(\"afterbegin\", svgCode);\n },\n $mermaid\n );\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme =\n this._echartsOnSwitchTheme ||\n (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(\n document.getElementsByClassName(\"echarts\"),\n ($echarts) => {\n const chart = echarts.init(\n $echarts,\n this.isDark ? \"dark\" : \"macarons\",\n { renderer: \"svg\" }\n );\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n }\n );\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize =\n this._echartsOnResize ||\n (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(\n document.getElementsByClassName(\"mapbox\"),\n ($mapbox) => {\n const {\n lng,\n lat,\n zoom,\n lightStyle,\n darkStyle,\n marked,\n navigation,\n geolocate,\n scale,\n fullscreen,\n } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: 0.2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false,\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), \"bottom-right\");\n }\n if (geolocate) {\n mapbox.addControl(\n new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }),\n \"bottom-right\"\n );\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n }\n );\n this._mapboxOnSwitchTheme =\n this._mapboxOnSwitchTheme ||\n (() => {\n this.util.forEach(this._mapboxArr, (mapbox) => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed\n ? typeitConfig.cursorSpeed\n : 1000;\n const cursorChar = typeitConfig.cursorChar\n ? typeitConfig.cursorChar\n : \"|\";\n Object.values(typeitConfig.data).forEach((group) => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0)\n window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initComment() {\n if (this.config.comment) {\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render(\"gitalk\");\n }\n if (this.config.comment.valine) new Valine(this.config.comment.valine);\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement(\"script\");\n script.src = \"https://utteranc.es/client.js\";\n script.type = \"text/javascript\";\n script.setAttribute(\"repo\", utterancesConfig.repo);\n script.setAttribute(\"issue-term\", utterancesConfig.issueTerm);\n if (utterancesConfig.label)\n script.setAttribute(\"label\", utterancesConfig.label);\n script.setAttribute(\n \"theme\",\n this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme\n );\n script.crossOrigin = \"anonymous\";\n script.async = true;\n document.getElementById(\"utterances\").appendChild(script);\n this._utterancesOnSwitchTheme =\n this._utterancesOnSwitchTheme ||\n (() => {\n const message = {\n type: \"set-theme\",\n theme: this.isDark\n ? utterancesConfig.darkTheme\n : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector(\".utterances-frame\");\n iframe.contentWindow.postMessage(message, \"https://utteranc.es\");\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n }\n }\n }\n\n initSmoothScroll() {\n if (SmoothScroll)\n new SmoothScroll('[href^=\"#\"]', {\n speed: 300,\n speedAsDuration: true,\n header: \"#header-desktop\",\n });\n }\n\n initCookieconsent() {\n if (this.config.cookieconsent)\n cookieconsent.initialise(this.config.cookieconsent);\n }\n\n onScroll() {\n const $headers = [];\n if (document.body.getAttribute(\"header-desktop\") === \"auto\")\n $headers.push(document.getElementById(\"header-desktop\"));\n if (document.body.getAttribute(\"header-mobile\") === \"auto\")\n $headers.push(document.getElementById(\"header-mobile\"));\n if (document.getElementById(\"comments\")) {\n const $viewComments = document.getElementById(\"view-comments\");\n $viewComments.href = `#comments`;\n $viewComments.style.display = \"block\";\n }\n const $fixedButtons = document.getElementById(\"fixed-buttons\");\n const ACCURACY = 20,\n MINIMUM = 100;\n window.addEventListener(\n \"scroll\",\n () => {\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n const isMobile = this.util.isMobile();\n this.util.forEach($headers, ($header) => {\n if (scroll > ACCURACY) {\n $header.classList.remove(\"fadeInDown\");\n this.util.animateCSS($header, [\"fadeOutUp\", \"faster\"], true);\n } else if (scroll < -ACCURACY) {\n $header.classList.remove(\"fadeOutUp\");\n this.util.animateCSS($header, [\"fadeInDown\", \"faster\"], true);\n }\n });\n if (this.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove(\"fadeIn\");\n this.util.animateCSS($fixedButtons, [\"fadeOut\", \"faster\"], true);\n } else if (!isMobile || scroll < -ACCURACY) {\n $fixedButtons.style.display = \"block\";\n $fixedButtons.classList.remove(\"fadeOut\");\n this.util.animateCSS($fixedButtons, [\"fadeIn\", \"faster\"], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove(\"fadeIn\");\n this.util.animateCSS($fixedButtons, [\"fadeOut\", \"faster\"], true);\n }\n $fixedButtons.style.display = \"none\";\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n },\n false\n );\n }\n\n onResize() {\n window.addEventListener(\n \"resize\",\n () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n }, 100);\n }\n },\n false\n );\n }\n\n onClickMask() {\n document.getElementById(\"mask\").addEventListener(\n \"click\",\n () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove(\"blur\");\n },\n false\n );\n }\n\n init() {\n try {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenuMobile();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initSmoothScroll();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initCookieconsent();\n } catch (err) {\n console.error(err);\n }\n\n window.setTimeout(() => {\n this.initToc();\n this.initComment();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== \"loading\") {\n themeInit();\n} else {\n document.addEventListener(\"DOMContentLoaded\", themeInit, false);\n}\n"]} \ No newline at end of file
+{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"y6EAAM,CAAA,I,0GACJ,iBAAQ,CAAR,CAAkB,CAAlB,CAA2B,CACzB,CAAQ,CAAG,CAAQ,EAAI,EADE,CAEzB,IAAK,GAAI,CAAA,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,CAAQ,CAAC,MAA7B,CAAqC,CAAC,EAAtC,CAA0C,CAAO,CAAC,CAAQ,CAAC,CAAD,CAAT,CAClD,C,4BAED,uBAAe,CACb,MACG,CAAA,QAAQ,CAAC,eAAT,EAA4B,QAAQ,CAAC,eAAT,CAAyB,SAAtD,EACA,QAAQ,CAAC,IAAT,CAAc,SAEjB,C,wBAED,mBAAW,CACT,MAAO,CAAA,MAAM,CAAC,UAAP,CAAkB,oCAAlB,EAAwD,OAChE,C,2BAED,sBAAc,CACZ,MAAO,CAAA,MAAM,CAAC,UAAP,CAAkB,oCAAlB,EAAwD,OAChE,C,0BAED,oBAAW,CAAX,CAAoB,CAApB,CAA+B,CAA/B,CAAyC,CAAzC,CAAmD,OAC5C,KAAK,CAAC,OAAN,CAAc,CAAd,CAD4C,GAClB,CAAS,CAAG,CAAC,CAAD,CADM,EAEjD,GAAA,CAAO,CAAC,SAAR,EAAkB,GAAlB,UAAsB,UAAtB,4BAAqC,CAArC,GAFiD,CAGjD,GAAM,CAAA,CAAO,CAAG,UAAM,OACpB,GAAA,CAAO,CAAC,SAAR,EAAkB,MAAlB,UAAyB,UAAzB,4BAAwC,CAAxC,GADoB,CAEpB,CAAO,CAAC,mBAAR,CAA4B,cAA5B,CAA4C,CAA5C,CAFoB,CAGI,UAApB,QAAO,CAAA,CAHS,EAGgB,CAAQ,EAC7C,CAJD,CAKK,CAR4C,EAQlC,CAAO,CAAC,gBAAR,CAAyB,cAAzB,CAAyC,CAAzC,IAChB,C,SAGG,K,yBACJ,YAAc,yBACZ,KAAK,MAAL,CAAc,MAAM,CAAC,MADT,CAEZ,KAAK,IAAL,CAAY,KAAK,MAAL,CAAY,IAFZ,CAGZ,KAAK,MAAL,CAAsD,MAAxC,GAAA,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,OAA3B,CAHF,CAIZ,KAAK,IAAL,CAAY,GAAI,CAAA,IAJJ,CAKZ,KAAK,YAAL,CAAoB,KAAK,IAAL,CAAU,YAAV,EALR,CAMZ,KAAK,YAAL,CAAoB,KAAK,YANb,CAOZ,KAAK,cAAL,CAAsB,GAAI,CAAA,GAPd,CAQZ,KAAK,cAAL,CAAsB,GAAI,CAAA,GARd,CASZ,KAAK,mBAAL,CAA2B,GAAI,CAAA,GATnB,CAUZ,KAAK,iBAAL,CAAyB,GAAI,CAAA,GAVjB,CAWR,MAAM,CAAC,eAXC,EAWgB,eAAe,EAC5C,C,gDAED,sBAAc,CACZ,KAAK,IAAL,CAAU,OAAV,CAAkB,QAAQ,CAAC,gBAAT,CAA0B,gBAA1B,CAAlB,CAA+D,SAAC,CAAD,CAAW,CACxE,KAAK,CAAC,CAAK,CAAC,YAAN,CAAmB,cAAnB,CAAD,CAAL,CACG,IADH,CACQ,SAAC,CAAD,QAAc,CAAA,CAAQ,CAAC,IAAT,EAAd,CADR,EAEG,IAFH,CAEQ,SAAC,CAAD,CAAS,CACb,GAAM,CAAA,CAAK,CAAG,QAAQ,CAAC,aAAT,CAAuB,KAAvB,CAAd,CACA,CAAK,CAAC,kBAAN,CAAyB,YAAzB,CAAuC,CAAvC,CAFa,CAGb,GAAM,CAAA,CAAI,CAAG,CAAK,CAAC,UAAnB,CACA,CAAI,CAAC,YAAL,CAAkB,cAAlB,CAAkC,CAAK,CAAC,YAAN,CAAmB,cAAnB,CAAlC,CAJa,CAKb,CAAI,CAAC,SAAL,CAAe,GAAf,CAAmB,MAAnB,CALa,CAMb,GAAM,CAAA,CAAc,CAAG,CAAI,CAAC,oBAAL,CAA0B,OAA1B,CAAvB,CACI,CAAc,CAAC,MAPN,EAOc,CAAI,CAAC,WAAL,CAAiB,CAAc,CAAC,CAAD,CAA/B,CAPd,CAQb,CAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,CAAjC,CAAuC,CAAvC,CACD,CAXH,EAYG,KAZH,CAYS,SAAC,CAAD,CAAS,CACd,OAAO,CAAC,KAAR,CAAc,CAAd,CACD,CAdH,CAeD,CAhBD,CAiBD,C,2BAED,sBAAc,CACR,KAAK,MAAL,CAAY,OADJ,EACa,OAAO,CAAC,KAAR,CAAc,QAAQ,CAAC,IAAvB,CAC1B,C,8BAED,yBAAiB,IACT,CAAA,CAAiB,CAAG,QAAQ,CAAC,cAAT,CAAwB,oBAAxB,CADX,CAET,CAAW,CAAG,QAAQ,CAAC,cAAT,CAAwB,aAAxB,CAFL,CAGf,CAAiB,CAAC,gBAAlB,CACE,OADF,CAEE,UAAM,CACJ,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,MAAxB,CAA+B,MAA/B,CADI,CAEJ,CAAiB,CAAC,SAAlB,CAA4B,MAA5B,CAAmC,QAAnC,CAFI,CAGJ,CAAW,CAAC,SAAZ,CAAsB,MAAtB,CAA6B,QAA7B,CACD,CANH,IAHe,CAYf,KAAK,sBAAL,CACE,KAAK,sBAAL,EACC,UAAM,CACL,CAAiB,CAAC,SAAlB,CAA4B,MAA5B,CAAmC,QAAnC,CADK,CAEL,CAAW,CAAC,SAAZ,CAAsB,MAAtB,CAA6B,QAA7B,CACD,CAjBY,CAkBf,KAAK,iBAAL,CAAuB,GAAvB,CAA2B,KAAK,sBAAhC,CACD,C,+BAED,0BAAkB,YAChB,KAAK,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,sBAAT,CAAgC,cAAhC,CADF,CAEE,SAAC,CAAD,CAAkB,CAChB,CAAY,CAAC,gBAAb,CACE,OADF,CAEE,UAAM,CACwC,MAAxC,GAAA,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,OAA3B,CADA,CAEF,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,OAA3B,CAAoC,OAApC,CAFE,CAGC,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,OAA3B,CAAoC,MAApC,CAHD,CAIJ,CAAI,CAAC,MAAL,CAAc,CAAC,CAAI,CAAC,MAJhB,CAKJ,CAAI,CAAC,MAAL,CAAY,aAAZ,EAA6B,MAAM,CAAC,YAApC,EACE,YAAY,CAAC,OAAb,CAAqB,OAArB,CAA8B,CAAI,CAAC,MAAL,CAAc,MAAd,CAAuB,OAArD,CANE,oCAOc,CAAI,CAAC,mBAPnB,MAOJ,+BAAS,CAAA,CAAT,SAA4C,CAAK,EAAjD,CAPI,+BAQL,CAVH,IAaD,CAhBH,CAkBD,C,0BAED,qBAAa,YACL,CAAY,CAAG,KAAK,MAAL,CAAY,MADtB,CAEL,CAAQ,CAAG,KAAK,IAAL,CAAU,QAAV,EAFN,CAGX,KACE,CAAC,CAAD,EACC,CAAQ,EAAI,KAAK,iBADlB,EAEC,CAAC,CAAD,EAAa,KAAK,kBAHrB,MAOM,CAAA,CAAe,CAAG,CAAY,CAAC,eAAb,CACpB,CAAY,CAAC,eADO,CAEpB,EATJ,CAUM,CAAa,CAAG,CAAY,CAAC,aAAb,CAClB,CAAY,CAAC,aADK,CAElB,EAZJ,CAaM,CAAY,CAAG,CAAY,CAAC,YAAb,CACjB,CAAY,CAAC,YADI,CAEjB,IAfJ,CAiBM,CAAM,CAAG,CAAQ,CAAG,QAAH,CAAc,SAjBrC,CAkBM,CAAO,CAAG,QAAQ,CAAC,cAAT,kBAAkC,CAAlC,EAlBhB,CAmBM,CAAY,CAAG,QAAQ,CAAC,cAAT,wBAAwC,CAAxC,EAnBrB,CAoBM,CAAa,CAAG,QAAQ,CAAC,cAAT,yBAAyC,CAAzC,EApBtB,CAqBM,CAAc,CAAG,QAAQ,CAAC,cAAT,0BAA0C,CAA1C,EArBvB,CAsBM,CAAY,CAAG,QAAQ,CAAC,cAAT,wBAAwC,CAAxC,EAtBrB,CAuBI,CAvBJ,EAwBE,KAAK,iBAAL,GAxBF,CAyBE,CAAY,CAAC,gBAAb,CACE,OADF,CAEE,UAAM,CACJ,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,GAAxB,CAA4B,MAA5B,CADI,CAEJ,CAAO,CAAC,SAAR,CAAkB,GAAlB,CAAsB,MAAtB,CACD,CALH,IAzBF,CAiCE,QAAQ,CAAC,cAAT,CAAwB,sBAAxB,EAAgD,gBAAhD,CACE,OADF,CAEE,UAAM,CACJ,CAAO,CAAC,SAAR,CAAkB,MAAlB,CAAyB,MAAzB,CADI,CAEJ,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,MAAxB,CAA+B,MAA/B,CAFI,CAGJ,QAAQ,CACL,cADH,CACkB,oBADlB,EAEG,SAFH,CAEa,MAFb,CAEoB,QAFpB,CAHI,CAMJ,QAAQ,CAAC,cAAT,CAAwB,aAAxB,EAAuC,SAAvC,CAAiD,MAAjD,CAAwD,QAAxD,CANI,CAOJ,CAAc,CAAC,KAAf,CAAqB,OAArB,CAA+B,MAP3B,CAQJ,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,MARzB,CASJ,CAAI,CAAC,aAAL,EAAsB,CAAI,CAAC,aAAL,CAAmB,YAAnB,CAAgC,MAAhC,CAAuC,EAAvC,CACvB,CAZH,IAjCF,CAgDE,CAAY,CAAC,gBAAb,CACE,OADF,CAEE,UAAM,CACJ,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,MADzB,CAEJ,CAAI,CAAC,aAAL,EAAsB,CAAI,CAAC,aAAL,CAAmB,YAAnB,CAAgC,MAAhC,CAAuC,EAAvC,CACvB,CALH,IAhDF,CAwDE,KAAK,wBAAL,CACE,KAAK,wBAAL,EACC,UAAM,CACL,CAAO,CAAC,SAAR,CAAkB,MAAlB,CAAyB,MAAzB,CADK,CAEL,CAAc,CAAC,KAAf,CAAqB,OAArB,CAA+B,MAF1B,CAGL,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,MAHxB,CAIL,CAAI,CAAC,aAAL,EAAsB,CAAI,CAAC,aAAL,CAAmB,YAAnB,CAAgC,MAAhC,CAAuC,EAAvC,CACvB,CA/DL,CAgEE,KAAK,iBAAL,CAAuB,GAAvB,CAA2B,KAAK,wBAAhC,CAhEF,GAkEE,KAAK,kBAAL,GAlEF,CAmEE,CAAa,CAAC,gBAAd,CACE,OADF,CAEE,UAAM,CACJ,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,GAAxB,CAA4B,MAA5B,CADI,CAEJ,CAAO,CAAC,SAAR,CAAkB,GAAlB,CAAsB,MAAtB,CAFI,CAGJ,CAAY,CAAC,KAAb,EACD,CANH,IAnEF,CA4EE,CAAY,CAAC,gBAAb,CACE,OADF,CAEE,UAAM,CACJ,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,MADzB,CAEJ,CAAI,CAAC,cAAL,EAAuB,CAAI,CAAC,cAAL,CAAoB,YAApB,CAAiC,MAAjC,CAAwC,EAAxC,CACxB,CALH,IA5EF,CAoFE,KAAK,yBAAL,CACE,KAAK,yBAAL,EACC,UAAM,CACL,CAAO,CAAC,SAAR,CAAkB,MAAlB,CAAyB,MAAzB,CADK,CAEL,CAAc,CAAC,KAAf,CAAqB,OAArB,CAA+B,MAF1B,CAGL,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,MAHxB,CAIL,CAAI,CAAC,cAAL,EAAuB,CAAI,CAAC,cAAL,CAAoB,YAApB,CAAiC,MAAjC,CAAwC,EAAxC,CACxB,CA3FL,CA4FE,KAAK,iBAAL,CAAuB,GAAvB,CAA2B,KAAK,yBAAhC,CA5FF,EA8FA,CAAY,CAAC,gBAAb,CACE,OADF,CAEE,UAAM,CAC2B,CAAY,CAAC,KAAb,CAAmB,OAD9C,CACuB,EAAvB,GAAA,CAAY,CAAC,KADb,CACwD,MADxD,CAE8B,QACnC,CALH,IA9FA,CAuGA,GAAM,CAAA,CAAc,CAAG,UAAM,CAC3B,GAAM,CAAA,CAAU,CAAG,YAAY,yBACZ,CADY,EAE7B,CACE,IAAI,GADN,CAEE,UAAU,GAFZ,CAGE,qBAAqB,4BAAsB,CAAtB,CAHvB,CAIE,eAAe,GAJjB,CAKE,UAAU,CAAE,CAAE,QAAQ,GAAV,CALd,CAME,KAAK,GANP,CAF6B,CAU7B,CACE,IAAI,CAAE,QADR,CAEE,MAAM,CAAE,gBAAC,CAAD,CAAQ,CAAR,CAAqB,CAC3B,CAAc,CAAC,KAAf,CAAqB,OAArB,CAA+B,QADJ,CAE3B,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,MAFF,CAG3B,GAAM,CAAA,CAAM,CAAG,SAAC,CAAD,CAAa,CAC1B,CAAc,CAAC,KAAf,CAAqB,OAArB,CAA+B,MADL,CAE1B,CAAY,CAAC,KAAb,CAAmB,OAAnB,CAA6B,QAFH,CAG1B,CAAQ,CAAC,CAAD,CACT,CAJD,CAKA,GAA0B,MAAtB,GAAA,CAAY,CAAC,IAAjB,CAAkC,CAChC,GAAM,CAAA,CAAM,CAAG,UAAM,CACf,IAAI,CAAC,YADU,GACI,CAAK,CAAG,IAAI,CAAC,YAAL,CAAkB,CAAlB,CADZ,EAEnB,GAAM,CAAA,CAAO,CAAG,EAAhB,CAwCA,MAvCA,CAAA,CAAI,CAAC,MAAL,CACG,MADH,CACU,CADV,EAEG,OAFH,CAEW,WAAsC,IAAnC,CAAA,CAAmC,GAAnC,GAAmC,CAAjB,CAAiB,GAA9B,SAA8B,CAAjB,QAAiB,CACvC,CAAS,CAAG,CAAI,CAAC,UAAL,CAAgB,CAAhB,CAD2B,CAEvC,CAFuC,CAEN,CAFM,CAEvC,GAFuC,CAElC,CAFkC,CAEN,CAFM,CAElC,KAFkC,CAElB,CAFkB,CAEN,CAFM,CAE3B,OAF2B,CAG7C,IAAI,CAAO,CAAC,CAAD,CAAX,EACA,GAAI,CAAA,CAAQ,CAAG,CAAf,CACA,MAAM,CAAC,MAAP,CAAc,CAAd,EAAwB,OAAxB,CAAgC,WAAiB,IAAd,CAAA,CAAc,GAAd,OAAc,CAC/C,GAAI,CAAJ,CAAa,CACX,GAAM,CAAA,CAAa,CAAG,CAAO,CAAC,QAAR,CAAiB,CAAjB,EAAoB,CAApB,CAAtB,CADW,CAEP,CAAa,CAAG,CAAhB,EAAyC,CAAb,GAAA,CAFrB,IAGT,CAAQ,CAAG,CAHF,CAIZ,CACF,CAND,CAFA,CASA,CAAQ,EAAI,CAAa,CAAG,CAT5B,CAUe,CAAX,CAAA,CAVJ,EAWE,CAAQ,EACN,CAAO,CAAC,MAAR,CAAe,CAAf,CAAyB,EAAzB,EAA6B,WAA7B,CAAyC,GAAzC,EAAgD,CAZpD,CAaE,CAAO,CAAG,MAAQ,CAAO,CAAC,MAAR,CAAe,CAAf,CAAyB,CAAzB,CAbpB,EAeE,CAAO,CAAG,CAAO,CAAC,MAAR,CAAe,CAAf,CAAkB,CAAlB,CAfZ,CAiBA,MAAM,CAAC,IAAP,CAAY,CAAZ,EAAsB,OAAtB,CAA8B,SAAC,CAAD,CAAS,CACrC,CAAK,CAAG,CAAK,CAAC,OAAN,CACN,GAAI,CAAA,MAAJ,YAAe,CAAf,MAAuB,IAAvB,CADM,YAEF,CAFE,iBAEkB,CAFlB,MAD6B,CAKrC,CAAO,CAAG,CAAO,CAAC,OAAR,CACR,GAAI,CAAA,MAAJ,YAAe,CAAf,MAAuB,IAAvB,CADQ,YAEJ,CAFI,iBAEgB,CAFhB,MAIX,CATD,CAjBA,CA2BA,CAAO,CAAC,CAAD,CAAP,CAAe,CACb,GAAG,CAAE,CADQ,CAEb,KAAK,CAAE,CAFM,CAGb,IAAI,CAAE,CAAS,CAAC,IAHH,CAIb,OAAO,CAAE,CAJI,CA3Bf,CAiCD,CAtCH,CAuCA,CAAO,MAAM,CAAC,MAAP,CAAc,CAAd,EAAuB,KAAvB,CAA6B,CAA7B,CAAgC,CAAhC,CACR,CA3CD,CA4CK,CAAI,CAAC,MA7CsB,CAuEzB,CAAM,CAAC,CAAM,EAAP,CAvEmB,CA8C9B,KAAK,CAAC,CAAY,CAAC,YAAd,CAAL,CACG,IADH,CACQ,SAAC,CAAD,QAAc,CAAA,CAAQ,CAAC,IAAT,EAAd,CADR,EAEG,IAFH,CAEQ,SAAC,CAAD,CAAU,CACd,GAAM,CAAA,CAAS,CAAG,EAAlB,CACA,CAAI,CAAC,MAAL,CAAc,IAAI,CAAC,UAAY,YACzB,CAAY,CAAC,gBADY,EAE3B,KAAK,GAAL,CAAS,IAAI,CAAC,CAAY,CAAC,gBAAd,CAAb,CAF2B,CAG7B,KAAK,GAAL,CAAS,UAAT,CAH6B,CAI7B,KAAK,KAAL,CAAW,OAAX,CAAoB,CAAE,KAAK,CAAE,EAAT,CAApB,CAJ6B,CAK7B,KAAK,KAAL,CAAW,MAAX,CAAmB,CAAE,KAAK,CAAE,EAAT,CAAnB,CAL6B,CAM7B,KAAK,KAAL,CAAW,YAAX,CAAyB,CAAE,KAAK,CAAE,EAAT,CAAzB,CAN6B,CAO7B,KAAK,KAAL,CAAW,SAAX,CAAsB,CAAE,KAAK,CAAE,EAAT,CAAtB,CAP6B,CAQ7B,KAAK,iBAAL,CAAyB,CAAC,UAAD,CARI,CAS7B,CAAI,CAAC,OAAL,CAAa,SAAC,CAAD,CAAY,CACvB,CAAS,CAAC,CAAM,CAAC,QAAR,CAAT,CAA6B,CADN,CAEvB,CAAI,CAAC,GAAL,CAAS,CAAT,CACD,CAHD,CAID,CAbiB,CAFJ,CAgBd,CAAI,CAAC,UAAL,CAAkB,CAhBJ,CAiBd,CAAM,CAAC,CAAM,EAAP,CACP,CApBH,EAqBG,KArBH,CAqBS,SAAC,CAAD,CAAS,CACd,OAAO,CAAC,KAAR,CAAc,CAAd,CADc,CAEd,CAAM,CAAC,EAAD,CACP,CAxBH,CA0BH,CAxED,IAwEiC,SAAtB,GAAA,CAAY,CAAC,IAxExB,GAyEE,CAAI,CAAC,aAAL,CACE,CAAI,CAAC,aAAL,EACA,aAAa,CACX,CAAY,CAAC,YADF,CAEX,CAAY,CAAC,gBAFF,CAAb,CAGE,SAHF,CAGY,CAAY,CAAC,YAHzB,CA3EJ,CA+EE,CAAI,CAAC,aAAL,CACG,MADH,CACU,CADV,CACiB,CACb,MAAM,CAAE,CADK,CAEb,MAAM,CAAoB,CAAlB,CAAA,CAFK,CAGb,qBAAqB,CAAE,CAAC,OAAD,CAHV,CAIb,mBAAmB,CAAE,mBAAY,CAAZ,EAJR,CAKb,eAAe,YAAM,CAAN,KALF,CAMb,gBAAgB,aAAO,CAAP,KANH,CADjB,EASG,IATH,CASQ,WAAc,IAAX,CAAA,CAAW,GAAX,IAAW,CACZ,CAAO,CAAG,EADE,CAElB,CAAI,CAAC,OAAL,CACE,WAKM,IAJJ,CAAA,CAII,GAJJ,GAII,CAHJ,CAGI,GAHJ,IAGI,CAFgB,CAEhB,GAFJ,gBAEI,CAFgB,KAEhB,CADc,CACd,GADJ,cACI,CADc,OACd,CAEF,CAAO,CAAC,CAAD,CAAP,EACA,CAAO,CAAC,CAAD,CAAP,CAAa,OAAb,CAAqB,MAArB,CAA8B,CAAO,CAAC,KAHpC,GAMJ,CAAO,CAAC,CAAD,CAAP,CAAe,CACb,GAAG,CAAE,CADQ,CAEb,KAAK,CAAE,CAAK,CAAC,KAFA,CAGb,IAAI,CAAE,CAHO,CAIb,OAAO,CAAE,CAAO,CAAC,KAJJ,CANX,CAYL,CAlBH,CAFkB,CAsBlB,CAAM,CAAC,MAAM,CAAC,MAAP,CAAc,CAAd,EAAuB,KAAvB,CAA6B,CAA7B,CAAgC,CAAhC,CAAD,CACP,CAhCH,EAiCG,KAjCH,CAiCS,SAAC,CAAD,CAAS,CACd,OAAO,CAAC,KAAR,CAAc,CAAd,CADc,CAEd,CAAM,CAAC,EAAD,CACP,CApCH,CA/EF,CAqHD,CA/HH,CAgIE,SAAS,CAAE,CACT,UAAU,CAAE,0BAAG,CAAA,CAAH,GAAG,KAAH,CAAU,CAAV,GAAU,IAAV,CAAgB,CAAhB,GAAgB,OAAhB,uDAC6B,CAD7B,mDAC0E,CAD1E,2DAC8H,CAD9H,WADH,CAGT,KAAK,CAAE,qBAAG,CAAA,CAAH,GAAG,KAAH,6CACwB,CAAY,CAAC,cADrC,6CACoF,CADpF,oBAHE,CAKT,MAAM,CAAE,kBAAQ,8BACd,MACwB,SAAtB,GAAA,CAAY,CAAC,IAAb,CACI,CACE,UAAU,CAAE,SADd,CAEE,IAAI,CAAE,wCAFR,CAGE,IAAI,CAAE,0BAHR,CADJ,CAMI,CACE,UAAU,CAAE,SADd,CAEE,IAAI,CAAE,EAFR,CAGE,IAAI,CAAE,qBAHR,CAPN,CAAQ,CAAR,GAAQ,UAAR,CAAoB,CAApB,GAAoB,IAApB,CAA0B,CAA1B,GAA0B,IAA1B,CAYA,iEAAwD,CAAxD,6DAA2G,CAA3G,aAAmH,CAAnH,cACD,CAnBQ,CAhIb,CAV6B,CAA/B,CAiKA,CAAU,CAAC,EAAX,CACE,uBADF,CAEE,SAAC,CAAD,CAAS,CAAT,CAA4C,CAC1C,MAAM,CAAC,QAAP,CAAgB,MAAhB,CAAuB,CAAU,CAAC,GAAlC,CACD,CAJH,CAlK2B,CAwKvB,CAxKuB,CAwKb,CAAI,CAAC,aAAL,CAAqB,CAxKR,CAyKtB,CAAI,CAAC,cAAL,CAAsB,CAC5B,CA1KD,CA2KA,GACE,CAAY,CAAC,gBAAb,EACA,CAAC,QAAQ,CAAC,cAAT,CAAwB,gBAAxB,CAFH,CAGE,CACA,GAAM,CAAA,CAAM,CAAG,QAAQ,CAAC,aAAT,CAAuB,QAAvB,CAAf,CACA,CAAM,CAAC,EAAP,CAAY,gBAFZ,CAGA,CAAM,CAAC,IAAP,CAAc,iBAHd,CAIA,CAAM,CAAC,GAAP,CAAa,CAAY,CAAC,gBAJ1B,CAKA,CAAM,CAAC,KAAP,GALA,CAMI,CAAM,CAAC,UANX,CAOE,CAAM,CAAC,kBAAP,CAA4B,UAAM,EAET,QAArB,EAAA,CAAM,CAAC,UAAP,EACqB,UAArB,EAAA,CAAM,CAAC,UAHuB,IAK9B,CAAM,CAAC,kBAAP,CAA4B,IALE,CAM9B,CAAc,EANgB,CAQjC,CAfH,CAiBE,CAAM,CAAC,MAAP,CAAgB,UAAM,CACpB,CAAc,EACf,CAnBH,CAqBA,QAAQ,CAAC,IAAT,CAAc,WAAd,CAA0B,CAA1B,CACD,CAzBD,IAyBO,CAAA,CAAc,EA3SrB,CA4SD,C,2BAED,sBAAc,CACZ,KAAK,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,sBAAT,CAAgC,SAAhC,CADF,CAEE,SAAC,CAAD,CAAc,CACZ,GAAM,CAAA,CAAQ,CAAG,CAAQ,CAAC,sBAAT,CAAgC,iBAAhC,EAAmD,CAAnD,CAAjB,CACA,CAAQ,CAAC,gBAAT,CACE,OADF,CAEE,UAAM,CACJ,CAAQ,CAAC,SAAT,CAAmB,MAAnB,CAA0B,MAA1B,CACD,CAJH,IAOD,CAXH,CAaD,C,gCAED,2BAAmB,CACb,KAAK,MAAL,CAAY,YADC,EAEf,YAAY,CACV,QAAQ,CAAC,cAAT,CAAwB,SAAxB,CADU,CAEV,KAAK,MAAL,CAAY,YAFF,CAIf,C,6BAED,wBAAgB,YACd,KAAK,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,gBAAT,CAA0B,yBAA1B,CADF,CAEE,SAAC,CAAD,CAAgB,CACd,GAAM,CAAA,CAAO,CAAG,QAAQ,CAAC,aAAT,CAAuB,KAAvB,CAAhB,CACA,CAAO,CAAC,SAAR,CAAoB,CAAU,CAAC,SAFjB,CAGd,GAAM,CAAA,CAAM,CAAG,QAAQ,CAAC,aAAT,CAAuB,OAAvB,CAAf,CACA,CAAO,CAAC,WAAR,CAAoB,CAApB,CAJc,CAKd,GAAM,CAAA,CAAM,CAAG,QAAQ,CAAC,aAAT,CAAuB,OAAvB,CAAf,CACA,CAAM,CAAC,WAAP,CAAmB,CAAnB,CANc,CAOd,GAAM,CAAA,CAAG,CAAG,QAAQ,CAAC,aAAT,CAAuB,IAAvB,CAAZ,CACA,CAAM,CAAC,WAAP,CAAmB,CAAnB,CARc,CASd,GAAM,CAAA,CAAG,CAAG,QAAQ,CAAC,aAAT,CAAuB,IAAvB,CAAZ,CACA,CAAG,CAAC,WAAJ,CAAgB,CAAhB,CAVc,CAWd,CAAU,CAAC,aAAX,CAAyB,YAAzB,CAAsC,CAAtC,CAA+C,CAA/C,CAXc,CAYd,CAAG,CAAC,WAAJ,CAAgB,CAAhB,CACD,CAfH,CADc,CAkBd,KAAK,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,gBAAT,CAA0B,sBAA1B,CADF,CAEE,SAAC,CAAD,CAAa,CACX,GAAM,CAAA,CAAa,CAAG,CAAO,CAAC,gBAAR,CAAyB,mBAAzB,CAAtB,CACA,GAAI,CAAa,CAAC,MAAlB,CAA0B,IAClB,CAAA,CAAK,CAAG,CAAa,CAAC,CAAa,CAAC,MAAd,CAAuB,CAAxB,CADH,CAElB,CAAO,CAAG,QAAQ,CAAC,aAAT,CAAuB,KAAvB,CAFQ,CAGxB,CAAO,CAAC,SAAR,CAAoB,eAAiB,CAAK,CAAC,SAAN,CAAgB,WAAhB,EAHb,CAIxB,GAAM,CAAA,CAAM,CAAG,QAAQ,CAAC,aAAT,CAAuB,MAAvB,CAAf,CACA,CAAM,CAAC,SAAP,CAAiB,GAAjB,CAAqB,YAArB,CALwB,CAMxB,CAAM,CAAC,kBAAP,CACE,YADF,CAEE,oDAFF,CANwB,CAUxB,CAAM,CAAC,gBAAP,CACE,OADF,CAEE,UAAM,CACJ,CAAO,CAAC,SAAR,CAAkB,MAAlB,CAAyB,MAAzB,CACD,CAJH,IAVwB,CAiBxB,CAAO,CAAC,WAAR,CAAoB,CAApB,CAjBwB,CAkBxB,GAAM,CAAA,CAAS,CAAG,QAAQ,CAAC,aAAT,CAAuB,MAAvB,CAAlB,CACA,CAAS,CAAC,kBAAV,CACE,YADF,CAEE,2CAFF,CAnBwB,CAuBxB,CAAS,CAAC,SAAV,CAAoB,GAApB,CAAwB,UAAxB,CAvBwB,CAwBxB,CAAS,CAAC,gBAAV,CACE,OADF,CAEE,UAAM,CACJ,CAAO,CAAC,SAAR,CAAkB,GAAlB,CAAsB,MAAtB,CACD,CAJH,IAxBwB,CA+BxB,CAAO,CAAC,WAAR,CAAoB,CAApB,CA/BwB,CAgCxB,GAAM,CAAA,CAAK,CAAG,QAAQ,CAAC,aAAT,CAAuB,MAAvB,CAAd,CACA,CAAK,CAAC,kBAAN,CACE,YADF,CAEE,qCAFF,CAjCwB,CAqCxB,CAAK,CAAC,SAAN,CAAgB,GAAhB,CAAoB,MAApB,CArCwB,CAsCxB,GAAM,CAAA,CAAI,CAAG,CAAK,CAAC,SAAnB,CAMA,IAJmC,CAAjC,CAAA,CAAI,CAAC,MAAL,CAAY,IAAZ,CAAiB,aAAjB,EACA,CAAI,CAAC,KAAL,CAAW,IAAX,EAAiB,MAAjB,CAA0B,CAAI,CAAC,MAAL,CAAY,IAAZ,CAAiB,aAAjB,CAAiC,CAG7D,GADE,CAAO,CAAC,SAAR,CAAkB,GAAlB,CAAsB,MAAtB,CACF,CAAI,CAAI,CAAC,MAAL,CAAY,IAAZ,CAAiB,SAArB,CAAgC,CAC9B,CAAK,CAAC,YAAN,CAAmB,qBAAnB,CAA0C,CAA1C,CAD8B,CAE9B,CAAK,CAAC,KAAN,CAAc,CAAI,CAAC,MAAL,CAAY,IAAZ,CAAiB,SAFD,CAG9B,GAAM,CAAA,CAAS,CAAG,GAAI,CAAA,WAAJ,CAAgB,CAAhB,CAAlB,CACA,CAAS,CAAC,EAAV,CAAa,SAAb,CAAwB,UAAQ,CAC9B,CAAI,CAAC,IAAL,CAAU,UAAV,CAAqB,CAArB,CAA4B,OAA5B,CACD,CAFD,CAJ8B,CAO9B,CAAO,CAAC,WAAR,CAAoB,CAApB,CACD,CACD,CAAO,CAAC,YAAR,CAAqB,CAArB,CAA8B,CAAO,CAAC,UAAtC,CACD,CACF,CA3DH,CA6DD,C,yBAED,oBAAY,CACV,KAAK,IAAL,CAAU,OAAV,CAAkB,QAAQ,CAAC,gBAAT,CAA0B,gBAA1B,CAAlB,CAA+D,SAAC,CAAD,CAAY,CACzE,GAAM,CAAA,CAAQ,CAAG,QAAQ,CAAC,aAAT,CAAuB,KAAvB,CAAjB,CACA,CAAQ,CAAC,SAAT,CAAqB,eAFoD,CAGzE,CAAM,CAAC,aAAP,CAAqB,YAArB,CAAkC,CAAlC,CAA4C,CAA5C,CAHyE,CAIzE,CAAQ,CAAC,WAAT,CAAqB,CAArB,CACD,CALD,CAMD,C,8BAED,yBAAiB,CACf,IAAK,GAAI,CAAA,CAAG,CAAG,CAAf,CAAyB,CAAP,EAAA,CAAlB,CAA4B,CAAG,EAA/B,CACE,KAAK,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,gBAAT,CAA0B,uBAAyB,CAAnD,CADF,CAEE,SAAC,CAAD,CAAa,CACX,CAAO,CAAC,SAAR,CAAkB,GAAlB,CAAsB,YAAtB,CADW,CAEX,CAAO,CAAC,kBAAR,CACE,YADF,sBAEe,CAAO,CAAC,EAFvB,kCAID,CARH,CAWH,C,uBAED,kBAAU,YACF,CAAQ,CAAG,QAAQ,CAAC,cAAT,CAAwB,iBAAxB,CADT,CAER,GAAiB,IAAb,GAAA,CAAJ,CACA,GACE,QAAQ,CAAC,cAAT,CAAwB,YAAxB,EAAsC,YAAtC,CAAmD,MAAnD,GACA,KAAK,IAAL,CAAU,WAAV,EAFF,CAGE,CACA,GAAM,CAAA,CAAiB,CAAG,QAAQ,CAAC,cAAT,CAAwB,oBAAxB,CAA1B,CACI,CAAQ,CAAC,aAAT,GAA2B,CAF/B,GAGE,CAAQ,CAAC,aAAT,CAAuB,WAAvB,CAAmC,CAAnC,CAHF,CAIE,CAAiB,CAAC,WAAlB,CAA8B,CAA9B,CAJF,EAMI,KAAK,YANT,EAMuB,KAAK,cAAL,CAAoB,MAApB,CAA2B,KAAK,YAAhC,CACxB,CAVD,IAUO,CACL,GAAM,CAAA,CAAe,CAAG,QAAQ,CAAC,cAAT,CAAwB,kBAAxB,CAAxB,CACI,CAAQ,CAAC,aAAT,GAA2B,CAF1B,GAGH,CAAQ,CAAC,aAAT,CAAuB,WAAvB,CAAmC,CAAnC,CAHG,CAIH,CAAe,CAAC,WAAhB,CAA4B,CAA5B,CAJG,KAMC,CAAA,CAAI,CAAG,QAAQ,CAAC,cAAT,CAAwB,UAAxB,CANR,CAOC,CAAK,CAAG,QAAQ,CAAC,sBAAT,CAAgC,MAAhC,EAAwC,CAAxC,CAPT,CAQC,CAAI,CAAG,CAAK,CAAC,qBAAN,EARR,CASL,CAAI,CAAC,KAAL,CAAW,IAAX,WAAqB,CAAI,CAAC,IAAL,CAAY,CAAI,CAAC,KAAjB,CAAyB,EAA9C,MATK,CAUL,CAAI,CAAC,KAAL,CAAW,QAAX,WAAyB,CAAK,CAAC,qBAAN,GAA8B,IAA9B,CAAqC,EAA9D,MAVK,CAWL,CAAI,CAAC,KAAL,CAAW,UAAX,CAAwB,SAXnB,IAYC,CAAA,CAAgB,CAAG,CAAQ,CAAC,gBAAT,CAA0B,eAA1B,CAZpB,CAaC,CAAc,CAAG,CAAQ,CAAC,oBAAT,CAA8B,IAA9B,CAblB,CAcC,CAAmB,CAAG,QAAQ,CAAC,sBAAT,CAAgC,YAAhC,CAdvB,CAeC,CAAa,CACgC,QAAjD,GAAA,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,gBAA3B,CAhBG,CAiBC,CAAY,CAChB,QAAQ,CAAC,cAAT,CAAwB,gBAAxB,EAA0C,YAlBvC,CAmBC,CAAW,CAAG,IAAM,CAAa,CAAG,CAAH,CAAkB,CAArC,CAnBf,CAoBC,CAAS,CAAG,CAAI,CAAC,SApBlB,CAqBC,CAAY,CAChB,CAAS,CAAG,CAAZ,EAA2B,CAAa,CAAG,CAAH,CAAO,CAA/C,CAtBG,CAuBL,KAAK,YAAL,CACE,KAAK,YAAL,EACC,UAAM,IACC,CAAA,CAAS,CAAG,QAAQ,CAAC,cAAT,CAAwB,aAAxB,EAAuC,SADpD,CAEC,CAAS,CAAG,CAAS,CAAG,CAAI,CAAC,qBAAL,GAA6B,MAFtD,CAGC,CAAY,CAChB,CAAS,CAAG,CAAZ,EAA2B,CAAa,CAAG,CAAH,CAAO,CAA/C,CAJG,CAKD,CAAI,CAAC,YAAL,CAAoB,CALnB,EAMH,CAAI,CAAC,KAAL,CAAW,QAAX,CAAsB,UANnB,CAOH,CAAI,CAAC,KAAL,CAAW,GAAX,WAAoB,CAApB,MAPG,EAQM,CAAI,CAAC,YAAL,CAAoB,CAR1B,EASH,CAAI,CAAC,KAAL,CAAW,QAAX,CAAsB,UATnB,CAUH,CAAI,CAAC,KAAL,CAAW,GAAX,WAAoB,CAApB,MAVG,GAYH,CAAI,CAAC,KAAL,CAAW,QAAX,CAAsB,OAZnB,CAaH,CAAI,CAAC,KAAL,CAAW,GAAX,WAAoB,CAApB,MAbG,EAgBL,CAAI,CAAC,IAAL,CAAU,OAAV,CAAkB,CAAlB,CAAoC,SAAC,CAAD,CAAc,CAChD,CAAQ,CAAC,SAAT,CAAmB,MAAnB,CAA0B,QAA1B,CACD,CAFD,CAhBK,CAmBL,CAAI,CAAC,IAAL,CAAU,OAAV,CAAkB,CAAlB,CAAkC,SAAC,CAAD,CAAY,CAC5C,CAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,YAAxB,CACD,CAFD,CAnBK,CAwBL,OAFM,CAAA,CAAa,CAAG,IAAM,CAAa,CAAG,CAAH,CAAkB,CAArC,CAEtB,CADI,CAAc,CAAG,CAAmB,CAAC,MAApB,CAA6B,CAClD,CAAS,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,CAAmB,CAAC,MAApB,CAA6B,CAAjD,CAAoD,CAAC,EAArD,CAAyD,IACjD,CAAA,CAAO,CAAG,CAAmB,CAAC,CAAD,CAAnB,CAAuB,qBAAvB,GAA+C,GADR,CAEjD,CAAO,CACX,CAAmB,CAAC,CAAC,CAAG,CAAL,CAAnB,CAA2B,qBAA3B,GAAmD,GAHE,CAIvD,GACQ,CAAL,EAAA,CAAC,EAAS,CAAO,CAAG,CAArB,EACC,CAAO,EAAI,CAAX,EAA4B,CAAO,CAAG,CAFzC,CAGE,CACA,CAAc,CAAG,CADjB,CAEA,KACD,CACF,CACD,GAAuB,CAAC,CAApB,GAAA,CAAJ,CAA2B,CACzB,CAAgB,CAAC,CAAD,CAAhB,CAAiC,SAAjC,CAA2C,GAA3C,CAA+C,QAA/C,CADyB,KAEzB,GAAI,CAAA,CAAO,CAAG,CAAgB,CAAC,CAAD,CAAhB,CAAiC,aAFtB,CAGlB,CAAO,GAAK,CAHM,EAIvB,CAAO,CAAC,SAAR,CAAkB,GAAlB,CAAsB,YAAtB,CAJuB,CAKvB,CAAO,CAAG,CAAO,CAAC,aAAR,CAAsB,aAEnC,CACF,CArEE,CAsEL,KAAK,YAAL,EAtEK,CAuEL,KAAK,cAAL,CAAoB,GAApB,CAAwB,KAAK,YAA7B,CACD,CACF,C,wBAED,mBAAW,CACL,KAAK,MAAL,CAAY,IADP,EACa,mBAAmB,CAAC,QAAQ,CAAC,IAAV,CAAgB,KAAK,MAAL,CAAY,IAA5B,CAC1C,C,2BAED,sBAAc,YACN,CAAgB,CAAG,QAAQ,CAAC,sBAAT,CAAgC,SAAhC,CADb,CAER,CAAgB,CAAC,MAFT,GAGV,OAAO,CAAC,UAAR,CAAmB,CAAE,WAAW,GAAb,CAAsB,KAAK,CAAE,MAA7B,CAAnB,CAHU,CAIV,KAAK,IAAL,CAAU,OAAV,CAAkB,CAAlB,CAAoC,SAAC,CAAD,CAAc,CAChD,OAAO,CAAC,UAAR,CAAmB,MAAnB,CACE,OAAS,CAAQ,CAAC,EADpB,CAEE,CAAI,CAAC,IAAL,CAAU,CAAQ,CAAC,EAAnB,CAFF,CAGE,SAAC,CAAD,CAAa,CACX,CAAQ,CAAC,kBAAT,CAA4B,YAA5B,CAA0C,CAA1C,CACD,CALH,CAME,CANF,CAQD,CATD,CAJU,CAeb,C,2BAED,sBAAc,YACZ,KAAK,qBAAL,CACE,KAAK,qBAAL,EACC,UAAM,CACL,CAAI,CAAC,WAAL,CAAmB,CAAI,CAAC,WAAL,EAAoB,EADlC,CAEL,IAAK,GAAI,CAAA,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,CAAI,CAAC,WAAL,CAAiB,MAArC,CAA6C,CAAC,EAA9C,CACE,CAAI,CAAC,WAAL,CAAiB,CAAjB,EAAoB,OAApB,GAEF,CAAI,CAAC,WAAL,CAAmB,EALd,CAML,CAAI,CAAC,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,sBAAT,CAAgC,SAAhC,CADF,CAEE,SAAC,CAAD,CAAc,CACZ,GAAM,CAAA,CAAK,CAAG,OAAO,CAAC,IAAR,CACZ,CADY,CAEZ,CAAI,CAAC,MAAL,CAAc,MAAd,CAAuB,UAFX,CAGZ,CAAE,QAAQ,CAAE,KAAZ,CAHY,CAAd,CAKA,CAAK,CAAC,SAAN,CAAgB,IAAI,CAAC,KAAL,CAAW,CAAI,CAAC,IAAL,CAAU,CAAQ,CAAC,EAAnB,CAAX,CAAhB,CANY,CAOZ,CAAI,CAAC,WAAL,CAAiB,IAAjB,CAAsB,CAAtB,CACD,CAVH,CAYD,CArBS,CAsBZ,KAAK,mBAAL,CAAyB,GAAzB,CAA6B,KAAK,qBAAlC,CAtBY,CAuBZ,KAAK,qBAAL,EAvBY,CAwBZ,KAAK,gBAAL,CACE,KAAK,gBAAL,EACC,UAAM,CACL,IAAK,GAAI,CAAA,CAAC,CAAG,CAAb,CAAgB,CAAC,CAAG,CAAI,CAAC,WAAL,CAAiB,MAArC,CAA6C,CAAC,EAA9C,CACE,CAAI,CAAC,WAAL,CAAiB,CAAjB,EAAoB,MAApB,EAEH,CA9BS,CA+BZ,KAAK,cAAL,CAAoB,GAApB,CAAwB,KAAK,gBAA7B,CACD,C,0BAED,qBAAa,YACP,KAAK,MAAL,CAAY,MADL,GAET,QAAQ,CAAC,WAAT,CAAuB,KAAK,MAAL,CAAY,MAAZ,CAAmB,WAFjC,CAGT,QAAQ,CAAC,gBAAT,CAA0B,KAAK,MAAL,CAAY,MAAZ,CAAmB,aAA7C,CAHS,CAIT,KAAK,UAAL,CAAkB,KAAK,UAAL,EAAmB,EAJ5B,CAKT,KAAK,IAAL,CAAU,OAAV,CACE,QAAQ,CAAC,sBAAT,CAAgC,QAAhC,CADF,CAEE,SAAC,CAAD,CAAa,OAaP,CAAI,CAAC,IAAL,CAAU,CAAO,CAAC,EAAlB,CAbO,CAET,CAFS,GAET,GAFS,CAGT,CAHS,GAGT,GAHS,CAIT,CAJS,GAIT,IAJS,CAKT,CALS,GAKT,UALS,CAMT,CANS,GAMT,SANS,CAOT,CAPS,GAOT,MAPS,CAQT,CARS,GAQT,UARS,CAST,CATS,GAST,SATS,CAUT,CAVS,GAUT,KAVS,CAWT,CAXS,GAWT,UAXS,CAYT,CAZS,GAYT,WAZS,CAcL,CAAM,CAAG,GAAI,CAAA,QAAQ,CAAC,GAAb,CAAiB,CAC9B,SAAS,CAAE,CADmB,CAE9B,MAAM,CAAE,CAAC,CAAD,CAAM,CAAN,CAFsB,CAG9B,IAAI,CAAE,CAHwB,CAI9B,OAAO,CAAE,EAJqB,CAK9B,KAAK,CAAE,CAAI,CAAC,MAAL,CAAc,CAAd,CAA0B,CALH,CAM9B,kBAAkB,GANY,CAAjB,CAdJ,CAsBP,CAtBO,EAuBT,GAAI,CAAA,QAAQ,CAAC,MAAb,GAAsB,SAAtB,CAAgC,CAAC,CAAD,CAAM,CAAN,CAAhC,EAA4C,KAA5C,CAAkD,CAAlD,CAvBS,CAyBP,CAzBO,EA0BT,CAAM,CAAC,UAAP,CAAkB,GAAI,CAAA,QAAQ,CAAC,iBAA/B,CAAoD,cAApD,CA1BS,CA4BP,CA5BO,EA6BT,CAAM,CAAC,UAAP,CACE,GAAI,CAAA,QAAQ,CAAC,gBAAb,CAA8B,CAC5B,eAAe,CAAE,CACf,kBAAkB,GADH,CADW,CAI5B,gBAAgB,GAJY,CAK5B,iBAAiB,GALW,CAA9B,CADF,CAQE,cARF,CA7BS,CAwCP,CAxCO,EAyCT,CAAM,CAAC,UAAP,CAAkB,GAAI,CAAA,QAAQ,CAAC,YAA/B,CAzCS,CA2CP,CA3CO,EA4CT,CAAM,CAAC,UAAP,CAAkB,GAAI,CAAA,QAAQ,CAAC,iBAA/B,CA5CS,CA8CgB,QAAvB,WAAO,CAAP,GAAmD,IAAhB,GAAA,CA9C5B,GA+CT,OAAO,CAAC,GAAR,CAAY,CAAZ,CA/CS,CAgDT,CAAM,CAAC,EAAP,CAAU,MAAV,CAAkB,UAAY,oCACP,CAAW,CAAC,OADL,MAC5B,2BAA0C,IAA/B,CAAA,CAA+B,SACxC,CAAM,CAAC,SAAP,CAAiB,CAAM,CAAC,EAAxB,CAA4B,CAAM,CAAC,UAAnC,CACD,CAH2B,kEAKR,CAAW,CAAC,MALJ,MAK5B,2BAAwC,IAA7B,CAAA,CAA6B,SACtC,CAAM,CAAC,QAAP,CAAgB,CAAhB,CACD,CAP2B,+BAQ7B,CARD,CAhDS,EA0DX,CAAM,CAAC,UAAP,CAAkB,GAAI,CAAA,cAAtB,CA1DW,CA2DX,CAAI,CAAC,UAAL,CAAgB,IAAhB,CAAqB,CAArB,CACD,CA9DH,CALS,CAqET,KAAK,oBAAL,CACE,KAAK,oBAAL,EACC,UAAM,CACL,CAAI,CAAC,IAAL,CAAU,OAAV,CAAkB,CAAI,CAAC,UAAvB,CAAmC,SAAC,CAAD,CAAY,IACvC,CAAA,CAAO,CAAG,CAAM,CAAC,YAAP,EAD6B,GAEX,CAAI,CAAC,IAAL,CAAU,CAAO,CAAC,EAAlB,CAFW,CAErC,CAFqC,GAErC,UAFqC,CAEzB,CAFyB,GAEzB,SAFyB,CAG7C,CAAM,CAAC,QAAP,CAAgB,CAAI,CAAC,MAAL,CAAc,CAAd,CAA0B,CAA1C,CAH6C,CAI7C,CAAM,CAAC,UAAP,CAAkB,GAAI,CAAA,cAAtB,CACD,CALD,CAMD,CA9EM,CA+ET,KAAK,mBAAL,CAAyB,GAAzB,CAA6B,KAAK,oBAAlC,CA/ES,CAiFZ,C,0BAED,qBAAa,YACX,GAAI,KAAK,MAAL,CAAY,MAAhB,CAAwB,IAChB,CAAA,CAAY,CAAG,KAAK,MAAL,CAAY,MADX,CAEhB,CAAK,CAAG,CAAY,CAAC,KAAb,CAAqB,CAAY,CAAC,KAAlC,CAA0C,GAFlC,CAGhB,CAAW,CAAG,CAAY,CAAC,WAAb,CAChB,CAAY,CAAC,WADG,CAEhB,GALkB,CAMhB,CAAU,CAAG,CAAY,CAAC,UAAb,CACf,CAAY,CAAC,UADE,CAEf,GARkB,CAStB,MAAM,CAAC,MAAP,CAAc,CAAY,CAAC,IAA3B,EAAiC,OAAjC,CAAyC,SAAC,CAAD,CAAW,CAClD,GAAM,CAAA,CAAO,CAAG,SAAC,CAAD,CAAO,IACf,CAAA,CAAE,CAAG,CAAK,CAAC,CAAD,CADK,CAEf,CAAQ,CAAG,GAAI,CAAA,MAAJ,YAAe,CAAf,EAAqB,CACpC,OAAO,CAAE,CAAI,CAAC,IAAL,CAAU,CAAV,CAD2B,CAEpC,KAAK,CAAE,CAF6B,CAGpC,QAAQ,GAH4B,CAIpC,WAAW,CAAE,CAJuB,CAKpC,UAAU,CAAE,CALwB,CAMpC,gBAAgB,GANoB,CAOpC,aAAa,CAAE,wBAAM,OACf,CAAA,CAAC,GAAK,CAAK,CAAC,MAAN,CAAe,CADN,MAEY,CAAzB,EAAA,CAAY,CAAC,QAFA,EAGf,MAAM,CAAC,UAAP,CAAkB,UAAM,CACtB,CAAQ,CAAC,OAAT,EACD,CAFD,CAEG,CAAY,CAAC,QAFhB,CAHe,OAQnB,CAAQ,CAAC,OAAT,EARmB,CASnB,CAAO,CAAC,CAAC,CAAG,CAAL,CATY,CAUpB,CAjBmC,CAArB,EAkBd,EAlBc,EAmBlB,CArBD,CAsBA,CAAO,CAAC,CAAD,CACR,CAxBD,CAyBD,CACF,C,2BAED,sBAAc,YACZ,GAAI,KAAK,MAAL,CAAY,OAAhB,CAAyB,CACvB,GAAI,KAAK,MAAL,CAAY,OAAZ,CAAoB,MAAxB,CAAgC,CAC9B,KAAK,MAAL,CAAY,OAAZ,CAAoB,MAApB,CAA2B,IAA3B,CAAkC,SAAS,CAAC,MAAM,CAAC,QAAP,CAAgB,IAAjB,CADb,CAE9B,GAAM,CAAA,CAAM,CAAG,GAAI,CAAA,MAAJ,CAAW,KAAK,MAAL,CAAY,OAAZ,CAAoB,MAA/B,CAAf,CACA,CAAM,CAAC,MAAP,CAAc,QAAd,CACD,CAED,GADI,KAAK,MAAL,CAAY,OAAZ,CAAoB,MACxB,EADgC,GAAI,CAAA,MAAJ,CAAW,KAAK,MAAL,CAAY,OAAZ,CAAoB,MAA/B,CAChC,CAAI,KAAK,MAAL,CAAY,OAAZ,CAAoB,UAAxB,CAAoC,IAC5B,CAAA,CAAgB,CAAG,KAAK,MAAL,CAAY,OAAZ,CAAoB,UADX,CAE5B,CAAM,CAAG,QAAQ,CAAC,aAAT,CAAuB,QAAvB,CAFmB,CAGlC,CAAM,CAAC,GAAP,CAAa,+BAHqB,CAIlC,CAAM,CAAC,IAAP,CAAc,iBAJoB,CAKlC,CAAM,CAAC,YAAP,CAAoB,MAApB,CAA4B,CAAgB,CAAC,IAA7C,CALkC,CAMlC,CAAM,CAAC,YAAP,CAAoB,YAApB,CAAkC,CAAgB,CAAC,SAAnD,CANkC,CAO9B,CAAgB,CAAC,KAPa,EAQhC,CAAM,CAAC,YAAP,CAAoB,OAApB,CAA6B,CAAgB,CAAC,KAA9C,CARgC,CASlC,CAAM,CAAC,YAAP,CACE,OADF,CAEE,KAAK,MAAL,CAAc,CAAgB,CAAC,SAA/B,CAA2C,CAAgB,CAAC,UAF9D,CATkC,CAalC,CAAM,CAAC,WAAP,CAAqB,WAba,CAclC,CAAM,CAAC,KAAP,GAdkC,CAelC,QAAQ,CAAC,cAAT,CAAwB,YAAxB,EAAsC,WAAtC,CAAkD,CAAlD,CAfkC,CAgBlC,KAAK,wBAAL,CACE,KAAK,wBAAL,EACC,UAAM,IACC,CAAA,CAAO,CAAG,CACd,IAAI,CAAE,WADQ,CAEd,KAAK,CAAE,CAAI,CAAC,MAAL,CACH,CAAgB,CAAC,SADd,CAEH,CAAgB,CAAC,UAJP,CADX,CAOC,CAAM,CAAG,QAAQ,CAAC,aAAT,CAAuB,mBAAvB,CAPV,CAQL,CAAM,CAAC,aAAP,CAAqB,WAArB,CAAiC,CAAjC,CAA0C,qBAA1C,CACD,CA3B+B,CA4BlC,KAAK,mBAAL,CAAyB,GAAzB,CAA6B,KAAK,wBAAlC,CACD,CACF,CACF,C,gCAED,2BAAmB,CACb,YADa,EAEf,GAAI,CAAA,YAAJ,CAAiB,eAAjB,CAAgC,CAC9B,KAAK,CAAE,GADuB,CAE9B,eAAe,GAFe,CAG9B,MAAM,CAAE,iBAHsB,CAAhC,CAKH,C,iCAED,4BAAoB,CACd,KAAK,MAAL,CAAY,aADE,EAEhB,aAAa,CAAC,UAAd,CAAyB,KAAK,MAAL,CAAY,aAArC,CACH,C,wBAED,mBAAW,YACH,CAAQ,CAAG,EADR,CAMT,GAJqD,MAAjD,GAAA,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,gBAA3B,CAIJ,EAHE,CAAQ,CAAC,IAAT,CAAc,QAAQ,CAAC,cAAT,CAAwB,gBAAxB,CAAd,CAGF,CAFoD,MAAhD,GAAA,QAAQ,CAAC,IAAT,CAAc,YAAd,CAA2B,eAA3B,CAEJ,EADE,CAAQ,CAAC,IAAT,CAAc,QAAQ,CAAC,cAAT,CAAwB,eAAxB,CAAd,CACF,CAAI,QAAQ,CAAC,cAAT,CAAwB,UAAxB,CAAJ,CAAyC,CACvC,GAAM,CAAA,CAAa,CAAG,QAAQ,CAAC,cAAT,CAAwB,eAAxB,CAAtB,CACA,CAAa,CAAC,IAAd,YAFuC,CAGvC,CAAa,CAAC,KAAd,CAAoB,OAApB,CAA8B,OAC/B,CAVQ,GAWH,CAAA,CAAa,CAAG,QAAQ,CAAC,cAAT,CAAwB,eAAxB,CAXb,CAYH,CAAQ,CAAG,EAZR,CAcT,MAAM,CAAC,gBAAP,CACE,QADF,CAEE,UAAM,CACJ,CAAI,CAAC,YAAL,CAAoB,CAAI,CAAC,IAAL,CAAU,YAAV,EADhB,IAEE,CAAA,CAAM,CAAG,CAAI,CAAC,YAAL,CAAoB,CAAI,CAAC,YAFpC,CAGE,CAAQ,CAAG,CAAI,CAAC,IAAL,CAAU,QAAV,EAHb,CAIJ,CAAI,CAAC,IAAL,CAAU,OAAV,CAAkB,CAAlB,CAA4B,SAAC,CAAD,CAAa,CACnC,CAAM,CAAG,CAD0B,EAErC,CAAO,CAAC,SAAR,CAAkB,MAAlB,CAAyB,YAAzB,CAFqC,CAGrC,CAAI,CAAC,IAAL,CAAU,UAAV,CAAqB,CAArB,CAA8B,CAAC,WAAD,CAAc,QAAd,CAA9B,IAHqC,EAI5B,CAAM,CAAG,CAAC,CAJkB,GAKrC,CAAO,CAAC,SAAR,CAAkB,MAAlB,CAAyB,WAAzB,CALqC,CAMrC,CAAI,CAAC,IAAL,CAAU,UAAV,CAAqB,CAArB,CAA8B,CAAC,YAAD,CAAe,QAAf,CAA9B,IANqC,CAQxC,CARD,CAJI,CAaA,CAAI,CAAC,YAAL,CAhBI,GAGJ,CAcE,CAAQ,EAAI,CAAM,CAAG,CAdvB,EAeA,CAAa,CAAC,SAAd,CAAwB,MAAxB,CAA+B,QAA/B,CAfA,CAgBA,CAAI,CAAC,IAAL,CAAU,UAAV,CAAqB,CAArB,CAAoC,CAAC,SAAD,CAAY,QAAZ,CAApC,IAhBA,GAiBS,CAAC,CAAD,EAAa,CAAM,CAAG,CAAC,CAjBhC,IAkBA,CAAa,CAAC,KAAd,CAAoB,OAApB,CAA8B,OAlB9B,CAmBA,CAAa,CAAC,SAAd,CAAwB,MAAxB,CAA+B,SAA/B,CAnBA,CAoBA,CAAI,CAAC,IAAL,CAAU,UAAV,CAAqB,CAArB,CAAoC,CAAC,QAAD,CAAW,QAAX,CAApC,IApBA,GAuBE,CAAC,CAvBH,GAwBA,CAAa,CAAC,SAAd,CAAwB,MAAxB,CAA+B,QAA/B,CAxBA,CAyBA,CAAI,CAAC,IAAL,CAAU,UAAV,CAAqB,CAArB,CAAoC,CAAC,SAAD,CAAY,QAAZ,CAApC,IAzBA,EA2BF,CAAa,CAAC,KAAd,CAAoB,OAApB,CAA8B,MA3B5B,qCA6Bc,CAAI,CAAC,cA7BnB,MA6BJ,+BAAS,CAAA,CAAT,SAAuC,CAAK,EAA5C,CA7BI,+BA8BJ,CAAI,CAAC,YAAL,CAAoB,CAAI,CAAC,YAC1B,CAjCH,IAoCD,C,wBAED,mBAAW,YACT,MAAM,CAAC,gBAAP,CACE,QADF,CAEE,UAAM,CACC,CAAI,CAAC,cADN,GAEF,CAAI,CAAC,cAAL,CAAsB,MAAM,CAAC,UAAP,CAAkB,UAAM,CAC5C,CAAI,CAAC,cAAL,CAAsB,IADsB,oCAE1B,CAAI,CAAC,cAFqB,MAE5C,+BAAS,CAAA,CAAT,SAAuC,CAAK,EAA5C,CAF4C,+BAG5C,CAAI,CAAC,OAAL,EAH4C,CAI5C,CAAI,CAAC,WAAL,EAJ4C,CAK5C,CAAI,CAAC,UAAL,EACD,CANqB,CAMnB,GANmB,CAFpB,CAUL,CAZH,IAeD,C,2BAED,sBAAc,YACZ,QAAQ,CAAC,cAAT,CAAwB,MAAxB,EAAgC,gBAAhC,CACE,OADF,CAEE,UAAM,oCACc,CAAI,CAAC,iBADnB,MACJ,+BAAS,CAAA,CAAT,SAA0C,CAAK,EAA/C,CADI,+BAEJ,QAAQ,CAAC,IAAT,CAAc,SAAd,CAAwB,MAAxB,CAA+B,MAA/B,CACD,CALH,IAQD,C,oBAED,eAAO,YACL,GAAI,CACF,KAAK,WAAL,EADE,CAEF,KAAK,WAAL,EAFE,CAGF,KAAK,cAAL,EAHE,CAIF,KAAK,eAAL,EAJE,CAKF,KAAK,UAAL,EALE,CAMF,KAAK,WAAL,EANE,CAOF,KAAK,gBAAL,EAPE,CAQF,KAAK,aAAL,EARE,CASF,KAAK,SAAL,EATE,CAUF,KAAK,cAAL,EAVE,CAWF,KAAK,gBAAL,EAXE,CAYF,KAAK,QAAL,EAZE,CAaF,KAAK,WAAL,EAbE,CAcF,KAAK,WAAL,EAdE,CAeF,KAAK,UAAL,EAfE,CAgBF,KAAK,UAAL,EAhBE,CAiBF,KAAK,iBAAL,EACD,CAAC,MAAO,CAAP,CAAY,CACZ,OAAO,CAAC,KAAR,CAAc,CAAd,CACD,CAED,MAAM,CAAC,UAAP,CAAkB,UAAM,CACtB,CAAI,CAAC,OAAL,EADsB,CAEtB,CAAI,CAAC,WAAL,EAFsB,CAItB,CAAI,CAAC,QAAL,EAJsB,CAKtB,CAAI,CAAC,QAAL,EALsB,CAMtB,CAAI,CAAC,WAAL,EACD,CAPD,CAOG,GAPH,CAQD,C,SAGG,SAAS,CAAG,UAAM,CACtB,GAAM,CAAA,CAAK,CAAG,GAAI,CAAA,KAAlB,CACA,CAAK,CAAC,IAAN,EACD,C,CAE2B,SAAxB,GAAA,QAAQ,CAAC,U,CAGX,QAAQ,CAAC,gBAAT,CAA0B,kBAA1B,CAA8C,SAA9C,I,CAFA,SAAS,E","file":"theme.min.js","sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n }\n\n getScrollTop() {\n return (\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n isMobile() {\n return window.matchMedia(\"only screen and (max-width: 680px)\").matches;\n }\n\n isTocStatic() {\n return window.matchMedia(\"only screen and (max-width: 960px)\").matches;\n }\n\n animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add(\"animated\", ...animation);\n const handler = () => {\n element.classList.remove(\"animated\", ...animation);\n element.removeEventListener(\"animationend\", handler);\n if (typeof callback === \"function\") callback();\n };\n if (!reserved) element.addEventListener(\"animationend\", handler, false);\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute(\"theme\") === \"dark\";\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n if (window.objectFitImages) objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll(\"[data-svg-src]\"), ($icon) => {\n fetch($icon.getAttribute(\"data-svg-src\"))\n .then((response) => response.text())\n .then((svg) => {\n const $temp = document.createElement(\"div\");\n $temp.insertAdjacentHTML(\"afterbegin\", svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute(\"data-svg-src\", $icon.getAttribute(\"data-svg-src\"));\n $svg.classList.add(\"icon\");\n const $titleElements = $svg.getElementsByTagName(\"title\");\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch((err) => {\n console.error(err);\n });\n });\n }\n\n initTwemoji() {\n if (this.config.twemoji) twemoji.parse(document.body);\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById(\"menu-toggle-mobile\");\n const $menuMobile = document.getElementById(\"menu-mobile\");\n $menuToggleMobile.addEventListener(\n \"click\",\n () => {\n document.body.classList.toggle(\"blur\");\n $menuToggleMobile.classList.toggle(\"active\");\n $menuMobile.classList.toggle(\"active\");\n },\n false\n );\n this._menuMobileOnClickMask =\n this._menuMobileOnClickMask ||\n (() => {\n $menuToggleMobile.classList.remove(\"active\");\n $menuMobile.classList.remove(\"active\");\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n }\n\n initSwitchTheme() {\n this.util.forEach(\n document.getElementsByClassName(\"theme-switch\"),\n ($themeSwitch) => {\n $themeSwitch.addEventListener(\n \"click\",\n () => {\n if (document.body.getAttribute(\"theme\") === \"dark\")\n document.body.setAttribute(\"theme\", \"light\");\n else document.body.setAttribute(\"theme\", \"dark\");\n this.isDark = !this.isDark;\n this.config.cookieconsent && window.localStorage &&\n localStorage.setItem(\"theme\", this.isDark ? \"dark\" : \"light\");\n for (let event of this.switchThemeEventSet) event();\n },\n false\n );\n }\n );\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (\n !searchConfig ||\n (isMobile && this._searchMobileOnce) ||\n (!isMobile && this._searchDesktopOnce)\n )\n return;\n\n const maxResultLength = searchConfig.maxResultLength\n ? searchConfig.maxResultLength\n : 10;\n const snippetLength = searchConfig.snippetLength\n ? searchConfig.snippetLength\n : 50;\n const highlightTag = searchConfig.highlightTag\n ? searchConfig.highlightTag\n : \"em\";\n\n const suffix = isMobile ? \"mobile\" : \"desktop\";\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener(\n \"focus\",\n () => {\n document.body.classList.add(\"blur\");\n $header.classList.add(\"open\");\n },\n false\n );\n document.getElementById(\"search-cancel-mobile\").addEventListener(\n \"click\",\n () => {\n $header.classList.remove(\"open\");\n document.body.classList.remove(\"blur\");\n document\n .getElementById(\"menu-toggle-mobile\")\n .classList.remove(\"active\");\n document.getElementById(\"menu-mobile\").classList.remove(\"active\");\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"none\";\n this._searchMobile && this._searchMobile.autocomplete.setVal(\"\");\n },\n false\n );\n $searchClear.addEventListener(\n \"click\",\n () => {\n $searchClear.style.display = \"none\";\n this._searchMobile && this._searchMobile.autocomplete.setVal(\"\");\n },\n false\n );\n this._searchMobileOnClickMask =\n this._searchMobileOnClickMask ||\n (() => {\n $header.classList.remove(\"open\");\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"none\";\n this._searchMobile && this._searchMobile.autocomplete.setVal(\"\");\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener(\n \"click\",\n () => {\n document.body.classList.add(\"blur\");\n $header.classList.add(\"open\");\n $searchInput.focus();\n },\n false\n );\n $searchClear.addEventListener(\n \"click\",\n () => {\n $searchClear.style.display = \"none\";\n this._searchDesktop && this._searchDesktop.autocomplete.setVal(\"\");\n },\n false\n );\n this._searchDesktopOnClickMask =\n this._searchDesktopOnClickMask ||\n (() => {\n $header.classList.remove(\"open\");\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"none\";\n this._searchDesktop && this._searchDesktop.autocomplete.setVal(\"\");\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener(\n \"input\",\n () => {\n if ($searchInput.value === \"\") $searchClear.style.display = \"none\";\n else $searchClear.style.display = \"inline\";\n },\n false\n );\n\n const initAutosearch = () => {\n const autosearch = autocomplete(\n `#search-input-${suffix}`,\n {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\n },\n {\n name: \"search\",\n source: (query, callback) => {\n $searchLoading.style.display = \"inline\";\n $searchClear.style.display = \"none\";\n const finish = (results) => {\n $searchLoading.style.display = \"none\";\n $searchClear.style.display = \"inline\";\n callback(results);\n };\n if (searchConfig.type === \"lunr\") {\n const search = () => {\n if (lunr.queryHandler) query = lunr.queryHandler(query);\n const results = {};\n this._index\n .search(query)\n .forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0)\n position = matchPosition;\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position +=\n context.substr(position, 20).lastIndexOf(\" \") + 1;\n context = \"...\" + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach((key) => {\n title = title.replace(\n new RegExp(`(${key})`, \"gi\"),\n `<${highlightTag}>$1</${highlightTag}>`\n );\n context = context.replace(\n new RegExp(`(${key})`, \"gi\"),\n `<${highlightTag}>$1</${highlightTag}>`\n );\n });\n results[uri] = {\n uri: uri,\n title: title,\n date: matchData.date,\n context: context,\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n };\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then((response) => response.json())\n .then((data) => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode)\n this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref(\"objectID\");\n this.field(\"title\", { boost: 50 });\n this.field(\"tags\", { boost: 20 });\n this.field(\"categories\", { boost: 20 });\n this.field(\"content\", { boost: 10 });\n this.metadataWhitelist = [\"position\"];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === \"algolia\") {\n this._algoliaIndex =\n this._algoliaIndex ||\n algoliasearch(\n searchConfig.algoliaAppID,\n searchConfig.algoliaSearchKey\n ).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: [\"title\"],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: `</${highlightTag}>`,\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(\n ({\n uri,\n date,\n _highlightResult: { title },\n _snippetResult: { content },\n }) => {\n if (\n results[uri] &&\n results[uri].context.length > content.value\n )\n return;\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value,\n };\n }\n );\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch((err) => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) =>\n `<div><span class=\"suggestion-title\">${title}</span><span class=\"suggestion-date\">${date}</span></div><div class=\"suggestion-context\">${context}</div>`,\n empty: ({ query }) =>\n `<div class=\"search-empty\">${searchConfig.noResultsFound}: <span class=\"search-query\">\"${query}\"</span></div>`,\n footer: ({}) => {\n const { searchType, icon, href } =\n searchConfig.type === \"algolia\"\n ? {\n searchType: \"algolia\",\n icon: '<i class=\"fab fa-algolia fa-fw\"></i>',\n href: \"https://www.algolia.com/\",\n }\n : {\n searchType: \"Lunr.js\",\n icon: \"\",\n href: \"https://lunrjs.com/\",\n };\n return `<div class=\"search-footer\">Search by <a href=\"${href}\" rel=\"noopener noreferrer\" target=\"_blank\">${icon} ${searchType}</a></div>`;\n },\n },\n }\n );\n autosearch.on(\n \"autocomplete:selected\",\n (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n }\n );\n if (isMobile) this._searchMobile = autosearch;\n else this._searchDesktop = autosearch;\n };\n if (\n searchConfig.lunrSegmentitURL &&\n !document.getElementById(\"lunr-segmentit\")\n ) {\n const script = document.createElement(\"script\");\n script.id = \"lunr-segmentit\";\n script.type = \"text/javascript\";\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (\n script.readyState == \"loaded\" ||\n script.readyState == \"complete\"\n ) {\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else initAutosearch();\n }\n\n initDetails() {\n this.util.forEach(\n document.getElementsByClassName(\"details\"),\n ($details) => {\n const $summary = $details.getElementsByClassName(\"details-summary\")[0];\n $summary.addEventListener(\n \"click\",\n () => {\n $details.classList.toggle(\"open\");\n },\n false\n );\n }\n );\n }\n\n initLightGallery() {\n if (this.config.lightGallery)\n lightGallery(\n document.getElementById(\"content\"),\n this.config.lightGallery\n );\n }\n\n initHighlight() {\n this.util.forEach(\n document.querySelectorAll(\".highlight > pre.chroma\"),\n ($preChroma) => {\n const $chroma = document.createElement(\"div\");\n $chroma.className = $preChroma.className;\n const $table = document.createElement(\"table\");\n $chroma.appendChild($table);\n const $tbody = document.createElement(\"tbody\");\n $table.appendChild($tbody);\n const $tr = document.createElement(\"tr\");\n $tbody.appendChild($tr);\n const $td = document.createElement(\"td\");\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n }\n );\n this.util.forEach(\n document.querySelectorAll(\".highlight > .chroma\"),\n ($chroma) => {\n const $codeElements = $chroma.querySelectorAll(\"pre.chroma > code\");\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement(\"div\");\n $header.className = \"code-header \" + $code.className.toLowerCase();\n const $title = document.createElement(\"span\");\n $title.classList.add(\"code-title\");\n $title.insertAdjacentHTML(\n \"afterbegin\",\n '<i class=\"arrow fas fa-chevron-right fa-fw\"></i>'\n );\n $title.addEventListener(\n \"click\",\n () => {\n $chroma.classList.toggle(\"open\");\n },\n false\n );\n $header.appendChild($title);\n const $ellipses = document.createElement(\"span\");\n $ellipses.insertAdjacentHTML(\n \"afterbegin\",\n '<i class=\"fas fa-ellipsis-h fa-fw\"></i>'\n );\n $ellipses.classList.add(\"ellipses\");\n $ellipses.addEventListener(\n \"click\",\n () => {\n $chroma.classList.add(\"open\");\n },\n false\n );\n $header.appendChild($ellipses);\n const $copy = document.createElement(\"span\");\n $copy.insertAdjacentHTML(\n \"afterbegin\",\n '<i class=\"far fa-copy fa-fw\"></i>'\n );\n $copy.classList.add(\"copy\");\n const code = $code.innerText;\n if (\n this.config.code.maxShownLines < 0 ||\n code.split(\"\\n\").length < this.config.code.maxShownLines + 2\n )\n $chroma.classList.add(\"open\");\n if (this.config.code.copyTitle) {\n $copy.setAttribute(\"data-clipboard-text\", code);\n $copy.title = this.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on(\"success\", (_e) => {\n this.util.animateCSS($code, \"flash\");\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n }\n );\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll(\".content table\"), ($table) => {\n const $wrapper = document.createElement(\"div\");\n $wrapper.className = \"table-wrapper\";\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(\n document.querySelectorAll(\".single .content > h\" + num),\n ($header) => {\n $header.classList.add(\"headerLink\");\n $header.insertAdjacentHTML(\n \"afterbegin\",\n `<a href=\"#${$header.id}\" class=\"header-mark\"></a>`\n );\n }\n );\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById(\"TableOfContents\");\n if ($tocCore === null) return;\n if (\n document.getElementById(\"toc-static\").getAttribute(\"kept\") ||\n this.util.isTocStatic()\n ) {\n const $tocContentStatic = document.getElementById(\"toc-content-static\");\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById(\"toc-content-auto\");\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById(\"toc-auto\");\n const $page = document.getElementsByClassName(\"page\")[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${$page.getBoundingClientRect().left - 20}px`;\n $toc.style.visibility = \"visible\";\n const $tocLinkElements = $tocCore.querySelectorAll(\"a:first-child\");\n const $tocLiElements = $tocCore.getElementsByTagName(\"li\");\n const $headerLinkElements = document.getElementsByClassName(\"headerLink\");\n const headerIsFixed =\n document.body.getAttribute(\"header-desktop\") !== \"normal\";\n const headerHeight =\n document.getElementById(\"header-desktop\").offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop =\n minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n this._tocOnScroll =\n this._tocOnScroll ||\n (() => {\n const footerTop = document.getElementById(\"post-footer\").offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop =\n maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (this.newScrollTop < minScrollTop) {\n $toc.style.position = \"absolute\";\n $toc.style.top = `${minTocTop}px`;\n } else if (this.newScrollTop > maxScrollTop) {\n $toc.style.position = \"absolute\";\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = \"fixed\";\n $toc.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach($tocLinkElements, ($tocLink) => {\n $tocLink.classList.remove(\"active\");\n });\n this.util.forEach($tocLiElements, ($tocLi) => {\n $tocLi.classList.remove(\"has-active\");\n });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop =\n $headerLinkElements[i + 1].getBoundingClientRect().top;\n if (\n (i == 0 && thisTop > INDEX_SPACING) ||\n (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)\n ) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add(\"active\");\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add(\"has-active\");\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) renderMathInElement(document.body, this.config.math);\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName(\"mermaid\");\n if ($mermaidElements.length) {\n mermaid.initialize({ startOnLoad: false, theme: \"null\" });\n this.util.forEach($mermaidElements, ($mermaid) => {\n mermaid.mermaidAPI.render(\n \"svg-\" + $mermaid.id,\n this.data[$mermaid.id],\n (svgCode) => {\n $mermaid.insertAdjacentHTML(\"afterbegin\", svgCode);\n },\n $mermaid\n );\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme =\n this._echartsOnSwitchTheme ||\n (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(\n document.getElementsByClassName(\"echarts\"),\n ($echarts) => {\n const chart = echarts.init(\n $echarts,\n this.isDark ? \"dark\" : \"macarons\",\n { renderer: \"svg\" }\n );\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n }\n );\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize =\n this._echartsOnResize ||\n (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(\n document.getElementsByClassName(\"mapbox\"),\n ($mapbox) => {\n const {\n lng,\n lat,\n zoom,\n lightStyle,\n darkStyle,\n marked,\n navigation,\n geolocate,\n scale,\n fullscreen,\n optionsJson,\n } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: 0.2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false,\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), \"bottom-right\");\n }\n if (geolocate) {\n mapbox.addControl(\n new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }),\n \"bottom-right\"\n );\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n if (typeof optionsJson === \"object\" && optionsJson !== null) {\n console.log(optionsJson);\n mapbox.on(\"load\", function () {\n for (const source of optionsJson.sources) {\n mapbox.addSource(source.id, source.properties);\n }\n\n for (const layer of optionsJson.layers) {\n mapbox.addLayer(layer);\n }\n });\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n }\n );\n this._mapboxOnSwitchTheme =\n this._mapboxOnSwitchTheme ||\n (() => {\n this.util.forEach(this._mapboxArr, (mapbox) => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed\n ? typeitConfig.cursorSpeed\n : 1000;\n const cursorChar = typeitConfig.cursorChar\n ? typeitConfig.cursorChar\n : \"|\";\n Object.values(typeitConfig.data).forEach((group) => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0)\n window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initComment() {\n if (this.config.comment) {\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render(\"gitalk\");\n }\n if (this.config.comment.valine) new Valine(this.config.comment.valine);\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement(\"script\");\n script.src = \"https://utteranc.es/client.js\";\n script.type = \"text/javascript\";\n script.setAttribute(\"repo\", utterancesConfig.repo);\n script.setAttribute(\"issue-term\", utterancesConfig.issueTerm);\n if (utterancesConfig.label)\n script.setAttribute(\"label\", utterancesConfig.label);\n script.setAttribute(\n \"theme\",\n this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme\n );\n script.crossOrigin = \"anonymous\";\n script.async = true;\n document.getElementById(\"utterances\").appendChild(script);\n this._utterancesOnSwitchTheme =\n this._utterancesOnSwitchTheme ||\n (() => {\n const message = {\n type: \"set-theme\",\n theme: this.isDark\n ? utterancesConfig.darkTheme\n : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector(\".utterances-frame\");\n iframe.contentWindow.postMessage(message, \"https://utteranc.es\");\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n }\n }\n }\n\n initSmoothScroll() {\n if (SmoothScroll)\n new SmoothScroll('[href^=\"#\"]', {\n speed: 300,\n speedAsDuration: true,\n header: \"#header-desktop\",\n });\n }\n\n initCookieconsent() {\n if (this.config.cookieconsent)\n cookieconsent.initialise(this.config.cookieconsent);\n }\n\n onScroll() {\n const $headers = [];\n if (document.body.getAttribute(\"header-desktop\") === \"auto\")\n $headers.push(document.getElementById(\"header-desktop\"));\n if (document.body.getAttribute(\"header-mobile\") === \"auto\")\n $headers.push(document.getElementById(\"header-mobile\"));\n if (document.getElementById(\"comments\")) {\n const $viewComments = document.getElementById(\"view-comments\");\n $viewComments.href = `#comments`;\n $viewComments.style.display = \"block\";\n }\n const $fixedButtons = document.getElementById(\"fixed-buttons\");\n const ACCURACY = 20,\n MINIMUM = 100;\n window.addEventListener(\n \"scroll\",\n () => {\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n const isMobile = this.util.isMobile();\n this.util.forEach($headers, ($header) => {\n if (scroll > ACCURACY) {\n $header.classList.remove(\"fadeInDown\");\n this.util.animateCSS($header, [\"fadeOutUp\", \"faster\"], true);\n } else if (scroll < -ACCURACY) {\n $header.classList.remove(\"fadeOutUp\");\n this.util.animateCSS($header, [\"fadeInDown\", \"faster\"], true);\n }\n });\n if (this.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove(\"fadeIn\");\n this.util.animateCSS($fixedButtons, [\"fadeOut\", \"faster\"], true);\n } else if (!isMobile || scroll < -ACCURACY) {\n $fixedButtons.style.display = \"block\";\n $fixedButtons.classList.remove(\"fadeOut\");\n this.util.animateCSS($fixedButtons, [\"fadeIn\", \"faster\"], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove(\"fadeIn\");\n this.util.animateCSS($fixedButtons, [\"fadeOut\", \"faster\"], true);\n }\n $fixedButtons.style.display = \"none\";\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n },\n false\n );\n }\n\n onResize() {\n window.addEventListener(\n \"resize\",\n () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n }, 100);\n }\n },\n false\n );\n }\n\n onClickMask() {\n document.getElementById(\"mask\").addEventListener(\n \"click\",\n () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove(\"blur\");\n },\n false\n );\n }\n\n init() {\n try {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenuMobile();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initSmoothScroll();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initCookieconsent();\n } catch (err) {\n console.error(err);\n }\n\n window.setTimeout(() => {\n this.initToc();\n this.initComment();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== \"loading\") {\n themeInit();\n} else {\n document.addEventListener(\"DOMContentLoaded\", themeInit, false);\n}\n"]} \ No newline at end of file