!function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.baguetteBox=t()}(this,function(){"use strict";var e,t,n,o,i,a='',s='',l='',r={},u={captions:!0,buttons:"auto",fullScreen:!1,noScrollbars:!1,bodyClass:"baguetteBox-open",titleTag:!1,async:!1,preload:2,animation:"slideIn",afterShow:null,afterHide:null,onChange:null,overlayBackgroundColor:"rgba(0,0,0,.8)"},c={},d=[],f=0,g=!1,p={},v=!1,b=/.+\.(gif|jpe?g|png|webp)/i,m={},h=[],y=null,w=function(e){-1!==e.target.id.indexOf("baguette-img")&&I()},k=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,q()},x=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,j()},E=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,I()},C=function(e){p.count++,p.count>1&&(p.multitouch=!0),p.startX=e.changedTouches[0].pageX,p.startY=e.changedTouches[0].pageY},B=function(e){if(!v&&!p.multitouch){e.preventDefault?e.preventDefault():e.returnValue=!1;var t=e.touches[0]||e.changedTouches[0];t.pageX-p.startX>40?(v=!0,q()):t.pageX-p.startX<-40?(v=!0,j()):p.startY-t.pageY>100&&I()}},T=function(){p.count--,p.count<=0&&(p.multitouch=!1),v=!1},N=function(){T()},A=function(t){"block"===e.style.display&&e.contains&&!e.contains(t.target)&&(t.stopPropagation(),H())};function L(e){if(m.hasOwnProperty(e)){var t=m[e].galleries;[].forEach.call(t,function(e){[].forEach.call(e,function(e){V(e.imageElement,"click",e.eventHandler)}),d===e&&(d=[])}),delete m[e]}}function P(e){switch(e.keyCode){case 37:q();break;case 39:j();break;case 27:I();break;case 36:!function(e){e&&e.preventDefault();X(0)}(e);break;case 35:!function(e){e&&e.preventDefault();X(d.length-1)}(e)}}function S(i,a){if(d!==i){for(d=i,function(i){i||(i={});for(var a in u)r[a]=u[a],void 0!==i[a]&&(r[a]=i[a]);t.style.transition=t.style.webkitTransition="fadeIn"===r.animation?"opacity .4s ease":"slideIn"===r.animation?"":"none","auto"===r.buttons&&("ontouchstart"in window||1===d.length)&&(r.buttons=!1);n.style.display=o.style.display=r.buttons?"":"none";try{e.style.backgroundColor=r.overlayBackgroundColor}catch(e){}}(a);t.firstChild;)t.removeChild(t.firstChild);h.length=0;for(var s,l=[],c=[],f=0;f',r.captions&&s){var c=W("figcaption");c.id="baguetteBox-figcaption-"+e,c.innerHTML=s,u.appendChild(c)}n.appendChild(u);var f=W("img");f.onload=function(){var n=document.querySelector("#baguette-img-"+e+" .baguetteBox-spinner");u.removeChild(n),!r.async&&t&&t()},f.setAttribute("src",l),l.includes("/xl/")&&f.setAttribute("srcset",l+" 2x"),f.alt=a&&a.alt||"",r.titleTag&&s&&(f.title=s),u.appendChild(f),r.async&&t&&t()}}function j(){return X(f+1)}function q(){return X(f-1)}function X(e,t){return!g&&e>=0&&e=h.length?(r.animation&&D("right"),!1):(Y(f=e,function(){O(f),R(f)}),M(),r.onChange&&r.onChange(f,h.length),!0)}function D(e){t.className="bounce-from-"+e,setTimeout(function(){t.className=""},400)}function M(){var e=100*-f+"%";"fadeIn"===r.animation?(t.style.opacity=0,setTimeout(function(){c.transforms?t.style.transform=t.style.webkitTransform="translate3d("+e+",0,0)":t.style.left=e,t.style.opacity=1},400)):c.transforms?t.style.transform=t.style.webkitTransform="translate3d("+e+",0,0)":t.style.left=e}function O(e){e-f>=r.preload||Y(e+1,function(){O(e+1)})}function R(e){f-e>=r.preload||Y(e-1,function(){R(e-1)})}function z(e,t,n,o){e.addEventListener?e.addEventListener(t,n,o):e.attachEvent("on"+t,function(e){(e=e||window.event).target=e.target||e.srcElement,n(e)})}function V(e,t,n,o){e.removeEventListener?e.removeEventListener(t,n,o):e.detachEvent("on"+t,n)}function U(e){return document.getElementById(e)}function W(e){return document.createElement(e)}return[].forEach||(Array.prototype.forEach=function(e,t){for(var n=0;n{let searchUrl="/search";if(searchInput.value)searchUrl+=`?sfield=description&query=${searchInput.value}`;window.location.replace(searchUrl);e.preventDefault()})}const searchTabs=document.querySelectorAll('.asearch [role="tab"]');const searchPanels=document.querySelectorAll('.asearch [role="tabpanel"]');const openGSS=document.querySelectorAll(".opengss");if(searchTabs){searchTabs.forEach(tab=>{tab.addEventListener("click",e=>{const controls=tab.getAttribute("aria-controls");searchTabs.forEach(searchTab=>{searchTab.setAttribute("aria-selected",false)});searchPanels.forEach(searchPanel=>{searchPanel.setAttribute("hidden",true)});if(controls=="software-tab"){document.querySelector('.advSearchBox input[name="sfield"]').setAttribute("checked",false);document.querySelector('.advSearchBox .softwarefields input[name="sfield"]').setAttribute("checked",true)}else if(controls=="software-tab"){document.querySelector('.advSearchBox input[name="sfield"]').setAttribute("checked",false);document.querySelector('.advSearchBox .extensionfields input[value="description"]').setAttribute("checked",true)}document.querySelector("#"+controls).removeAttribute("hidden");document.querySelector("#"+controls+" input[name=query]").focus()})})}if(openGSS){openGSS.forEach(oGSS=>{oGSS.addEventListener("click",e=>{document.querySelector("#advSearchBody").style.display="none";document.querySelector("#gss").style.display="block";document.querySelector('#gss [name="q"]').focus();e.preventDefault()})})}const siteMenu=document.querySelector("#sitemenu");const menuOpen=document.querySelector("#menuopen");const menuClose=document.querySelector("#menuclose");const searchWrapper=document.querySelector(".searchwrapper");const searchToggle=document.querySelector("#searchtoggle");const full=document.querySelector("#full");if(menuOpen){menuOpen.addEventListener("click",e=>{siteMenu.classList.remove("collapsed");body.classList.add("nav-open");searchWrapper.classList.add("collapsed")});menuClose.addEventListener("click",e=>{siteMenu.classList.add("collapsed");body.classList.remove("nav-open")})}if(body){body.addEventListener("click",function(e){if(body.classList.contains("nav-open")){if(!siteMenu.contains(e.target)&&!menuOpen.contains(e.target)){siteMenu.classList.add("collapsed");body.classList.remove("nav-open")}}else if(!searchWrapper.classList.contains("collapsed")){if(!searchWrapper.contains(e.target)&&!searchToggle.contains(e.target)){searchWrapper.classList.add("collapsed")}}})}if(searchToggle){searchToggle.addEventListener("click",function(e){searchWrapper.classList.remove("collapsed");searchInput.focus()})}const settingsToggle=document.querySelector("#settings");const article=document.querySelector("article");const homeContent=document.querySelector(".homecontent");const settingsReset=document.querySelector("#resetsettings");let settingsMenu=document.querySelector(".settingsmenu");let themeOptions=document.querySelectorAll('.settingsmenu [name="theme"]');let fontSize=document.querySelector("#fontsize");let currentSize=document.querySelector(".currentsize");if(typeof USERSIZE!=="undefined"){article.style.fontSize=USERSIZE/16+"rem";if(homeContent)homeContent.style.fontSize=USERSIZE/16+"rem";settingsMenu.classList.add("dirty");currentSize.innerHTML=USERSIZE;fontSize.value=USERSIZE}if(typeof USERTHEME!=="undefined"){settingsMenu.classList.add("dirty");themeOptions.forEach(themeOption=>{themeOption.removeAttribute("checked")});let curTheme=settingsMenu.querySelector("#theme-"+USERTHEME);curTheme.setAttribute("checked","checked")}if(settingsToggle){settingsToggle.addEventListener("click",e=>{settingsToggle.classList.toggle("open")});body.addEventListener("click",function(c){if(!settingsMenu.contains(c.target)&&!settingsToggle.contains(c.target)){settingsToggle.classList.remove("open")}})}themeOptions.forEach(themeOption=>{themeOption.addEventListener("change",e=>{let theme=e.target.value;if(themeOption.value==theme){root.className="theme-"+theme;settingsMenu.classList.add("dirty");let d=new Date;d.setTime(d.getTime()+30*24*60*60*1e3);let expires="expires="+d.toGMTString();document.cookie="tt_theme="+theme+";path=/;"+expires;gtag("event","switch",{event_category:"theme",event_label:theme})}})});if(fontSize){fontSize.addEventListener("input",()=>{let size=fontSize.value;article.style.fontSize=size/16+"rem";if(homeContent)homeContent.style.fontSize=size/16+"rem";currentSize.innerHTML=size;settingsMenu.classList.add("dirty");let d=new Date;d.setTime(d.getTime()+30*24*60*60*1e3);let expires="expires="+d.toGMTString();document.cookie="tt_size="+size+";path=/;"+expires})}if(settingsReset){settingsReset.addEventListener("click",e=>{root.className="theme-default";article.style.fontSize="1.25rem";if(homeContent)homeContent.style.fontSize="1.25rem";currentSize.innerHTML=20;themeOptions.forEach(themeOption=>{if(themeOption.value=="default")themeOption.checked=true;else themeOption.checked=false});fontSize.value=20;settingsMenu.classList.remove("dirty");document.cookie="tt_theme=;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT;";document.cookie="tt_size=;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT;"})}const headerAC=document.querySelector(".autocomplete");if(headerAC){class Autocomplete{constructor({rootNode,inputNode,resultsNode,searchFn,shouldAutoSelect=false,onShow=()=>{},onHide=()=>{}}={}){this.rootNode=rootNode;this.inputNode=inputNode;this.resultsNode=resultsNode;this.searchFn=searchFn;this.shouldAutoSelect=shouldAutoSelect;this.onShow=onShow;this.onHide=onHide;this.activeIndex=-1;this.resultsCount=0;this.showResults=false;this.hasInlineAutocomplete=this.inputNode.getAttribute("aria-autocomplete")==="both";document.body.addEventListener("click",this.handleDocumentClick);this.inputNode.addEventListener("keyup",this.handleKeyup);this.inputNode.addEventListener("keydown",this.handleKeydown);this.inputNode.addEventListener("focus",this.handleFocus);this.resultsNode.addEventListener("click",this.handleResultClick)}handleDocumentClick=event=>{if(event.target===this.inputNode||this.rootNode.contains(event.target)){return}this.hideResults()};handleKeyup=event=>{const{key}=event;switch(key){case"ArrowUp":case"ArrowDown":case"Escape":case"Enter":event.preventDefault();return;default:this.updateResults()}};handleKeydown=event=>{const{key}=event;let activeIndex=this.activeIndex;if(key==="Escape"){this.hideResults();this.inputNode.value="";return}const prevActive=this.getItemAt(activeIndex);let activeItem;switch(key){case"ArrowUp":if(activeIndex<=0){activeIndex=this.resultsCount-1}else{activeIndex-=1}break;case"ArrowDown":if(activeIndex===-1||activeIndex>=this.resultsCount-1){activeIndex=0}else{activeIndex+=1}break;case"Enter":activeItem=this.getItemAt(activeIndex);this.selectItem(activeItem);return;case"Tab":this.checkSelection();this.hideResults();return;default:return}event.preventDefault();activeItem=this.getItemAt(activeIndex);this.activeIndex=activeIndex;if(prevActive){prevActive.classList.remove("selected");prevActive.setAttribute("aria-selected","false")}if(activeItem){this.inputNode.setAttribute("aria-activedescendant",`autocomplete-result-${activeIndex}`);activeItem.classList.add("selected");activeItem.setAttribute("aria-selected","true");if(this.hasInlineAutocomplete){this.inputNode.value=activeItem.innerText}}else{this.inputNode.setAttribute("aria-activedescendant","")}};handleFocus=event=>{this.updateResults()};handleResultClick=event=>{if(event.target){if(event.target.nodeName==="LI")this.selectItem(event.target);else this.selectItem(event.target.closest("li"));event.currentTarget.closest("form").submit()}};getItemAt=index=>{return this.resultsNode.querySelector(`#autocomplete-result-${index}`)};selectItem=node=>{if(node){this.inputNode.value=node.innerText;this.hideResults()}};checkSelection=()=>{if(this.activeIndex<0){return}const activeItem=this.getItemAt(this.activeIndex);this.selectItem(activeItem)};autocompleteItem=event=>{const autocompletedItem=this.resultsNode.querySelector(".selected");const input=this.inputNode.value;if(!autocompletedItem||!input){return}const autocomplete=autocompletedItem.innerText;if(input!==autocomplete){this.inputNode.value=autocomplete;this.inputNode.setSelectionRange(input.length,autocomplete.length)}};updateResults=()=>{const input=this.inputNode.value;this.searchFn(input).then(results=>{this.hideResults();if(results.length===0){return}this.resultsNode.innerHTML=results.map((result,index)=>{const styledResult=result.value.replace(new RegExp(input,"gi"),match=>`${match}`);const isSelected=this.shouldAutoSelect&&index===0;if(isSelected){this.activeIndex=0}return`${styledResult}`}).join("");this.resultsNode.classList.remove("hidden");this.rootNode.setAttribute("aria-expanded",true);this.resultsCount=results.length;this.shown=true;this.onShow()})};hideResults=()=>{this.shown=false;this.activeIndex=-1;this.resultsNode.innerHTML="";this.resultsNode.classList.add("hidden");this.rootNode.setAttribute("aria-expanded","false");this.resultsCount=0;this.inputNode.setAttribute("aria-activedescendant","");this.onHide()}}const search=async input=>{if(input.length<1){return[]}const matches=await fetch(`/ac?query=${input}`);const sdata=await matches.json();return sdata};const autocomplete=new Autocomplete({rootNode:document.querySelector(".autocomplete"),inputNode:document.querySelector(".autocomplete-input"),resultsNode:document.querySelector(".autocomplete-results"),searchFn:search,shouldAutoSelect:false});const homeSearch=document.querySelector(".homeSearch");if(homeSearch){const autocomplete2=new Autocomplete({rootNode:homeSearch.querySelector(".autocomplete"),inputNode:homeSearch.querySelector(".autocomplete-input"),resultsNode:homeSearch.querySelector(".autocomplete-results"),searchFn:search,shouldAutoSelect:false})}}const tabs=document.querySelectorAll('#citations [role="tab"]');tabs.forEach(tab=>{tab.addEventListener("click",changeTabs)});if(tabs.length){const citeCopy=document.querySelector("#citecopy");citeCopy.addEventListener("click",()=>{let activeButton=document.querySelector("#citations [aria-selected=true]");let activeCitationName=activeButton.getAttribute("aria-controls");let activePanel=document.querySelector("#"+activeCitationName);setClipboard(activePanel.innerText,activePanel)})}function setClipboard(text,panel){navigator.clipboard.writeText(text).then(function(){panel.classList.add("copied");setTimeout(()=>{panel.classList.remove("copied")},800)},function(){})}function changeTabs(e){const target=e.target;const tabList=target.parentNode;const tabsContainer=tabList.parentNode;const targetPanel=tabsContainer.querySelector(`#${target.getAttribute("aria-controls")}`);const id=targetPanel.getAttribute("id");const formData=new FormData;formData.append("t",cterm);formData.append("c",id);formData.append("u",curl);fetch("/cs",{method:"POST",body:formData}).then(response=>response.text()).then(data=>{targetPanel.innerHTML=data});tabs.forEach(tab=>{tab.setAttribute("aria-selected",false)});target.setAttribute("aria-selected",true);tabsContainer.querySelectorAll('[role="tabpanel"]').forEach(p=>p.setAttribute("hidden",true));tabsContainer.classList.add("open");targetPanel.removeAttribute("hidden")}const popupWrapper=document.querySelector(".popupwrapper");if(popupWrapper){const openTTN=document.querySelector("#ttn_open");const ttnPopup=document.querySelector("#newsletter_popup");const ttnEmail=popupWrapper.querySelector('input[type="email"]');const closePopup=ttnPopup.querySelector(".close");const ttnForm=ttnPopup.querySelector("#subscribe");const ttnConfirm=ttnPopup.querySelector("#ttnconfirm");const confirmOK=ttnConfirm.querySelector(".ok");if(openTTN){openTTN.addEventListener("click",e=>{e.preventDefault();popupWrapper.classList.add("open");ttnEmail.focus()})}popupWrapper.addEventListener("click",closeTTN);closePopup.addEventListener("click",closeTTN);confirmOK.addEventListener("click",closeTTN);ttnPopup.addEventListener("click",e=>{e.stopPropagation()});function closeTTN(){popupWrapper.classList.remove("open");openTTN.focus()}ttnForm.addEventListener("submit",e=>{e.preventDefault();const form=e.target;let formSubmit=form.querySelector('input[type="submit"]');formSubmit.value="Subscribe";formSubmit.setAttribute("disabled",false);formSubmit.value="Please wait...";formSubmit.setAttribute("disabled",true);let email=ttnForm.querySelector("#newsletter_email").value;let fname=ttnForm.querySelector("#first_name").value;let lname=ttnForm.querySelector("#last_name").value;let freq=ttnForm.querySelector('input[name="frequency"]:checked').value;let message=ttnForm.querySelector("#newsletter_message").value;if(message){formSubmit.value="Subscribe";formSubmit.setAttribute("disabled",false);ttnEmail.setAttribute("disabled",false);ttnForm.insertAdjacentHTML("beforeend","Subscription error.
")}else{const formData=new FormData;formData.append("email",email);formData.append("fname",fname);formData.append("lname",lname);formData.append("freq",freq);fetch("/lib/subscribe.php",{method:"POST",body:formData}).then(response=>response.text()).then(data=>{if(data.error){formSubmit.value="Submit";formSubmit.setAttribute("disabled",false);ttnForm.insertAdjacentHTML("beforeend",""+data.error+"
")}else{formSubmit.value="Submit";formSubmit.setAttribute("disabled",false);ttnForm.style.display="none";ttnPopup.classList.add("confirm");ttnConfirm.style.display="block"}})}})}baguetteBox.run(".def",{captions:function(element){return element.getElementsByTagName("img")[0].alt},filter:/.+(\/img\/).+/i});const homePixel=document.querySelector("#homepixel");if(homePixel){const header=document.querySelector("#siteheader");const searchBtns=document.querySelector(".homeSearch .btns");const altH1=document.querySelector("h1");let homeObserver=new IntersectionObserver(entries=>{if(entries[0].intersectionRatio!=1){header.classList.add("scrolled")}else{header.classList.remove("scrolled")}},{threshold:1,rootMargin:"-60px 0px 0px 0px"});let homeObserver2=new IntersectionObserver(entries2=>{if(entries2[0].isIntersecting){header.classList.remove("scrolled2")}else{header.classList.add("scrolled2")}},{rootMargin:"-60px 0px 0px 0px"});homeObserver.observe(altH1);homeObserver2.observe(searchBtns)}const previousTerms=document.querySelector(".previousTerms");if(previousTerms){const showPreviousTerms=document.querySelector("#showPreviousTerms");showPreviousTerms.addEventListener("click",()=>{let drawer=previousTerms.querySelector(".drawer");if(!previousTerms.querySelector(".feed")){drawer.insertAdjacentHTML("beforeend",'');setTimeout(()=>{showPreviousTerms.innerText="Load More"},50)}loadPreviousTerms()});function loadPreviousTerms(){let nextDate=showPreviousTerms.getAttribute("data-nextdate");const formData=new FormData;formData.append("action","get");formData.append("nextdate",nextDate);fetch("/lib/dailyterm.php",{method:"POST",body:formData}).then(response=>{response.json().then(data=>{if(!("error"in data)){console.log(data);let newEntries="";let feed=previousTerms.querySelector(".feed");data.terms.forEach(term=>{let newEntry=''+'
";newEntry+='
";newEntries+=newEntry});feed.insertAdjacentHTML("beforeend",newEntries)}nextDate=data.nextdate;showPreviousTerms.setAttribute("data-nextdate",nextDate);if(!data.nextdate){showPreviousTerms.style.display="none"}})})}}const tables=document.querySelectorAll(".sortable");const sortTable=(th,tbody)=>{let rows=Array.from(tbody.querySelectorAll("tr"));let sortcol=th.getAttribute("data-col");let sortdir="asc";if(th.hasAttribute("data-order")){sortdir=th.getAttribute("data-order");sortdir=sortdir=="asc"?"desc":"asc"}if(th.classList.contains("numcol")){rows.sort((a,b)=>{let aval=parseInt(a.querySelector("td:nth-child("+sortcol+")").textContent.toLowerCase(),10);let bval=parseInt(b.querySelector("td:nth-child("+sortcol+")").textContent.toLowerCase(),10);if(avalbval)return sortdir=="asc"?1:-1;else return 0})}else{rows.sort((a,b)=>{let aval=a.querySelector("td:nth-child("+sortcol+")").textContent.toLowerCase();let bval=b.querySelector("td:nth-child("+sortcol+")").textContent.toLowerCase();if(avalbval)return sortdir=="asc"?1:-1;else return 0})}tbody.innerHTML="";rows.forEach(row=>{tbody.appendChild(row)});let oths=th.parentNode.querySelectorAll("th");oths.forEach(oth=>{if(oth!=th)oth.removeAttribute("data-order")});th.setAttribute("data-order",sortdir)};tables.forEach(table=>{let tbody=table.querySelector("tbody");const ths=table.querySelectorAll("th");let thct=1;ths.forEach(th=>{th.setAttribute("data-col",thct);thct++;th.addEventListener("click",e=>{sortTable(th,tbody)})})});const tableRows=document.querySelectorAll(".list tr");if(tableRows){tableRows.forEach(tr=>{const anchors=tr.querySelectorAll("a");if(anchors.length==1){const anchor=anchors[0];const dest=anchor.getAttribute("href");tr.addEventListener("click",()=>{window.location.href=dest});tr.style.cursor="pointer"}})}const tabList=document.querySelector('[role="tablist"]');const ctabs=document.querySelectorAll('[role="tab"]');if(tabList){ctabs.forEach(tab=>{tab.addEventListener("click",e=>{switchTab(e.target)})});let tabFocus=0;tabList.addEventListener("keydown",e=>{if(e.keyCode===39||e.keyCode===37){ctabs[tabFocus].setAttribute("tabindex",-1);if(e.keyCode===39){tabFocus++;if(tabFocus>=tabs.length){tabFocus=0}}else if(e.keyCode===37){tabFocus--;if(tabFocus<0){tabFocus=tabs.length-1}}ctabs[tabFocus].setAttribute("tabindex",0);ctabs[tabFocus].focus();switchTab(ctabs[tabFocus])}});function switchTab(target){const targettabID=target.getAttribute("aria-controls");const parent=target.parentNode;const grandparent=parent.parentNode;grandparent.querySelectorAll('[role="tabpanel"]').forEach(panel=>panel.setAttribute("hidden",true));grandparent.parentNode.querySelector(`#${targettabID}`).removeAttribute("hidden");parent.querySelectorAll('[aria-selected="true"]').forEach(tab=>tab.setAttribute("aria-selected",false));target.setAttribute("aria-selected",true)}}const pixelDensity=window.devicePixelRatio;gtag("event","pixel_density_dimension",{pixel_density:pixelDensity});if(typeof C!=="undefined"&&typeof T!=="undefined"){fetch("/lib/hit.php",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({t:T,c:C})})}const consentLinks=document.querySelectorAll("#sitefooter .change-consent");if(consentLinks){consentLinks.forEach(consentLink=>{consentLink.addEventListener("click",e=>{e.preventDefault()})})}