@commentray/render 0.0.2 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/block-stretch-layout.d.ts +30 -0
  2. package/dist/block-stretch-layout.d.ts.map +1 -0
  3. package/dist/block-stretch-layout.js +104 -0
  4. package/dist/block-stretch-layout.js.map +1 -0
  5. package/dist/build-commentray-nav-search.d.ts +62 -0
  6. package/dist/build-commentray-nav-search.d.ts.map +1 -0
  7. package/dist/build-commentray-nav-search.js +98 -0
  8. package/dist/build-commentray-nav-search.js.map +1 -0
  9. package/dist/build-stamp.d.ts +6 -0
  10. package/dist/build-stamp.d.ts.map +1 -0
  11. package/dist/build-stamp.js +23 -0
  12. package/dist/build-stamp.js.map +1 -0
  13. package/dist/code-browser-client.bundle.js +12 -5
  14. package/dist/code-browser-client.js +825 -97
  15. package/dist/code-browser-client.js.map +1 -1
  16. package/dist/code-browser-embedded-payload.d.ts +10 -0
  17. package/dist/code-browser-embedded-payload.d.ts.map +1 -0
  18. package/dist/code-browser-embedded-payload.js +18 -0
  19. package/dist/code-browser-embedded-payload.js.map +1 -0
  20. package/dist/code-browser-encoding.d.ts +9 -0
  21. package/dist/code-browser-encoding.d.ts.map +1 -0
  22. package/dist/code-browser-encoding.js +24 -0
  23. package/dist/code-browser-encoding.js.map +1 -0
  24. package/dist/code-browser-scroll-sync.d.ts +6 -0
  25. package/dist/code-browser-scroll-sync.d.ts.map +1 -1
  26. package/dist/code-browser-scroll-sync.js +1 -0
  27. package/dist/code-browser-scroll-sync.js.map +1 -1
  28. package/dist/code-browser-search.d.ts +5 -0
  29. package/dist/code-browser-search.d.ts.map +1 -1
  30. package/dist/code-browser-search.js +28 -0
  31. package/dist/code-browser-search.js.map +1 -1
  32. package/dist/code-browser-web-storage.d.ts +7 -0
  33. package/dist/code-browser-web-storage.d.ts.map +1 -0
  34. package/dist/code-browser-web-storage.js +21 -0
  35. package/dist/code-browser-web-storage.js.map +1 -0
  36. package/dist/code-browser.d.ts +76 -1
  37. package/dist/code-browser.d.ts.map +1 -1
  38. package/dist/code-browser.js +809 -111
  39. package/dist/code-browser.js.map +1 -1
  40. package/dist/highlighted-code-lines.d.ts +19 -0
  41. package/dist/highlighted-code-lines.d.ts.map +1 -0
  42. package/dist/highlighted-code-lines.js +61 -0
  43. package/dist/highlighted-code-lines.js.map +1 -0
  44. package/dist/index.d.ts +3 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/markdown-pipeline.d.ts.map +1 -1
  49. package/dist/markdown-pipeline.js +13 -1
  50. package/dist/markdown-pipeline.js.map +1 -1
  51. package/dist/mermaid-runtime-html.d.ts +7 -0
  52. package/dist/mermaid-runtime-html.d.ts.map +1 -0
  53. package/dist/mermaid-runtime-html.js +26 -0
  54. package/dist/mermaid-runtime-html.js.map +1 -0
  55. package/dist/side-by-side.d.ts +2 -0
  56. package/dist/side-by-side.d.ts.map +1 -1
  57. package/dist/side-by-side.js +7 -7
  58. package/dist/side-by-side.js.map +1 -1
  59. package/package.json +6 -4
@@ -1,5 +1,12 @@
1
- "use strict";(()=>{var b=class{static ToInt32Array(e){let t=new Int32Array(e.length);for(let r=0,s=e.length;r<s;r++)t[r]=e[r];return t}},O=class{static getHashCode(e){let t=5381,r=t;for(let s=0,i=e.length;s<i&&e[s]!="\0"&&(t=(t<<5)+t^e.charCodeAt(s),s!==i-1&&e[s+1]!=="\0");s+=2)r=(r<<5)+r^e.charCodeAt(s+1);return t+1566083941*r|0}},m=class{constructor(e){this.entries=void 0,this.entries=e!==void 0?e:new Map}add(e,t){if(this.entries.has(e))throw new Error(`A meta entry with key ${e} is already present.`);this.entries.set(e,t)}get(e){return this.entries.get(e)}get allEntries(){return this.entries}toJSON(){return{entries:Object.fromEntries(this.entries)}}},N=class{static mergeMeta(e){if(e.length===0)return new m;if(e.length===1)return e[0];let t=new Map;for(let s of e)for(let[i,n]of s.allEntries){let h=t.get(i);h===void 0?t.set(i,[n]):h.push(n)}let r=new Map;for(let[s,i]of t)if(i.length!==1){if(i.every(n=>typeof n=="number")){let n=i.reduce((h,o)=>h+o,0);r.set(s,n);continue}for(let n=0;n<i.length;n++)r.set(`${s}_${n}`,i[n])}else r.set(s,i[0]);return new m(r)}},F=class{static isSurrogate(e){let t=e.charCodeAt(0);return t>=55296&&t<=57343}static isAlphanumeric(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122}static isLowerAlpha(e){let t=e.charCodeAt(0);return t>=97&&t<=122}},Q=class{constructor(e,t){this.usableSearchers=void 0,this.usableSearchers=new Map;for(let r of t)e.includes(r.type)&&this.usableSearchers.set(r.type,r)}has(e){return this.usableSearchers.has(e)}minQuality(e){return this.usableSearchers.get(e).minQuality}spec(e){return this.usableSearchers.get(e)}},z=class{constructor(e,t,r){this.matches=void 0,this.query=void 0,this.meta=void 0,this.matches=e,this.query=t,this.meta=r}},l,q;(function(a){a.Fuzzy="fuzzy",a.Substring="substring",a.Prefix="prefix"})(l||(l={}));var L=class{constructor(e,t){this.type=void 0,this.minQuality=void 0,this.type=e,this.minQuality=Math.max(0,t)}},k=class extends L{constructor(e){super(l.Fuzzy,e)}},I=class extends L{constructor(e){super(l.Substring,e)}},E=class extends L{constructor(e){super(l.Prefix,e)}},M=class{constructor(e,t=10,r=[new k(.3),new I(0),new E(0)]){this.string=void 0,this.topN=void 0,this.searchers=void 0,this.string=e,this.topN=Math.max(0,t),this.searchers=r}},V=class{constructor(e,t){this.removedEntities=void 0,this.meta=void 0,this.removedEntities=e,this.meta=t}},W=class{static mergeResults(e,t){let r=e.query,s=this.mergeMatches(e.matches,t.matches,r.topN),i=N.mergeMeta([e.meta,t.meta]);return new z(s,r,i)}static mergeMatches(e,t,r){if(t.length===0)return e;if(e.length===0)return t;let s=[...e,...t];return s.sort((i,n)=>i.quality>n.quality?-1:i.quality<n.quality?1:0),s.length<=r?s:s.slice(0,r)}},J=class{constructor(e,t,r){this.maxQueryLength=void 0,this.mainSearcher=void 0,this.secondarySearcher=void 0,this.maxQueryLength=e,this.mainSearcher=t,this.secondarySearcher=r}indexEntities(e,t,r){return this.secondarySearcher.indexEntities([],t,r),this.mainSearcher.indexEntities(e,t,r)}getMatches(e){return e.string?(e.string.length>this.maxQueryLength&&(e=new M(e.string.substring(0,this.maxQueryLength),e.topN,e.searchers)),W.mergeResults(this.mainSearcher.getMatches(e),this.secondarySearcher.getMatches(e))):new z([],e,new m)}tryGetTerms(e){let t=this.mainSearcher.tryGetTerms(e);return t!==null?t:this.secondarySearcher.tryGetTerms(e)}getTerms(){return this.mainSearcher.getTerms().concat(this.secondarySearcher.getTerms())}tryGetEntity(e){var t,r;return(t=(r=this.mainSearcher.tryGetEntity(e))!=null?r:this.secondarySearcher.tryGetEntity(e))!=null?t:null}getEntities(){return this.mainSearcher.getEntities().concat(this.secondarySearcher.getEntities())}removeEntities(e){let t=[];for(let s=0,i=e.length;s<i;s++)(this.mainSearcher.removeEntity(e[s])||this.secondarySearcher.removeEntity(e[s]))&&t.push(e[s]);let r=new m;return new V(t,r)}upsertEntities(e,t,r){let s=[],i=[];for(let n=0,h=e.length;n<h;n++){let o=e[n],c=t(o);this.tryUpdate(o,c,r)||(s.push(c),i.push(o))}return this.removeEntities(s),i.length>0?this.reindexSecondarySearcher(i,t,r):new m}reindexSecondarySearcher(e,t,r){let s=this.secondarySearcher.getEntities().concat(e);return this.secondarySearcher.indexEntities(s,t,r)}tryUpdate(e,t,r){return this.tryUpdateSearcher(e,t,r,this.mainSearcher)||this.tryUpdateSearcher(e,t,r,this.secondarySearcher)}tryUpdateSearcher(e,t,r,s){let i=s.tryGetTerms(t);if(i===null)return!1;if(this.termsAreEqual(i,r(e))){if(!s.replaceEntity(t,e,t))throw new Error(`Entity with id ${t} was not present.`);return!0}return!1}termsAreEqual(e,t){return e===t||e!=null&&t!=null&&e.length===t.length&&e.every((r,s)=>r===t[s])}removeEntity(e){return this.mainSearcher.removeEntity(e)||this.secondarySearcher.removeEntity(e)}replaceEntity(e,t,r){return this.mainSearcher.replaceEntity(e,t,r)||this.secondarySearcher.replaceEntity(e,t,r)}save(e){this.mainSearcher.save(e),this.secondarySearcher.save(e)}load(e){this.mainSearcher.load(e),this.secondarySearcher.load(e)}},X=class{constructor(e){this.dynamicSearcher=void 0,this.dynamicSearcher=e}removeEntities(e){let t=performance.now(),r=this.dynamicSearcher.removeEntities(e),s=Math.round(performance.now()-t);return r.meta.add("removalDuration",s),r}upsertEntities(e,t,r){let s=performance.now(),i=this.dynamicSearcher.upsertEntities(e,t,r),n=Math.round(performance.now()-s);return i.add("upsertDuration",n),i}indexEntities(e,t,r){let s=performance.now(),i=this.dynamicSearcher.indexEntities(e,t,r),n=Math.round(performance.now()-s);return i.add("indexingDurationTotal",n),i}getMatches(e){let t=performance.now(),r=this.dynamicSearcher.getMatches(e),s=Math.round(performance.now()-t);return r.meta.add("queryDuration",s),r}tryGetEntity(e){return this.dynamicSearcher.tryGetEntity(e)}getEntities(){return this.dynamicSearcher.getEntities()}tryGetTerms(e){return this.dynamicSearcher.tryGetTerms(e)}getTerms(){return this.dynamicSearcher.getTerms()}removeEntity(e){return this.dynamicSearcher.removeEntity(e)}replaceEntity(e,t,r){return this.dynamicSearcher.replaceEntity(e,t,r)}save(e){this.dynamicSearcher.save(e)}load(e){this.dynamicSearcher.load(e)}},Y=class{constructor(e,t,r){this.entity=void 0,this.quality=void 0,this.matchedString=void 0,this.entity=e,this.quality=t,this.matchedString=r}},Z=class{constructor(e){this.query=void 0,this.matchedIndexes=new Set,this.matches=[],this.meta=[],this.query=e}},R=class{constructor(e,t=0,r){this.string=void 0,this.minQuality=void 0,this.searcherType=void 0,this.string=e,this.minQuality=Math.max(0,Math.min(1,t)),this.searcherType=r}},_=class{constructor(e,t){this.stringSearcher=void 0,this.searcherTypes=void 0,this.entities=void 0,this.idToIndex=void 0,this.terms=void 0,this.termIndexToEntityIndex=void 0,this.entityIndexToFirstTermIndex=void 0,this.searchersAndQualityOffsets=[{searcherType:l.Prefix,qualityOffset:2},{searcherType:l.Substring,qualityOffset:1},{searcherType:l.Fuzzy,qualityOffset:0}],this.stringSearcher=e,this.searcherTypes=t,this.entities=[],this.idToIndex=new Map,this.terms=[],this.termIndexToEntityIndex=new Int32Array(0),this.entityIndexToFirstTermIndex=new Int32Array(0)}indexEntities(e,t,r){this.entities=[...e],this.idToIndex=new Map,this.terms=[];let s=[],i=[];for(let h=0,o=e.length;h<o;h++){this.idToIndex.set(t(e[h]),h);let c=r(e[h]);i.push(this.terms.length),this.terms.push(...c),s.push(...c.map(()=>h))}this.termIndexToEntityIndex=b.ToInt32Array(s),this.entityIndexToFirstTermIndex=b.ToInt32Array(i);let n=this.stringSearcher.index(this.terms);return n.add("numberOfEntities",this.entities.length),n.add("numberOfTerms",this.terms.length),n}getMatches(e){let t=new Z(e),r=new Q(this.searcherTypes,e.searchers);for(let{searcherType:i,qualityOffset:n}of this.searchersAndQualityOffsets){if(e.topN==t.matches.length)break;r.has(i)&&this.addMatchesFromSearcher(t,r.spec(i),n)}let s=N.mergeMeta(t.meta);return new z(t.matches,e,s)}addMatchesFromSearcher(e,t,r){let s=Math.max(0,t.minQuality-r);if(s>1)return;let i=new R(e.query.string,s,t.type),n=this.stringSearcher.getMatches(i);this.addMatchesFromResult(e,n,r)}addMatchesFromResult(e,t,r){if(e.meta.push(t.meta),e.query.topN!==0)for(let s=0,i=t.matches.length;s<i;s++){let n=t.matches[s],h=this.termIndexToEntityIndex[n.index];if(!e.matchedIndexes.has(h)&&this.entities[h]!==null&&(e.matchedIndexes.add(h),e.matches.push(new Y(this.entities[h],n.quality+r,this.terms[n.index])),e.matches.length===e.query.topN))break}}tryGetEntity(e){let t=this.idToIndex.get(e);return t===void 0?null:this.entities[t]}getEntities(){return this.entities.filter(e=>e!==null)}tryGetTerms(e){let t=this.idToIndex.get(e);return t===void 0?null:this.terms.slice(this.entityIndexToFirstTermIndex[t],t===this.entities.length-1?this.terms.length:this.entityIndexToFirstTermIndex[t+1])}getTerms(){let e=[];for(let t=0,r=this.termIndexToEntityIndex.length;t<r;t++)this.entities[this.termIndexToEntityIndex[t]]!==null&&e.push(this.terms[t]);return e}removeEntity(e){let t=this.idToIndex.get(e);return t!==void 0&&(this.entities[t]=null,this.idToIndex.delete(e),!0)}replaceEntity(e,t,r){let s=this.idToIndex.get(e);return s!==void 0&&(this.entities[s]=t,this.idToIndex.delete(e),this.idToIndex.set(r,s),!0)}save(e){e.add(this.entities),e.add(this.idToIndex),e.add(this.terms),e.add(this.termIndexToEntityIndex),e.add(this.entityIndexToFirstTermIndex),this.stringSearcher.save(e)}load(e){this.entities=e.get(),this.idToIndex=e.get(),this.terms=e.get(),this.termIndexToEntityIndex=e.get(),this.entityIndexToFirstTermIndex=e.get(),this.stringSearcher.load(e)}},T=class{constructor(e,t){this.strings=void 0,this.meta=void 0,this.strings=e,this.meta=t}},ee=class{constructor(e,t){this.treatCharacterAsSpace=void 0,this.allowCharacter=void 0,this.numberOfSurrogateCharacters=0,this.treatCharacterAsSpace=e,this.allowCharacter=t}normalize(e){let t=new Array(e.length),r=0,s=!1,i=!1;for(let n=0,h=e.length;n<h;n++){let o=this.getNormalizedCharacter(e[n]);o!==""&&(o===" "?s=!0:(s&&i&&(t[r++]=" "),t[r++]=o,i=!0,s=!1))}return i?t.join(""):""}getNormalizedCharacter(e){return e===" "||this.treatCharacterAsSpace(e)?" ":this.isSurrogate(e)||!this.allowCharacter(e)?"":e.toLowerCase()}isSurrogate(e){return!!F.isSurrogate(e)&&(this.numberOfSurrogateCharacters++,!0)}normalizeBulk(e){this.numberOfSurrogateCharacters=0;let t=e.map(s=>this.normalize(s)),r=new m;return r.add("numberOfSurrogateCharacters",this.numberOfSurrogateCharacters),new T(t,r)}},te=class{constructor(e){this.normalizationFunction=void 0,this.normalizationFunction=e}normalize(e){return this.normalizationFunction(e)}normalizeBulk(e){let t=e.map(r=>this.normalize(r));return new T(t,new m)}},re=class{constructor(e){this.normalizers=void 0,this.normalizers=e}normalize(e){for(let t=0,r=this.normalizers.length;t<r;t++)e=this.normalizers[t].normalize(e);return e}normalizeBulk(e){let t=new m;for(let r=0,s=this.normalizers.length;r<s;r++){let i=this.normalizers[r].normalizeBulk(e);e=i.strings;for(let n of i.meta.allEntries)t.add(n[0],n[1])}return new T(e,t)}},se=class{normalize(e){return e||""}normalizeBulk(e){let t=e.map(r=>this.normalize(r));return new T(t,new m)}},ie=class{constructor(e,t){this.normalizeVariationsAndInput=void 0,this.replacements=void 0,this.normalizeVariationsAndInput=t,this.replacements=[];for(let r of e){let s=new Map;for(let[i,n]of r)for(let h of n){let o=t(h);s.set(o,i)}this.replacements.push(s)}}normalize(e){e=this.normalizeVariationsAndInput(e);let t=new Array(e.length),r=0;for(let s=0,i=e.length;s<i;s++)for(let n of this.replacements){let h=n.get(e[s]);if(h!==void 0){t[r++]=h;break}t[r++]=e[s]}return t.join("")}normalizeBulk(e){let t=e.map(r=>this.normalize(r));return new T(t,new m)}},ne=class{static create(e){let t=new se,r=new ie(e.replacements,n=>n.toLowerCase().normalize("NFKC")),s=new te(n=>n.normalize("NFKD")),i=new ee(e.treatCharacterAsSpace,e.allowCharacter);return new re([t,r,s,i])}},H=class{constructor(e,t){this.index=void 0,this.quality=void 0,this.index=e,this.quality=t}},S=class{constructor(e,t,r){this.matches=void 0,this.query=void 0,this.meta=void 0,this.matches=e,this.query=t,this.meta=r}},ae=class{constructor(e){this.stringSearcher=void 0,this.distinctMapping=void 0,this.sortMapping=void 0,this.stringSearcher=e,this.distinctMapping=new Int32Array(0),this.sortMapping=new Int32Array(0)}index(e){let t=e.map((o,c)=>({term:o,index:c}));t.sort((o,c)=>o.term<c.term?-1:o.term>c.term?1:0),this.sortMapping=new Int32Array(t.length);for(let o=0,c=t.length;o<c;o++)this.sortMapping[o]=t[o].index;let r=[],s=[],i=0,n=null;for(let o=0,c=t.length;o<c;o++){let d=t[o].term;d!=n&&(r[i]=d,s[i]=o,i++),n=d}s[i++]=t.length,this.distinctMapping=b.ToInt32Array(s);let h=this.stringSearcher.index(r);return h.add("numberOfDistinctTerms",r.length),h}getMatches(e){let t=this.stringSearcher.getMatches(e),r=new Array(t.matches.length),s=0;return t.matches.forEach(i=>{let n=this.distinctMapping[i.index+1];for(let h=this.distinctMapping[i.index];h<n;h++)r[s++]=new H(this.sortMapping[h],i.quality)}),new S(r,e,t.meta)}save(e){e.add(this.distinctMapping),e.add(this.sortMapping),this.stringSearcher.save(e)}load(e){this.distinctMapping=e.get(),this.sortMapping=e.get(),this.stringSearcher.load(e)}},he=class{constructor(e,t){this.entitySearcher=void 0,this.searcherTypes=void 0,this.entitySearcher=e,this.searcherTypes=t}indexEntities(e,t,r){return this.entitySearcher.indexEntities(e,t,r)}getMatches(e){let t=new Q(this.searcherTypes,e.searchers);if(e.topN>200)return this.entitySearcher.getMatches(e);if(e.string.length<=3&&t.has(l.Prefix)&&t.minQuality(l.Prefix)<2.2){let r=new M(e.string,e.topN,[new E(2.3)]),s=this.entitySearcher.getMatches(r);if(s.matches.length==e.topN)return new z(s.matches,e,s.meta)}if(e.string.length<=3&&!t.has(l.Prefix)&&t.has(l.Substring)&&t.minQuality(l.Substring)<1.2){let r=new M(e.string,e.topN,[new I(1.3)]),s=this.entitySearcher.getMatches(r);if(s.matches.length==e.topN)return new z(s.matches,e,s.meta)}return this.entitySearcher.getMatches(e)}tryGetEntity(e){return this.entitySearcher.tryGetEntity(e)}getEntities(){return this.entitySearcher.getEntities()}tryGetTerms(e){return this.entitySearcher.tryGetTerms(e)}getTerms(){return this.entitySearcher.getTerms()}removeEntity(e){return this.entitySearcher.removeEntity(e)}replaceEntity(e,t,r){return this.entitySearcher.replaceEntity(e,t,r)}save(e){return this.entitySearcher.save(e)}load(e){return this.entitySearcher.load(e)}},$=class{constructor(){this.ids=void 0,this.frequencies=void 0,this.ids=[],this.frequencies=[]}addId(e,t){this.ids.push(e),this.frequencies.push(t)}seal(){this.ids=b.ToInt32Array(this.ids),this.frequencies=b.ToInt32Array(this.frequencies)}get length(){return this.ids.length}save(e){e.add(this.ids),e.add(this.frequencies)}load(e){this.ids=e.get(),this.frequencies=e.get()}},A=class{constructor(){this.ngramToTermIds=void 0,this.ngramToTermIds=new Map}add(e,t,r){let s=this.ngramToTermIds.get(e);s||(s=new $,this.ngramToTermIds.set(e,s)),s.addId(t,r)}seal(){for(let e of this.ngramToTermIds.values())e.seal()}getIds(e){return this.ngramToTermIds.get(e)}get size(){return this.ngramToTermIds.size}save(e){e.add(this.ngramToTermIds.size);for(let[t,r]of this.ngramToTermIds)e.add(t),r.save(e)}load(e){let t=e.get();for(let r=0;r<t;r++){let s=e.get(),i=new $;i.load(e),this.ngramToTermIds.set(s,i)}}},oe=class{static ComputeJaccardCoefficient(e,t,r){return r/(e+t-r)}static ComputeOverlapMaxCoefficient(e,t,r){return r/Math.max(e,t)}},ce=class{constructor(e){this.ngramComputer=void 0,this.invertedIndex=void 0,this.numberOfNgrams=void 0,this.commonNgramCounts=void 0,this.ngramComputer=e,this.invertedIndex=new A,this.numberOfNgrams=new Int32Array(0),this.commonNgramCounts=new Int32Array(0)}index(e){let t=performance.now();this.invertedIndex=new A,this.commonNgramCounts=new Int32Array(e.length),this.numberOfNgrams=new Int32Array(e.length);let r=0;for(let n=0,h=e.length;n<h;n++){let o=e[n];if(!this.isValidTerm(o)){this.numberOfNgrams[n]=0,r++;continue}let c=this.ngramComputer.computeNgrams(o);this.numberOfNgrams[n]=c.length;let d=this.getNgramsToFrequency(c);for(let[g,u]of d)this.invertedIndex.add(g,n,u)}this.invertedIndex.seal();let s=Math.round(performance.now()-t),i=new m;return i.add("numberOfInvalidTerms",r),i.add("indexingDurationFuzzySearcher",s),i}isValidTerm(e){return e!=null&&e.trim()!==""}getMatches(e){if(this.invertedIndex.size===0)return new S([],e,new m);let t=this.ngramComputer.computeNgrams(e.string),r=this.getNgramsToFrequency(t),s=t.length;this.computeCommonNgramCounts(r);let i=this.getMatchesFromCommonNgrams(s,e.minQuality);return new S(i,e,new m)}computeCommonNgramCounts(e){this.commonNgramCounts.fill(0);for(let[t,r]of e){let s=this.invertedIndex.getIds(t);if(s!=null)for(let i=0,n=s.length;i<n;i++)this.commonNgramCounts[s.ids[i]]+=Math.min(r,s.frequencies[i])}}getNgramsToFrequency(e){let t=new Map;for(let r=0,s=e.length;r<s;r++){let i=e[r],n=t.get(i);t.set(i,n!==void 0?n+1:1)}return t}getMatchesFromCommonNgrams(e,t){let r=[];for(let s=0,i=this.numberOfNgrams.length;s<i;s++){let n=oe.ComputeOverlapMaxCoefficient(e,this.numberOfNgrams[s],this.commonNgramCounts[s]);n>t&&r.push(new H(s,n))}return r}save(e){this.invertedIndex.save(e),e.add(this.numberOfNgrams)}load(e){this.invertedIndex=new A,this.invertedIndex.load(e),this.numberOfNgrams=e.get(),this.commonNgramCounts=new Int32Array(this.numberOfNgrams.length)}},de=class{constructor(e,t){this.stringSearcher=void 0,this.penaltyFactor=void 0,this.hashCodes=void 0,this.stringSearcher=e,this.penaltyFactor=1-t,this.hashCodes=new Int32Array(0)}index(e){this.hashCodes=new Int32Array(e.length);for(let t=0,r=e.length;t<r;t++)this.hashCodes[t]=O.getHashCode(e[t]);return this.stringSearcher.index(e)}getMatches(e){let t=O.getHashCode(e.string),r=this.stringSearcher.getMatches(e),s=r.matches.map(i=>this.penalizeMatch(i,t)).filter(i=>i.quality>=e.minQuality);return new S(s,r.query,r.meta)}penalizeMatch(e,t){return e.quality*=this.hashCodes[e.index]===t?1:this.penaltyFactor,e}save(e){e.add(this.hashCodes),this.stringSearcher.save(e)}load(e){this.hashCodes=e.get(),this.stringSearcher.load(e)}},ue=class{constructor(e,t){this.ngramN=void 0,this.transformNgram=void 0,this.ngramN=e,this.transformNgram=t??(r=>r)}computeNgrams(e){if(e.length===0)return[];if(e.length<=this.ngramN){let r=this.transformNgram(e);return r?[r]:[]}let t=[];for(let r=0,s=this.maximumNumberOfNgrams(e);r<s;r++){let i=this.transformNgram(e.substring(r,r+this.ngramN));i&&t.push(i)}return t}maximumNumberOfNgrams(e){return Math.max(e.length-this.ngramN+1,e.length>0?1:0)}},le=class{constructor(e,t,r){this.paddingLeft=void 0,this.paddingRight=void 0,this.paddingMiddle=void 0,this.paddingLeft=e,this.paddingRight=t,this.paddingMiddle=r}normalize(e){return e&&`${this.paddingLeft}${e.split(" ").join(this.paddingMiddle)}${this.paddingRight}`}normalizeBulk(e){let t=e.map(s=>this.normalize(s)),r=new m;return new T(t,r)}},G=class{};G.Value=new Map([["a",["\u1D8F","\u2C65","\u0251","\u1D00","\u0250","\u0252"]],["aa",["\xE5","\uA733"]],["ae",["\xE4","\xE6","\u1D01","\u1D2D","\u1D46","\u01FD","\u01E3","\u1D02"]],["ao",["\uA735"]],["au",["\uA737"]],["av",["\uA739","\uA73B"]],["ay",["\uA73D"]],["b",["\u0180","\u0253","\u0183","\u1D6C","\u1D80","\u0299"]],["c",["\u023C","\u0188","\u0255","\u1D04","\uA73F","\u2184"]],["d",["\u0111","\xF0","\u0256","\u0257","\u018C","\u1D6D","\u1D81","\u1D91","\u0221","\u1D05","\uA77A"]],["db",["\u0238"]],["e",["\u1D92","\u0247","\u2C78","\u1D07","\u0259","\u01DD","\u025B"]],["eo",["\u1D14"]],["f",["\u0192","\u1D6E","\u1D82","\uA730","\uA77C"]],["g",["\u01E5","\u0260","\u1D83","\u0262","\u021D","\u014B","\uA7A1","\u1D79","\uA77F"]],["h",["\u0127","\u2C68","\u0266","\u029C","\u0303","\u0267","\u2C76","\u0265"]],["hv",["\u0195"]],["i",["\u0268","\u1D7B","\u1D96","\u0131","\u026A","\u0269"]],["j",["\u0249","\u0237","\u029D","\u025F","\u0284","\u1D0A"]],["k",["\u0199","\u2C6A","\u1D84","\uA741","\u1D0B","\uA743","\uA745","\uA7A3"]],["l",["\u0142","\u019A","\u2C61","\u026B","\u026C","\u1D85","\u026D","\u0234","\u029F","\uA749","\uA781","\uA747"]],["m",["\u1D6F","\u1D86","\u0271","\u1D0D","\u026F"]],["n",["\u0272","\u019E","\u1D70","\u1D87","\u0273","\u0235","\u0274","\uA791","\uA7A5"]],["o",["\xF8","\u01FF","\u0275","\u0254","\u2C7A","\u1D0F","\uA74B","\uA74D"]],["oe",["\xF6","\u0153"]],["oi",["\u01A3"]],["oo",["\uA74F"]],["ou",["\u0223"]],["p",["\u1D7D","\u01A5","\u1D71","\u1D88","\u1D18","\u01BF","\uA751","\uA753","\uA755"]],["q",["\u024B","\u02A0","\uA757","\uA759"]],["qp",["\u0239"]],["r",["\u024D","\u027D","\uA75B","\u1D72","\u1D89","\u027C","\u027E","\u1D73","\u0280","\u0279","\u0281","\uA7A7","\uA783"]],["s",["\u1D74","\u1D8A","\u0282","\u023F","\uA731","\u0283","\uA7A9","\uA785","\u017F"]],["ss",["\xDF"]],["t",["\u0167","\u2C66","\u01AD","\u0288","\u1D75","\u01AB","\u0236","\u1D1B","\uA787"]],["th",["\xFE"]],["tz",["\uA729"]],["u",["\u0289","\u028A","\u1D7E","\u1D1C","\u1D99"]],["ue",["\xFC","\u1D6B"]],["v",["\u028B","\u1D8C","\u2C71","\u2C74","\u1D20","\u028C","\uA75F"]],["vy",["\uA761"]],["w",["\u2C73","\u1D21","\u028D"]],["x",["\u1D8D"]],["y",["\u024F","\u01B4","\u028F","\u1EFF"]],["z",["\u01B6","\u0225","\u2C6C","\u1D76","\u1D8E","\u0290","\u0291","\u0240","\u1D22","\u0292","\u01B9","\uA763"]]]);var P=class a{constructor(e,t,r){this.replacements=void 0,this.treatCharacterAsSpace=void 0,this.allowCharacter=void 0,this.replacements=e,this.treatCharacterAsSpace=t,this.allowCharacter=r}static createDefaultConfig(){let e=new Set(["_","-","\u2013","/",","," "]);return new a([G.Value],t=>e.has(t),t=>F.isAlphanumeric(t))}},B=class{constructor(e,t,r="normalizationDuration"){this.stringSearcher=void 0,this.normalizer=void 0,this.normalizationDurationMetaKey=void 0,this.stringSearcher=e,this.normalizer=t,this.normalizationDurationMetaKey=r}index(e){let t=performance.now(),r=this.normalizer.normalizeBulk(e),s=Math.round(performance.now()-t),i=this.stringSearcher.index(r.strings);i.add(this.normalizationDurationMetaKey,s);for(let n of r.meta.allEntries)i.add(n[0],n[1]);return i}getMatches(e){let t=new R(this.normalizer.normalize(e.string),e.minQuality,e.searcherType),r=this.stringSearcher.getMatches(t);return new S(r.matches,e,r.meta)}save(e){this.stringSearcher.save(e)}load(e){this.stringSearcher.load(e)}},me=class{constructor(e){this.suffixArraySearcher=void 0,this.suffixArraySearcher=e}index(e){return this.suffixArraySearcher.index(e)}getMatches(e){if(!e.string)return new S([],e,new m);let t=this.modifyQueryString(e.string),r=new R(t,e.minQuality,e.searcherType);return this.suffixArraySearcher.getMatches(r,e.string.length)}modifyQueryString(e){return`${this.suffixArraySearcher.separator}${e}`}save(e){this.suffixArraySearcher.save(e)}load(e){this.suffixArraySearcher.load(e)}},ge=class{constructor(e,t,r){this.prefixSearcher=void 0,this.substringSearcher=void 0,this.fuzzySearcher=void 0,this.prefixSearcher=e,this.substringSearcher=t,this.fuzzySearcher=r}index(e){let t=[];if(this.prefixSearcher&&!this.substringSearcher){let r=this.prefixSearcher.index(e);t.push(r)}if(this.substringSearcher){let r=this.substringSearcher.index(e);t.push(r)}if(this.fuzzySearcher){let r=this.fuzzySearcher.index(e);t.push(r)}return N.mergeMeta(t)}getMatches(e){if(!e.searcherType)throw new Error("SearcherSwitch requires a searcher type.");switch(e.searcherType){case l.Prefix:if(!this.prefixSearcher)throw new Error("No prefix searcher has been indexed.");return this.prefixSearcher.getMatches(e);case l.Substring:if(!this.substringSearcher)throw new Error("No substring searcher has been indexed.");return this.substringSearcher.getMatches(e);case l.Fuzzy:if(!this.fuzzySearcher)throw new Error("No fuzzy searcher has been indexed.");return this.fuzzySearcher.getMatches(e);default:throw new Error(`Unknown searcher type: ${e.searcherType}`)}}save(e){this.prefixSearcher&&!this.substringSearcher&&this.prefixSearcher.save(e),this.substringSearcher&&this.substringSearcher.save(e),this.fuzzySearcher&&this.fuzzySearcher.save(e)}load(e){this.prefixSearcher&&!this.substringSearcher&&this.prefixSearcher.load(e),this.substringSearcher&&this.substringSearcher.load(e),this.fuzzySearcher&&this.fuzzySearcher.load(e)}};(function(a){a.QualityAndIndex="qualityAndIndex",a.QualityAndMatchedString="qualityAndMatchedString"})(q||(q={}));var fe=class{constructor(e,t){this.sortOrder=void 0,this.entitySearcher=void 0,this.collator=new Intl.Collator(void 0,{numeric:!0}),this.sortOrder=e,this.entitySearcher=t}indexEntities(e,t,r){return this.entitySearcher.indexEntities(e,t,r)}getMatches(e){let t=this.entitySearcher.getMatches(e);switch(this.sortOrder){case q.QualityAndIndex:return t;case q.QualityAndMatchedString:return this.sortMatchesByQualityAndMatchedString(t.matches),t;default:throw new Error(`Unsupported sort order: ${this.sortOrder}`)}}sortMatchesByQualityAndMatchedString(e){e.sort((t,r)=>t.quality>r.quality?-1:t.quality<r.quality?1:this.collator.compare(t.matchedString,r.matchedString))}tryGetEntity(e){return this.entitySearcher.tryGetEntity(e)}getEntities(){return this.entitySearcher.getEntities()}tryGetTerms(e){return this.entitySearcher.tryGetTerms(e)}getTerms(){return this.entitySearcher.getTerms()}save(e){this.entitySearcher.save(e)}load(e){this.entitySearcher.load(e)}removeEntity(e){return this.entitySearcher.removeEntity(e)}replaceEntity(e,t,r){return this.entitySearcher.replaceEntity(e,t,r)}},ye=class{constructor(e){this.stringSearcher=void 0,this.stringSearcher=e}index(e){return this.stringSearcher.index(e)}getMatches(e){let t=this.stringSearcher.getMatches(e);return t.matches.sort(this.compareMatchesByQualityAndIndex),t}compareMatchesByQualityAndIndex(e,t){return e.quality>t.quality?-1:e.quality<t.quality?1:e.index<t.index?-1:e.index>t.index?1:0}save(e){this.stringSearcher.save(e)}load(e){this.stringSearcher.load(e)}},D=class{static compareOrdinal(e,t,r,s,i){let n=Math.min(t+i,e.length),h=Math.min(s+i,r.length),o=t,c=s;for(;o<n&&c<h;){let u=e.charCodeAt(o),f=r.charCodeAt(c);if(u<f)return-1;if(u>f)return 1;o++,c++}let d=n-t,g=h-s;return d===g?0:d<g?-1:1}},pe=class a{static create(e){if(e==null)throw new Error("Input string cannot be null.");let t=new a(e);return t.FormInitialChains(),t.BuildSufixArray(),t.sa}constructor(e){this.inputString=void 0,this.eoc=2147483647,this.sa=void 0,this.isa=void 0,this.chainHeadsDict=void 0,this.chainStack=[],this.subChains=[],this.nextRank=1,this.inputString=e;let t=e.length;this.sa=new Int32Array(t),this.isa=new Int32Array(t),this.chainHeadsDict=new Map}FormInitialChains(){this.FindInitialChains(),this.SortAndPushSubchains()}FindInitialChains(){for(let e=0;e<this.inputString.length;e++){let t=this.inputString.charCodeAt(e),r=this.chainHeadsDict.get(t);this.isa[e]=r!==void 0?r:this.eoc,this.chainHeadsDict.set(t,e)}for(let e of this.chainHeadsDict.values()){let t=new U(e,1);this.subChains.push(t)}}BuildSufixArray(){for(;this.chainStack.length>0;){let e=this.chainStack.pop();this.isa[e.head]===this.eoc?this.RankSuffix(e.head):this.RefineChainWithInductionSorting(e)}}RankSuffix(e){this.isa[e]=-this.nextRank,this.sa[this.nextRank-1]=e,this.nextRank++}RefineChainWithInductionSorting(e){let t=[];for(this.chainHeadsDict.clear(),this.subChains=[];e.head!==this.eoc;){let r=this.isa[e.head];if(e.head+e.length>this.inputString.length-1)this.RankSuffix(e.head);else if(this.isa[e.head+e.length]<0){let s=new Se(e.head,-this.isa[e.head+e.length]);t.push(s)}else this.ExtendChain(e);e.head=r}this.SortAndPushSubchains(),this.SortAndRankNotedSuffixes(t)}ExtendChain(e){let t=this.inputString.charCodeAt(e.head+e.length);if(this.chainHeadsDict.has(t))this.isa[this.chainHeadsDict.get(t)]=e.head,this.isa[e.head]=this.eoc;else{this.isa[e.head]=this.eoc;let r=new U(e.head,e.length+1);this.subChains.push(r)}this.chainHeadsDict.set(t,e.head)}SortAndRankNotedSuffixes(e){e.sort((t,r)=>t.rank-r.rank);for(let t=0;t<e.length;t++)this.RankSuffix(e[t].head)}SortAndPushSubchains(){this.subChains.sort((e,t)=>{let r=Math.min(e.length,t.length);return D.compareOrdinal(this.inputString,e.head,this.inputString,t.head,r)});for(let e=this.subChains.length-1;e>=0;e--)this.chainStack.push(this.subChains[e])}},Se=class{constructor(e,t){this.head=void 0,this.rank=void 0,this.head=e,this.rank=t}},U=class{constructor(e,t){this.head=void 0,this.length=void 0,this.head=e,this.length=t}},ve=class{constructor(e){this.separator=void 0,this.str=void 0,this.suffixArray=void 0,this.indexToTermIndex=void 0,this.termLengths=void 0,this.separator=e,this.str="",this.suffixArray=new Int32Array(0),this.indexToTermIndex=new Int32Array(0),this.termLengths=new Int32Array(0)}index(e){let t=performance.now();this.str=e.length>0?this.separator+e.join(this.separator)+this.separator:"",this.suffixArray=pe.create(this.str),this.indexToTermIndex=new Int32Array(this.suffixArray.length),this.termLengths=new Int32Array(e.length);let r=0;for(let n=0;n<e.length;n++){this.termLengths[n]=e[n].length;for(let h=0;h<=e[n].length;h++)this.indexToTermIndex[r++]=n}this.indexToTermIndex[r++]=-1;let s=Math.round(performance.now()-t),i=new m;return i.add("indexingDurationSuffixArraySearcher",s),i}getMatches(e,t){if(!e.string)return new S([],e,new m);let[r,s]=this.GetPositionsInSuffixArray(e.string),i=new Int32Array(s-r),n=new Set,h=0;for(let d=r;d<s;d++){let g=this.indexToTermIndex[this.suffixArray[d]];n.has(g)||(n.add(g),i[h++]=g)}let o=[];t=t??e.string.length;let c=0;for(let d=0;d<h;d++)c=this.computeQuality(t,this.termLengths[i[d]]),c>e.minQuality&&o.push(new H(i[d],c));return new S(o,e,new m)}computeQuality(e,t){return e/t}GetPositionsInSuffixArray(e){let t=0,r=this.suffixArray.length,s=0;for(;t<r;)s=Math.floor((t+r)/2),D.compareOrdinal(e,0,this.str,this.suffixArray[s],e.length)>0?t=s+1:r=s;let i=t;for(r=this.suffixArray.length;t<r;)s=Math.floor((t+r)/2),D.compareOrdinal(e,0,this.str,this.suffixArray[s],e.length)==0?t=s+1:r=s;return[i,r]}save(e){e.add(this.str),e.add(this.suffixArray),e.add(this.indexToTermIndex),e.add(this.termLengths)}load(e){this.str=e.get(),this.suffixArray=e.get(),this.indexToTermIndex=e.get(),this.termLengths=e.get()}},j=class{static createSearcher(e){let t=this.createDefaultNormalizer(e),r=this.tryCreateFuzzySearcher(e),s=this.tryCreateSubstringSearcher(e),i=this.tryCreatePrefixSearcher(e,s),n=new ge(i,s,r);n=new ae(n),n=new ye(n),n=new B(n,t,"normalizationDurationDefault");let h=new _(n,e.searcherTypes);return h=new he(h,e.searcherTypes),h=new fe(e.sortOrder,h),h}static createDefaultNormalizer(e){let t=new Set;e.fuzzySearchConfig&&(e.fuzzySearchConfig.paddingLeft.split("").forEach(s=>t.add(s)),e.fuzzySearchConfig.paddingRight.split("").forEach(s=>t.add(s)),e.fuzzySearchConfig.paddingMiddle.split("").forEach(s=>t.add(s))),e.substringSearchConfig&&e.substringSearchConfig.suffixArraySeparator.split("").forEach(s=>t.add(s));let r=new P(e.normalizerConfig.replacements,e.normalizerConfig.treatCharacterAsSpace,s=>e.normalizerConfig.allowCharacter(s)&&!t.has(s));return ne.create(r)}static tryCreateFuzzySearcher(e){if(!e.searcherTypes.includes(l.Fuzzy))return null;if(e.fuzzySearchConfig===void 0)throw new Error("Unable to create fuzzy searcher: No fuzzy search config provided.");return this.createFuzzySearcher(e.fuzzySearchConfig)}static createFuzzySearcher(e){let t=new ue(e.ngramN,e.transformNgram),r=new le(e.paddingLeft,e.paddingRight,e.paddingMiddle),s=new ce(t);return s=new de(s,e.inequalityPenalty),s=new B(s,r,"normalizationDurationNgrams"),s}static tryCreateSubstringSearcher(e){if(!e.searcherTypes.includes(l.Substring))return null;if(e.substringSearchConfig===void 0)throw new Error("Unable to create substring searcher: No substring search config provided.");return this.createSubstringSearcher(e.substringSearchConfig)}static createSubstringSearcher(e){return new ve(e.suffixArraySeparator)}static tryCreatePrefixSearcher(e,t){if(!e.searcherTypes.includes(l.Prefix))return null;if(e.substringSearchConfig===void 0)throw new Error("Unable to create prefix searcher: No substring search config provided.");return this.createPrefixSearcher(e.substringSearchConfig,t)}static createPrefixSearcher(e,t){return t===null&&(t=this.createSubstringSearcher(e)),new me(t)}},we=class a{constructor(e,t,r,s,i,n){this.paddingLeft=void 0,this.paddingRight=void 0,this.paddingMiddle=void 0,this.ngramN=void 0,this.transformNgram=void 0,this.inequalityPenalty=void 0,this.paddingLeft=e,this.paddingRight=t,this.paddingMiddle=r,this.ngramN=s,this.transformNgram=i,this.inequalityPenalty=n}static createDefaultConfig(){return new a("$$","!","!$$",3,e=>e.endsWith("$")?null:e.indexOf("$")===-1?e.split("").sort().join(""):e,.05)}};var xe=class a{constructor(e){this.suffixArraySeparator=void 0,this.suffixArraySeparator=e}static createDefaultConfig(){return new a("$")}},Te=class a{constructor(e,t,r,s,i,n){this.searcherTypes=void 0,this.maxQueryLength=void 0,this.sortOrder=void 0,this.normalizerConfig=void 0,this.fuzzySearchConfig=void 0,this.substringSearchConfig=void 0,this.searcherTypes=e,this.maxQueryLength=t,this.sortOrder=r,this.normalizerConfig=s,this.fuzzySearchConfig=i,this.substringSearchConfig=n}static createDefaultConfig(){let e=[l.Fuzzy,l.Substring,l.Prefix],t=q.QualityAndMatchedString,r=P.createDefaultConfig(),s=we.createDefaultConfig(),i=xe.createDefaultConfig();return new a(e,150,t,r,s,i)}},K=class{static createSearcher(e){let t=j.createSearcher(e),r=j.createSearcher(e),s=new J(e.maxQueryLength,t,r);return s=new X(s),s}static createDefaultSearcher(){let e=Te.createDefaultConfig();return this.createSearcher(e)}};function be(a,e,t,r,s){let i=Math.max(0,e-t),n=Math.max(0,r-s);return i<=0?0:a/i*n}function ze(a,e){let t=e.map(o=>o.trim()).filter(Boolean);if(t.length===0)return[];let r=a.toLowerCase(),s=t.map(o=>o.toLowerCase()),i=[],n=0,h=0;for(;n<a.length&&h<400;){let o=n,c=-1,d=!0;for(let g of s){if(g.length===0)continue;let u=r.indexOf(g,o);if(u<0){d=!1;break}c<0&&(c=u),o=u+g.length}if(!d||c<0)break;i.push({start:c,end:o}),h++,n=c+1}return i}function Me(a,e){let t=Math.max(0,Math.min(e,a.length)),r=0;for(let s=0;s<t;s++)a[s]===`
2
- `&&r++;return r}function Ie(a,e){let t=a.split(`
3
- `);return e<0||e>=t.length?"":t[e]??""}function Le(a){return a.trim().split(/\s+/).filter(Boolean)}function Ne(a,e,t){return Math.max(e,Math.min(t,a))}function Ee(a){try{return decodeURIComponent(escape(atob(a)))}catch{try{return atob(a)}catch{return""}}}function ke(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Re(a,e){let t=a.replace(/\s+/g," ").trim();return t.length<=e?t:`${t.slice(0,e-1)}\u2026`}function He(a,e){let t=new Map;for(let r of a){let s=`${r.kind}:${r.line}`,i=t.get(s);(!i||r.score>i.score)&&t.set(s,r)}return[...t.values()].sort((r,s)=>s.score-r.score).slice(0,e)}function Ce(a,e,t){let r=ze(a,t),s=new Set,i=[];for(let n of r){let h=Me(a,n.start);s.has(h)||(s.add(h),i.push({kind:e,line:h,text:Ie(a,h),score:1e3,source:"ordered"}))}return i}function De(a,e,t){let r=e.trim();if(!r)return[];let s=new M(r,t,[new k(.22),new I(0),new E(0)]),i=a.getMatches(s),n=[];for(let h of i.matches){let o=h.entity;n.push({kind:o.kind,line:o.line,text:o.text,score:100+h.quality,source:"fuzzy"})}return n}function Oe(a){let{rawCode:e,rawMd:t,mdLines:r,searcher:s,searchInput:i,searchClear:n,searchResults:h,docPane:o}=a,c;function d(){clearTimeout(c),c=void 0,i.value="",h.innerHTML="",h.hidden=!0}function g(){let u=Le(i.value);if(u.length===0){h.hidden=!0,h.innerHTML="";return}let f=Ce(e,"code",u),w=Ce(t,"md",u),v=De(s,i.value,60),p=He([...f,...w,...v],80);if(h.hidden=!1,p.length===0){h.innerHTML='<div class="hint">No matches. Try fewer tokens or looser spelling (fuzzy matches per line).</div>';return}let x=[];x.push(`<div class="hint">Whole source: whitespace tokens in order (may span lines). Per-line fuzzy ranking for typos. ${p.length} hit(s).</div>`);for(let y of p){let C=y.kind==="code"?`Code L${y.line+1}`:`Commentray L${y.line+1}`,qe=y.source==="ordered"?"ordered":"fuzzy";x.push(`<button type="button" class="hit" data-kind="${y.kind}" data-line="${String(y.line)}"><span class="meta">${C} <span class="src-tag">(${qe})</span></span><div class="snippet">${ke(Re(y.text,200))}</div></button>`)}h.innerHTML=x.join("")}h.addEventListener("click",u=>{let f=u.target;for(;f&&f!==h&&(!f.classList||!f.classList.contains("hit"));)f=f.parentElement;if(!f||!f.classList||!f.classList.contains("hit"))return;let w=f.getAttribute("data-kind"),v=parseInt(f.getAttribute("data-line")||"0",10);if(w==="code"){let p=document.getElementById(`code-line-${String(v)}`);p&&p.scrollIntoView({block:"nearest",behavior:"smooth"})}else{let p=r.length;if(p<=0)return;let x=v/Math.max(1,p-1),y=o.scrollHeight-o.clientHeight;o.scrollTo({top:x*Math.max(0,y),behavior:"smooth"})}}),i.addEventListener("input",()=>{clearTimeout(c),c=setTimeout(g,200)}),n.addEventListener("click",d),document.addEventListener("keydown",u=>{if(u.key!=="Escape")return;let f=i.value.trim().length>0,w=document.activeElement===i,v=!h.hidden;!f&&!w&&!v||(d(),w&&i.blur(),u.preventDefault())})}function Fe(a,e,t){let r=localStorage.getItem(a)==="1";t.checked=r,r&&e.classList.add("wrap"),t.addEventListener("change",()=>{t.checked?(e.classList.add("wrap"),localStorage.setItem(a,"1")):(e.classList.remove("wrap"),localStorage.setItem(a,"0"))})}function Qe(a,e){let t="none";a.addEventListener("scroll",()=>{t!=="doc"&&(t="code",e.scrollTop=be(a.scrollTop,a.scrollHeight,a.clientHeight,e.scrollHeight,e.clientHeight),t="none")},{passive:!0}),e.addEventListener("scroll",()=>{t!=="code"&&(t="doc",a.scrollTop=be(e.scrollTop,e.scrollHeight,e.clientHeight,a.scrollHeight,a.clientHeight),t="none")},{passive:!0})}function $e(a,e,t,r,s){let i=!1,n=s;function h(c){if(!i)return;let d=e.getBoundingClientRect(),g=c.clientX-d.left,u=Ne(g/d.width*100,15,85);n=u,t.style.flex=`0 0 ${u}%`}function o(){i=!1,window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",o),document.body.style.cursor="",document.body.style.userSelect="",localStorage.setItem(a,String(n))}r.addEventListener("mousedown",c=>{c.preventDefault(),i=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("mousemove",h),window.addEventListener("mouseup",o)})}function Ae(){let a="commentray.codeCommentrayStatic.splitPct",e="commentray.codeCommentrayStatic.wrap",t=document.getElementById("shell"),r=document.getElementById("code-pane"),s=document.getElementById("doc-pane"),i=document.getElementById("gutter"),n=document.getElementById("wrap-lines"),h=document.getElementById("search-q"),o=document.getElementById("search-clear"),c=document.getElementById("search-results");if(!t||!r||!s||!i||!n||!h||!o||!c)return;let d=Ee(r.getAttribute("data-raw-code-b64")||""),g=Ee(r.getAttribute("data-raw-md-b64")||""),u=g.split(`
4
- `),w=[...d.split(`
5
- `).map((y,C)=>({kind:"code",line:C,text:y})),...u.map((y,C)=>({kind:"md",line:C,text:y}))],v=K.createDefaultSearcher();v.indexEntities(w,y=>`${y.kind}:${y.line}`,y=>[y.text]),Oe({rawCode:d,rawMd:g,mdLines:u,searcher:v,searchInput:h,searchClear:o,searchResults:c,docPane:s});let p=parseFloat(localStorage.getItem(a)||"50"),x=Ne(Number.isFinite(p)?p:50,15,85);r.style.flex=`0 0 ${x}%`,Fe(e,r,n),$e(a,t,r,i,x),Qe(r,s)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Ae):Ae();})();
1
+ "use strict";(()=>{var T=class{static ToInt32Array(e){let t=new Int32Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e[r];return t}},O=class{static getHashCode(e){let t=5381,r=t;for(let n=0,s=e.length;n<s&&e[n]!="\0"&&(t=(t<<5)+t^e.charCodeAt(n),n!==s-1&&e[n+1]!=="\0");n+=2)r=(r<<5)+r^e.charCodeAt(n+1);return t+1566083941*r|0}},f=class{constructor(e){this.entries=void 0,this.entries=e!==void 0?e:new Map}add(e,t){if(this.entries.has(e))throw new Error(`A meta entry with key ${e} is already present.`);this.entries.set(e,t)}get(e){return this.entries.get(e)}get allEntries(){return this.entries}toJSON(){return{entries:Object.fromEntries(this.entries)}}},P=class{static mergeMeta(e){if(e.length===0)return new f;if(e.length===1)return e[0];let t=new Map;for(let n of e)for(let[s,a]of n.allEntries){let o=t.get(s);o===void 0?t.set(s,[a]):o.push(a)}let r=new Map;for(let[n,s]of t)if(s.length!==1){if(s.every(a=>typeof a=="number")){let a=s.reduce((o,c)=>o+c,0);r.set(n,a);continue}for(let a=0;a<s.length;a++)r.set(`${n}_${a}`,s[a])}else r.set(n,s[0]);return new f(r)}},q=class{static isSurrogate(e){let t=e.charCodeAt(0);return t>=55296&&t<=57343}static isAlphanumeric(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122}static isLowerAlpha(e){let t=e.charCodeAt(0);return t>=97&&t<=122}},$=class{constructor(e,t){this.usableSearchers=void 0,this.usableSearchers=new Map;for(let r of t)e.includes(r.type)&&this.usableSearchers.set(r.type,r)}has(e){return this.usableSearchers.has(e)}minQuality(e){return this.usableSearchers.get(e).minQuality}spec(e){return this.usableSearchers.get(e)}},M=class{constructor(e,t,r){this.matches=void 0,this.query=void 0,this.meta=void 0,this.matches=e,this.query=t,this.meta=r}},g,R;(function(i){i.Fuzzy="fuzzy",i.Substring="substring",i.Prefix="prefix"})(g||(g={}));var k=class{constructor(e,t){this.type=void 0,this.minQuality=void 0,this.type=e,this.minQuality=Math.max(0,t)}},N=class extends k{constructor(e){super(g.Fuzzy,e)}},L=class extends k{constructor(e){super(g.Substring,e)}},H=class extends k{constructor(e){super(g.Prefix,e)}},E=class{constructor(e,t=10,r=[new N(.3),new L(0),new H(0)]){this.string=void 0,this.topN=void 0,this.searchers=void 0,this.string=e,this.topN=Math.max(0,t),this.searchers=r}},Z=class{constructor(e,t){this.removedEntities=void 0,this.meta=void 0,this.removedEntities=e,this.meta=t}},ee=class{static mergeResults(e,t){let r=e.query,n=this.mergeMatches(e.matches,t.matches,r.topN),s=P.mergeMeta([e.meta,t.meta]);return new M(n,r,s)}static mergeMatches(e,t,r){if(t.length===0)return e;if(e.length===0)return t;let n=[...e,...t];return n.sort((s,a)=>s.quality>a.quality?-1:s.quality<a.quality?1:0),n.length<=r?n:n.slice(0,r)}},te=class{constructor(e,t,r){this.maxQueryLength=void 0,this.mainSearcher=void 0,this.secondarySearcher=void 0,this.maxQueryLength=e,this.mainSearcher=t,this.secondarySearcher=r}indexEntities(e,t,r){return this.secondarySearcher.indexEntities([],t,r),this.mainSearcher.indexEntities(e,t,r)}getMatches(e){return e.string?(e.string.length>this.maxQueryLength&&(e=new E(e.string.substring(0,this.maxQueryLength),e.topN,e.searchers)),ee.mergeResults(this.mainSearcher.getMatches(e),this.secondarySearcher.getMatches(e))):new M([],e,new f)}tryGetTerms(e){let t=this.mainSearcher.tryGetTerms(e);return t!==null?t:this.secondarySearcher.tryGetTerms(e)}getTerms(){return this.mainSearcher.getTerms().concat(this.secondarySearcher.getTerms())}tryGetEntity(e){var t,r;return(t=(r=this.mainSearcher.tryGetEntity(e))!=null?r:this.secondarySearcher.tryGetEntity(e))!=null?t:null}getEntities(){return this.mainSearcher.getEntities().concat(this.secondarySearcher.getEntities())}removeEntities(e){let t=[];for(let n=0,s=e.length;n<s;n++)(this.mainSearcher.removeEntity(e[n])||this.secondarySearcher.removeEntity(e[n]))&&t.push(e[n]);let r=new f;return new Z(t,r)}upsertEntities(e,t,r){let n=[],s=[];for(let a=0,o=e.length;a<o;a++){let c=e[a],h=t(c);this.tryUpdate(c,h,r)||(n.push(h),s.push(c))}return this.removeEntities(n),s.length>0?this.reindexSecondarySearcher(s,t,r):new f}reindexSecondarySearcher(e,t,r){let n=this.secondarySearcher.getEntities().concat(e);return this.secondarySearcher.indexEntities(n,t,r)}tryUpdate(e,t,r){return this.tryUpdateSearcher(e,t,r,this.mainSearcher)||this.tryUpdateSearcher(e,t,r,this.secondarySearcher)}tryUpdateSearcher(e,t,r,n){let s=n.tryGetTerms(t);if(s===null)return!1;if(this.termsAreEqual(s,r(e))){if(!n.replaceEntity(t,e,t))throw new Error(`Entity with id ${t} was not present.`);return!0}return!1}termsAreEqual(e,t){return e===t||e!=null&&t!=null&&e.length===t.length&&e.every((r,n)=>r===t[n])}removeEntity(e){return this.mainSearcher.removeEntity(e)||this.secondarySearcher.removeEntity(e)}replaceEntity(e,t,r){return this.mainSearcher.replaceEntity(e,t,r)||this.secondarySearcher.replaceEntity(e,t,r)}save(e){this.mainSearcher.save(e),this.secondarySearcher.save(e)}load(e){this.mainSearcher.load(e),this.secondarySearcher.load(e)}},re=class{constructor(e){this.dynamicSearcher=void 0,this.dynamicSearcher=e}removeEntities(e){let t=performance.now(),r=this.dynamicSearcher.removeEntities(e),n=Math.round(performance.now()-t);return r.meta.add("removalDuration",n),r}upsertEntities(e,t,r){let n=performance.now(),s=this.dynamicSearcher.upsertEntities(e,t,r),a=Math.round(performance.now()-n);return s.add("upsertDuration",a),s}indexEntities(e,t,r){let n=performance.now(),s=this.dynamicSearcher.indexEntities(e,t,r),a=Math.round(performance.now()-n);return s.add("indexingDurationTotal",a),s}getMatches(e){let t=performance.now(),r=this.dynamicSearcher.getMatches(e),n=Math.round(performance.now()-t);return r.meta.add("queryDuration",n),r}tryGetEntity(e){return this.dynamicSearcher.tryGetEntity(e)}getEntities(){return this.dynamicSearcher.getEntities()}tryGetTerms(e){return this.dynamicSearcher.tryGetTerms(e)}getTerms(){return this.dynamicSearcher.getTerms()}removeEntity(e){return this.dynamicSearcher.removeEntity(e)}replaceEntity(e,t,r){return this.dynamicSearcher.replaceEntity(e,t,r)}save(e){this.dynamicSearcher.save(e)}load(e){this.dynamicSearcher.load(e)}},ne=class{constructor(e,t,r){this.entity=void 0,this.quality=void 0,this.matchedString=void 0,this.entity=e,this.quality=t,this.matchedString=r}},ie=class{constructor(e){this.query=void 0,this.matchedIndexes=new Set,this.matches=[],this.meta=[],this.query=e}},F=class{constructor(e,t=0,r){this.string=void 0,this.minQuality=void 0,this.searcherType=void 0,this.string=e,this.minQuality=Math.max(0,Math.min(1,t)),this.searcherType=r}},se=class{constructor(e,t){this.stringSearcher=void 0,this.searcherTypes=void 0,this.entities=void 0,this.idToIndex=void 0,this.terms=void 0,this.termIndexToEntityIndex=void 0,this.entityIndexToFirstTermIndex=void 0,this.searchersAndQualityOffsets=[{searcherType:g.Prefix,qualityOffset:2},{searcherType:g.Substring,qualityOffset:1},{searcherType:g.Fuzzy,qualityOffset:0}],this.stringSearcher=e,this.searcherTypes=t,this.entities=[],this.idToIndex=new Map,this.terms=[],this.termIndexToEntityIndex=new Int32Array(0),this.entityIndexToFirstTermIndex=new Int32Array(0)}indexEntities(e,t,r){this.entities=[...e],this.idToIndex=new Map,this.terms=[];let n=[],s=[];for(let o=0,c=e.length;o<c;o++){this.idToIndex.set(t(e[o]),o);let h=r(e[o]);s.push(this.terms.length),this.terms.push(...h),n.push(...h.map(()=>o))}this.termIndexToEntityIndex=T.ToInt32Array(n),this.entityIndexToFirstTermIndex=T.ToInt32Array(s);let a=this.stringSearcher.index(this.terms);return a.add("numberOfEntities",this.entities.length),a.add("numberOfTerms",this.terms.length),a}getMatches(e){let t=new ie(e),r=new $(this.searcherTypes,e.searchers);for(let{searcherType:s,qualityOffset:a}of this.searchersAndQualityOffsets){if(e.topN==t.matches.length)break;r.has(s)&&this.addMatchesFromSearcher(t,r.spec(s),a)}let n=P.mergeMeta(t.meta);return new M(t.matches,e,n)}addMatchesFromSearcher(e,t,r){let n=Math.max(0,t.minQuality-r);if(n>1)return;let s=new F(e.query.string,n,t.type),a=this.stringSearcher.getMatches(s);this.addMatchesFromResult(e,a,r)}addMatchesFromResult(e,t,r){if(e.meta.push(t.meta),e.query.topN!==0)for(let n=0,s=t.matches.length;n<s;n++){let a=t.matches[n],o=this.termIndexToEntityIndex[a.index];if(!e.matchedIndexes.has(o)&&this.entities[o]!==null&&(e.matchedIndexes.add(o),e.matches.push(new ne(this.entities[o],a.quality+r,this.terms[a.index])),e.matches.length===e.query.topN))break}}tryGetEntity(e){let t=this.idToIndex.get(e);return t===void 0?null:this.entities[t]}getEntities(){return this.entities.filter(e=>e!==null)}tryGetTerms(e){let t=this.idToIndex.get(e);return t===void 0?null:this.terms.slice(this.entityIndexToFirstTermIndex[t],t===this.entities.length-1?this.terms.length:this.entityIndexToFirstTermIndex[t+1])}getTerms(){let e=[];for(let t=0,r=this.termIndexToEntityIndex.length;t<r;t++)this.entities[this.termIndexToEntityIndex[t]]!==null&&e.push(this.terms[t]);return e}removeEntity(e){let t=this.idToIndex.get(e);return t!==void 0&&(this.entities[t]=null,this.idToIndex.delete(e),!0)}replaceEntity(e,t,r){let n=this.idToIndex.get(e);return n!==void 0&&(this.entities[n]=t,this.idToIndex.delete(e),this.idToIndex.set(r,n),!0)}save(e){e.add(this.entities),e.add(this.idToIndex),e.add(this.terms),e.add(this.termIndexToEntityIndex),e.add(this.entityIndexToFirstTermIndex),this.stringSearcher.save(e)}load(e){this.entities=e.get(),this.idToIndex=e.get(),this.terms=e.get(),this.termIndexToEntityIndex=e.get(),this.entityIndexToFirstTermIndex=e.get(),this.stringSearcher.load(e)}},w=class{constructor(e,t){this.strings=void 0,this.meta=void 0,this.strings=e,this.meta=t}},ae=class{constructor(e,t){this.treatCharacterAsSpace=void 0,this.allowCharacter=void 0,this.numberOfSurrogateCharacters=0,this.treatCharacterAsSpace=e,this.allowCharacter=t}normalize(e){let t=new Array(e.length),r=0,n=!1,s=!1;for(let a=0,o=e.length;a<o;a++){let c=this.getNormalizedCharacter(e[a]);c!==""&&(c===" "?n=!0:(n&&s&&(t[r++]=" "),t[r++]=c,s=!0,n=!1))}return s?t.join(""):""}getNormalizedCharacter(e){return e===" "||this.treatCharacterAsSpace(e)?" ":this.isSurrogate(e)||!this.allowCharacter(e)?"":e.toLowerCase()}isSurrogate(e){return!!q.isSurrogate(e)&&(this.numberOfSurrogateCharacters++,!0)}normalizeBulk(e){this.numberOfSurrogateCharacters=0;let t=e.map(n=>this.normalize(n)),r=new f;return r.add("numberOfSurrogateCharacters",this.numberOfSurrogateCharacters),new w(t,r)}},oe=class{constructor(e){this.normalizationFunction=void 0,this.normalizationFunction=e}normalize(e){return this.normalizationFunction(e)}normalizeBulk(e){let t=e.map(r=>this.normalize(r));return new w(t,new f)}},ce=class{constructor(e){this.normalizers=void 0,this.normalizers=e}normalize(e){for(let t=0,r=this.normalizers.length;t<r;t++)e=this.normalizers[t].normalize(e);return e}normalizeBulk(e){let t=new f;for(let r=0,n=this.normalizers.length;r<n;r++){let s=this.normalizers[r].normalizeBulk(e);e=s.strings;for(let a of s.meta.allEntries)t.add(a[0],a[1])}return new w(e,t)}},he=class{normalize(e){return e||""}normalizeBulk(e){let t=e.map(r=>this.normalize(r));return new w(t,new f)}},le=class{constructor(e,t){this.normalizeVariationsAndInput=void 0,this.replacements=void 0,this.normalizeVariationsAndInput=t,this.replacements=[];for(let r of e){let n=new Map;for(let[s,a]of r)for(let o of a){let c=t(o);n.set(c,s)}this.replacements.push(n)}}normalize(e){e=this.normalizeVariationsAndInput(e);let t=new Array(e.length),r=0;for(let n=0,s=e.length;n<s;n++)for(let a of this.replacements){let o=a.get(e[n]);if(o!==void 0){t[r++]=o;break}t[r++]=e[n]}return t.join("")}normalizeBulk(e){let t=e.map(r=>this.normalize(r));return new w(t,new f)}},ue=class{static create(e){let t=new he,r=new le(e.replacements,a=>a.toLowerCase().normalize("NFKC")),n=new oe(a=>a.normalize("NFKD")),s=new ae(e.treatCharacterAsSpace,e.allowCharacter);return new ce([t,r,n,s])}},D=class{constructor(e,t){this.index=void 0,this.quality=void 0,this.index=e,this.quality=t}},S=class{constructor(e,t,r){this.matches=void 0,this.query=void 0,this.meta=void 0,this.matches=e,this.query=t,this.meta=r}},de=class{constructor(e){this.stringSearcher=void 0,this.distinctMapping=void 0,this.sortMapping=void 0,this.stringSearcher=e,this.distinctMapping=new Int32Array(0),this.sortMapping=new Int32Array(0)}index(e){let t=e.map((c,h)=>({term:c,index:h}));t.sort((c,h)=>c.term<h.term?-1:c.term>h.term?1:0),this.sortMapping=new Int32Array(t.length);for(let c=0,h=t.length;c<h;c++)this.sortMapping[c]=t[c].index;let r=[],n=[],s=0,a=null;for(let c=0,h=t.length;c<h;c++){let l=t[c].term;l!=a&&(r[s]=l,n[s]=c,s++),a=l}n[s++]=t.length,this.distinctMapping=T.ToInt32Array(n);let o=this.stringSearcher.index(r);return o.add("numberOfDistinctTerms",r.length),o}getMatches(e){let t=this.stringSearcher.getMatches(e),r=new Array(t.matches.length),n=0;return t.matches.forEach(s=>{let a=this.distinctMapping[s.index+1];for(let o=this.distinctMapping[s.index];o<a;o++)r[n++]=new D(this.sortMapping[o],s.quality)}),new S(r,e,t.meta)}save(e){e.add(this.distinctMapping),e.add(this.sortMapping),this.stringSearcher.save(e)}load(e){this.distinctMapping=e.get(),this.sortMapping=e.get(),this.stringSearcher.load(e)}},me=class{constructor(e,t){this.entitySearcher=void 0,this.searcherTypes=void 0,this.entitySearcher=e,this.searcherTypes=t}indexEntities(e,t,r){return this.entitySearcher.indexEntities(e,t,r)}getMatches(e){let t=new $(this.searcherTypes,e.searchers);if(e.topN>200)return this.entitySearcher.getMatches(e);if(e.string.length<=3&&t.has(g.Prefix)&&t.minQuality(g.Prefix)<2.2){let r=new E(e.string,e.topN,[new H(2.3)]),n=this.entitySearcher.getMatches(r);if(n.matches.length==e.topN)return new M(n.matches,e,n.meta)}if(e.string.length<=3&&!t.has(g.Prefix)&&t.has(g.Substring)&&t.minQuality(g.Substring)<1.2){let r=new E(e.string,e.topN,[new L(1.3)]),n=this.entitySearcher.getMatches(r);if(n.matches.length==e.topN)return new M(n.matches,e,n.meta)}return this.entitySearcher.getMatches(e)}tryGetEntity(e){return this.entitySearcher.tryGetEntity(e)}getEntities(){return this.entitySearcher.getEntities()}tryGetTerms(e){return this.entitySearcher.tryGetTerms(e)}getTerms(){return this.entitySearcher.getTerms()}removeEntity(e){return this.entitySearcher.removeEntity(e)}replaceEntity(e,t,r){return this.entitySearcher.replaceEntity(e,t,r)}save(e){return this.entitySearcher.save(e)}load(e){return this.entitySearcher.load(e)}},Q=class{constructor(){this.ids=void 0,this.frequencies=void 0,this.ids=[],this.frequencies=[]}addId(e,t){this.ids.push(e),this.frequencies.push(t)}seal(){this.ids=T.ToInt32Array(this.ids),this.frequencies=T.ToInt32Array(this.frequencies)}get length(){return this.ids.length}save(e){e.add(this.ids),e.add(this.frequencies)}load(e){this.ids=e.get(),this.frequencies=e.get()}},A=class{constructor(){this.ngramToTermIds=void 0,this.ngramToTermIds=new Map}add(e,t,r){let n=this.ngramToTermIds.get(e);n||(n=new Q,this.ngramToTermIds.set(e,n)),n.addId(t,r)}seal(){for(let e of this.ngramToTermIds.values())e.seal()}getIds(e){return this.ngramToTermIds.get(e)}get size(){return this.ngramToTermIds.size}save(e){e.add(this.ngramToTermIds.size);for(let[t,r]of this.ngramToTermIds)e.add(t),r.save(e)}load(e){let t=e.get();for(let r=0;r<t;r++){let n=e.get(),s=new Q;s.load(e),this.ngramToTermIds.set(n,s)}}},ge=class{static ComputeJaccardCoefficient(e,t,r){return r/(e+t-r)}static ComputeOverlapMaxCoefficient(e,t,r){return r/Math.max(e,t)}},fe=class{constructor(e){this.ngramComputer=void 0,this.invertedIndex=void 0,this.numberOfNgrams=void 0,this.commonNgramCounts=void 0,this.ngramComputer=e,this.invertedIndex=new A,this.numberOfNgrams=new Int32Array(0),this.commonNgramCounts=new Int32Array(0)}index(e){let t=performance.now();this.invertedIndex=new A,this.commonNgramCounts=new Int32Array(e.length),this.numberOfNgrams=new Int32Array(e.length);let r=0;for(let a=0,o=e.length;a<o;a++){let c=e[a];if(!this.isValidTerm(c)){this.numberOfNgrams[a]=0,r++;continue}let h=this.ngramComputer.computeNgrams(c);this.numberOfNgrams[a]=h.length;let l=this.getNgramsToFrequency(h);for(let[u,m]of l)this.invertedIndex.add(u,a,m)}this.invertedIndex.seal();let n=Math.round(performance.now()-t),s=new f;return s.add("numberOfInvalidTerms",r),s.add("indexingDurationFuzzySearcher",n),s}isValidTerm(e){return e!=null&&e.trim()!==""}getMatches(e){if(this.invertedIndex.size===0)return new S([],e,new f);let t=this.ngramComputer.computeNgrams(e.string),r=this.getNgramsToFrequency(t),n=t.length;this.computeCommonNgramCounts(r);let s=this.getMatchesFromCommonNgrams(n,e.minQuality);return new S(s,e,new f)}computeCommonNgramCounts(e){this.commonNgramCounts.fill(0);for(let[t,r]of e){let n=this.invertedIndex.getIds(t);if(n!=null)for(let s=0,a=n.length;s<a;s++)this.commonNgramCounts[n.ids[s]]+=Math.min(r,n.frequencies[s])}}getNgramsToFrequency(e){let t=new Map;for(let r=0,n=e.length;r<n;r++){let s=e[r],a=t.get(s);t.set(s,a!==void 0?a+1:1)}return t}getMatchesFromCommonNgrams(e,t){let r=[];for(let n=0,s=this.numberOfNgrams.length;n<s;n++){let a=ge.ComputeOverlapMaxCoefficient(e,this.numberOfNgrams[n],this.commonNgramCounts[n]);a>t&&r.push(new D(n,a))}return r}save(e){this.invertedIndex.save(e),e.add(this.numberOfNgrams)}load(e){this.invertedIndex=new A,this.invertedIndex.load(e),this.numberOfNgrams=e.get(),this.commonNgramCounts=new Int32Array(this.numberOfNgrams.length)}},pe=class{constructor(e,t){this.stringSearcher=void 0,this.penaltyFactor=void 0,this.hashCodes=void 0,this.stringSearcher=e,this.penaltyFactor=1-t,this.hashCodes=new Int32Array(0)}index(e){this.hashCodes=new Int32Array(e.length);for(let t=0,r=e.length;t<r;t++)this.hashCodes[t]=O.getHashCode(e[t]);return this.stringSearcher.index(e)}getMatches(e){let t=O.getHashCode(e.string),r=this.stringSearcher.getMatches(e),n=r.matches.map(s=>this.penalizeMatch(s,t)).filter(s=>s.quality>=e.minQuality);return new S(n,r.query,r.meta)}penalizeMatch(e,t){return e.quality*=this.hashCodes[e.index]===t?1:this.penaltyFactor,e}save(e){e.add(this.hashCodes),this.stringSearcher.save(e)}load(e){this.hashCodes=e.get(),this.stringSearcher.load(e)}},ye=class{constructor(e,t){this.ngramN=void 0,this.transformNgram=void 0,this.ngramN=e,this.transformNgram=t??(r=>r)}computeNgrams(e){if(e.length===0)return[];if(e.length<=this.ngramN){let r=this.transformNgram(e);return r?[r]:[]}let t=[];for(let r=0,n=this.maximumNumberOfNgrams(e);r<n;r++){let s=this.transformNgram(e.substring(r,r+this.ngramN));s&&t.push(s)}return t}maximumNumberOfNgrams(e){return Math.max(e.length-this.ngramN+1,e.length>0?1:0)}},Se=class{constructor(e,t,r){this.paddingLeft=void 0,this.paddingRight=void 0,this.paddingMiddle=void 0,this.paddingLeft=e,this.paddingRight=t,this.paddingMiddle=r}normalize(e){return e&&`${this.paddingLeft}${e.split(" ").join(this.paddingMiddle)}${this.paddingRight}`}normalizeBulk(e){let t=e.map(n=>this.normalize(n)),r=new f;return new w(t,r)}},G=class{};G.Value=new Map([["a",["\u1D8F","\u2C65","\u0251","\u1D00","\u0250","\u0252"]],["aa",["\xE5","\uA733"]],["ae",["\xE4","\xE6","\u1D01","\u1D2D","\u1D46","\u01FD","\u01E3","\u1D02"]],["ao",["\uA735"]],["au",["\uA737"]],["av",["\uA739","\uA73B"]],["ay",["\uA73D"]],["b",["\u0180","\u0253","\u0183","\u1D6C","\u1D80","\u0299"]],["c",["\u023C","\u0188","\u0255","\u1D04","\uA73F","\u2184"]],["d",["\u0111","\xF0","\u0256","\u0257","\u018C","\u1D6D","\u1D81","\u1D91","\u0221","\u1D05","\uA77A"]],["db",["\u0238"]],["e",["\u1D92","\u0247","\u2C78","\u1D07","\u0259","\u01DD","\u025B"]],["eo",["\u1D14"]],["f",["\u0192","\u1D6E","\u1D82","\uA730","\uA77C"]],["g",["\u01E5","\u0260","\u1D83","\u0262","\u021D","\u014B","\uA7A1","\u1D79","\uA77F"]],["h",["\u0127","\u2C68","\u0266","\u029C","\u0303","\u0267","\u2C76","\u0265"]],["hv",["\u0195"]],["i",["\u0268","\u1D7B","\u1D96","\u0131","\u026A","\u0269"]],["j",["\u0249","\u0237","\u029D","\u025F","\u0284","\u1D0A"]],["k",["\u0199","\u2C6A","\u1D84","\uA741","\u1D0B","\uA743","\uA745","\uA7A3"]],["l",["\u0142","\u019A","\u2C61","\u026B","\u026C","\u1D85","\u026D","\u0234","\u029F","\uA749","\uA781","\uA747"]],["m",["\u1D6F","\u1D86","\u0271","\u1D0D","\u026F"]],["n",["\u0272","\u019E","\u1D70","\u1D87","\u0273","\u0235","\u0274","\uA791","\uA7A5"]],["o",["\xF8","\u01FF","\u0275","\u0254","\u2C7A","\u1D0F","\uA74B","\uA74D"]],["oe",["\xF6","\u0153"]],["oi",["\u01A3"]],["oo",["\uA74F"]],["ou",["\u0223"]],["p",["\u1D7D","\u01A5","\u1D71","\u1D88","\u1D18","\u01BF","\uA751","\uA753","\uA755"]],["q",["\u024B","\u02A0","\uA757","\uA759"]],["qp",["\u0239"]],["r",["\u024D","\u027D","\uA75B","\u1D72","\u1D89","\u027C","\u027E","\u1D73","\u0280","\u0279","\u0281","\uA7A7","\uA783"]],["s",["\u1D74","\u1D8A","\u0282","\u023F","\uA731","\u0283","\uA7A9","\uA785","\u017F"]],["ss",["\xDF"]],["t",["\u0167","\u2C66","\u01AD","\u0288","\u1D75","\u01AB","\u0236","\u1D1B","\uA787"]],["th",["\xFE"]],["tz",["\uA729"]],["u",["\u0289","\u028A","\u1D7E","\u1D1C","\u1D99"]],["ue",["\xFC","\u1D6B"]],["v",["\u028B","\u1D8C","\u2C71","\u2C74","\u1D20","\u028C","\uA75F"]],["vy",["\uA761"]],["w",["\u2C73","\u1D21","\u028D"]],["x",["\u1D8D"]],["y",["\u024F","\u01B4","\u028F","\u1EFF"]],["z",["\u01B6","\u0225","\u2C6C","\u1D76","\u1D8E","\u0290","\u0291","\u0240","\u1D22","\u0292","\u01B9","\uA763"]]]);var U=class i{constructor(e,t,r){this.replacements=void 0,this.treatCharacterAsSpace=void 0,this.allowCharacter=void 0,this.replacements=e,this.treatCharacterAsSpace=t,this.allowCharacter=r}static createDefaultConfig(){let e=new Set(["_","-","\u2013","/",","," "]);return new i([G.Value],t=>e.has(t),t=>q.isAlphanumeric(t))}},j=class{constructor(e,t,r="normalizationDuration"){this.stringSearcher=void 0,this.normalizer=void 0,this.normalizationDurationMetaKey=void 0,this.stringSearcher=e,this.normalizer=t,this.normalizationDurationMetaKey=r}index(e){let t=performance.now(),r=this.normalizer.normalizeBulk(e),n=Math.round(performance.now()-t),s=this.stringSearcher.index(r.strings);s.add(this.normalizationDurationMetaKey,n);for(let a of r.meta.allEntries)s.add(a[0],a[1]);return s}getMatches(e){let t=new F(this.normalizer.normalize(e.string),e.minQuality,e.searcherType),r=this.stringSearcher.getMatches(t);return new S(r.matches,e,r.meta)}save(e){this.stringSearcher.save(e)}load(e){this.stringSearcher.load(e)}},we=class{constructor(e){this.suffixArraySearcher=void 0,this.suffixArraySearcher=e}index(e){return this.suffixArraySearcher.index(e)}getMatches(e){if(!e.string)return new S([],e,new f);let t=this.modifyQueryString(e.string),r=new F(t,e.minQuality,e.searcherType);return this.suffixArraySearcher.getMatches(r,e.string.length)}modifyQueryString(e){return`${this.suffixArraySearcher.separator}${e}`}save(e){this.suffixArraySearcher.save(e)}load(e){this.suffixArraySearcher.load(e)}},ve=class{constructor(e,t,r){this.prefixSearcher=void 0,this.substringSearcher=void 0,this.fuzzySearcher=void 0,this.prefixSearcher=e,this.substringSearcher=t,this.fuzzySearcher=r}index(e){let t=[];if(this.prefixSearcher&&!this.substringSearcher){let r=this.prefixSearcher.index(e);t.push(r)}if(this.substringSearcher){let r=this.substringSearcher.index(e);t.push(r)}if(this.fuzzySearcher){let r=this.fuzzySearcher.index(e);t.push(r)}return P.mergeMeta(t)}getMatches(e){if(!e.searcherType)throw new Error("SearcherSwitch requires a searcher type.");switch(e.searcherType){case g.Prefix:if(!this.prefixSearcher)throw new Error("No prefix searcher has been indexed.");return this.prefixSearcher.getMatches(e);case g.Substring:if(!this.substringSearcher)throw new Error("No substring searcher has been indexed.");return this.substringSearcher.getMatches(e);case g.Fuzzy:if(!this.fuzzySearcher)throw new Error("No fuzzy searcher has been indexed.");return this.fuzzySearcher.getMatches(e);default:throw new Error(`Unknown searcher type: ${e.searcherType}`)}}save(e){this.prefixSearcher&&!this.substringSearcher&&this.prefixSearcher.save(e),this.substringSearcher&&this.substringSearcher.save(e),this.fuzzySearcher&&this.fuzzySearcher.save(e)}load(e){this.prefixSearcher&&!this.substringSearcher&&this.prefixSearcher.load(e),this.substringSearcher&&this.substringSearcher.load(e),this.fuzzySearcher&&this.fuzzySearcher.load(e)}};(function(i){i.QualityAndIndex="qualityAndIndex",i.QualityAndMatchedString="qualityAndMatchedString"})(R||(R={}));var be=class{constructor(e,t){this.sortOrder=void 0,this.entitySearcher=void 0,this.collator=new Intl.Collator(void 0,{numeric:!0}),this.sortOrder=e,this.entitySearcher=t}indexEntities(e,t,r){return this.entitySearcher.indexEntities(e,t,r)}getMatches(e){let t=this.entitySearcher.getMatches(e);switch(this.sortOrder){case R.QualityAndIndex:return t;case R.QualityAndMatchedString:return this.sortMatchesByQualityAndMatchedString(t.matches),t;default:throw new Error(`Unsupported sort order: ${this.sortOrder}`)}}sortMatchesByQualityAndMatchedString(e){e.sort((t,r)=>t.quality>r.quality?-1:t.quality<r.quality?1:this.collator.compare(t.matchedString,r.matchedString))}tryGetEntity(e){return this.entitySearcher.tryGetEntity(e)}getEntities(){return this.entitySearcher.getEntities()}tryGetTerms(e){return this.entitySearcher.tryGetTerms(e)}getTerms(){return this.entitySearcher.getTerms()}save(e){this.entitySearcher.save(e)}load(e){this.entitySearcher.load(e)}removeEntity(e){return this.entitySearcher.removeEntity(e)}replaceEntity(e,t,r){return this.entitySearcher.replaceEntity(e,t,r)}},xe=class{constructor(e){this.stringSearcher=void 0,this.stringSearcher=e}index(e){return this.stringSearcher.index(e)}getMatches(e){let t=this.stringSearcher.getMatches(e);return t.matches.sort(this.compareMatchesByQualityAndIndex),t}compareMatchesByQualityAndIndex(e,t){return e.quality>t.quality?-1:e.quality<t.quality?1:e.index<t.index?-1:e.index>t.index?1:0}save(e){this.stringSearcher.save(e)}load(e){this.stringSearcher.load(e)}},B=class{static compareOrdinal(e,t,r,n,s){let a=Math.min(t+s,e.length),o=Math.min(n+s,r.length),c=t,h=n;for(;c<a&&h<o;){let m=e.charCodeAt(c),d=r.charCodeAt(h);if(m<d)return-1;if(m>d)return 1;c++,h++}let l=a-t,u=o-n;return l===u?0:l<u?-1:1}},Te=class i{static create(e){if(e==null)throw new Error("Input string cannot be null.");let t=new i(e);return t.FormInitialChains(),t.BuildSufixArray(),t.sa}constructor(e){this.inputString=void 0,this.eoc=2147483647,this.sa=void 0,this.isa=void 0,this.chainHeadsDict=void 0,this.chainStack=[],this.subChains=[],this.nextRank=1,this.inputString=e;let t=e.length;this.sa=new Int32Array(t),this.isa=new Int32Array(t),this.chainHeadsDict=new Map}FormInitialChains(){this.FindInitialChains(),this.SortAndPushSubchains()}FindInitialChains(){for(let e=0;e<this.inputString.length;e++){let t=this.inputString.charCodeAt(e),r=this.chainHeadsDict.get(t);this.isa[e]=r!==void 0?r:this.eoc,this.chainHeadsDict.set(t,e)}for(let e of this.chainHeadsDict.values()){let t=new W(e,1);this.subChains.push(t)}}BuildSufixArray(){for(;this.chainStack.length>0;){let e=this.chainStack.pop();this.isa[e.head]===this.eoc?this.RankSuffix(e.head):this.RefineChainWithInductionSorting(e)}}RankSuffix(e){this.isa[e]=-this.nextRank,this.sa[this.nextRank-1]=e,this.nextRank++}RefineChainWithInductionSorting(e){let t=[];for(this.chainHeadsDict.clear(),this.subChains=[];e.head!==this.eoc;){let r=this.isa[e.head];if(e.head+e.length>this.inputString.length-1)this.RankSuffix(e.head);else if(this.isa[e.head+e.length]<0){let n=new Me(e.head,-this.isa[e.head+e.length]);t.push(n)}else this.ExtendChain(e);e.head=r}this.SortAndPushSubchains(),this.SortAndRankNotedSuffixes(t)}ExtendChain(e){let t=this.inputString.charCodeAt(e.head+e.length);if(this.chainHeadsDict.has(t))this.isa[this.chainHeadsDict.get(t)]=e.head,this.isa[e.head]=this.eoc;else{this.isa[e.head]=this.eoc;let r=new W(e.head,e.length+1);this.subChains.push(r)}this.chainHeadsDict.set(t,e.head)}SortAndRankNotedSuffixes(e){e.sort((t,r)=>t.rank-r.rank);for(let t=0;t<e.length;t++)this.RankSuffix(e[t].head)}SortAndPushSubchains(){this.subChains.sort((e,t)=>{let r=Math.min(e.length,t.length);return B.compareOrdinal(this.inputString,e.head,this.inputString,t.head,r)});for(let e=this.subChains.length-1;e>=0;e--)this.chainStack.push(this.subChains[e])}},Me=class{constructor(e,t){this.head=void 0,this.rank=void 0,this.head=e,this.rank=t}},W=class{constructor(e,t){this.head=void 0,this.length=void 0,this.head=e,this.length=t}},Ee=class{constructor(e){this.separator=void 0,this.str=void 0,this.suffixArray=void 0,this.indexToTermIndex=void 0,this.termLengths=void 0,this.separator=e,this.str="",this.suffixArray=new Int32Array(0),this.indexToTermIndex=new Int32Array(0),this.termLengths=new Int32Array(0)}index(e){let t=performance.now();this.str=e.length>0?this.separator+e.join(this.separator)+this.separator:"",this.suffixArray=Te.create(this.str),this.indexToTermIndex=new Int32Array(this.suffixArray.length),this.termLengths=new Int32Array(e.length);let r=0;for(let a=0;a<e.length;a++){this.termLengths[a]=e[a].length;for(let o=0;o<=e[a].length;o++)this.indexToTermIndex[r++]=a}this.indexToTermIndex[r++]=-1;let n=Math.round(performance.now()-t),s=new f;return s.add("indexingDurationSuffixArraySearcher",n),s}getMatches(e,t){if(!e.string)return new S([],e,new f);let[r,n]=this.GetPositionsInSuffixArray(e.string),s=new Int32Array(n-r),a=new Set,o=0;for(let l=r;l<n;l++){let u=this.indexToTermIndex[this.suffixArray[l]];a.has(u)||(a.add(u),s[o++]=u)}let c=[];t=t??e.string.length;let h=0;for(let l=0;l<o;l++)h=this.computeQuality(t,this.termLengths[s[l]]),h>e.minQuality&&c.push(new D(s[l],h));return new S(c,e,new f)}computeQuality(e,t){return e/t}GetPositionsInSuffixArray(e){let t=0,r=this.suffixArray.length,n=0;for(;t<r;)n=Math.floor((t+r)/2),B.compareOrdinal(e,0,this.str,this.suffixArray[n],e.length)>0?t=n+1:r=n;let s=t;for(r=this.suffixArray.length;t<r;)n=Math.floor((t+r)/2),B.compareOrdinal(e,0,this.str,this.suffixArray[n],e.length)==0?t=n+1:r=n;return[s,r]}save(e){e.add(this.str),e.add(this.suffixArray),e.add(this.indexToTermIndex),e.add(this.termLengths)}load(e){this.str=e.get(),this.suffixArray=e.get(),this.indexToTermIndex=e.get(),this.termLengths=e.get()}},J=class{static createSearcher(e){let t=this.createDefaultNormalizer(e),r=this.tryCreateFuzzySearcher(e),n=this.tryCreateSubstringSearcher(e),s=this.tryCreatePrefixSearcher(e,n),a=new ve(s,n,r);a=new de(a),a=new xe(a),a=new j(a,t,"normalizationDurationDefault");let o=new se(a,e.searcherTypes);return o=new me(o,e.searcherTypes),o=new be(e.sortOrder,o),o}static createDefaultNormalizer(e){let t=new Set;e.fuzzySearchConfig&&(e.fuzzySearchConfig.paddingLeft.split("").forEach(n=>t.add(n)),e.fuzzySearchConfig.paddingRight.split("").forEach(n=>t.add(n)),e.fuzzySearchConfig.paddingMiddle.split("").forEach(n=>t.add(n))),e.substringSearchConfig&&e.substringSearchConfig.suffixArraySeparator.split("").forEach(n=>t.add(n));let r=new U(e.normalizerConfig.replacements,e.normalizerConfig.treatCharacterAsSpace,n=>e.normalizerConfig.allowCharacter(n)&&!t.has(n));return ue.create(r)}static tryCreateFuzzySearcher(e){if(!e.searcherTypes.includes(g.Fuzzy))return null;if(e.fuzzySearchConfig===void 0)throw new Error("Unable to create fuzzy searcher: No fuzzy search config provided.");return this.createFuzzySearcher(e.fuzzySearchConfig)}static createFuzzySearcher(e){let t=new ye(e.ngramN,e.transformNgram),r=new Se(e.paddingLeft,e.paddingRight,e.paddingMiddle),n=new fe(t);return n=new pe(n,e.inequalityPenalty),n=new j(n,r,"normalizationDurationNgrams"),n}static tryCreateSubstringSearcher(e){if(!e.searcherTypes.includes(g.Substring))return null;if(e.substringSearchConfig===void 0)throw new Error("Unable to create substring searcher: No substring search config provided.");return this.createSubstringSearcher(e.substringSearchConfig)}static createSubstringSearcher(e){return new Ee(e.suffixArraySeparator)}static tryCreatePrefixSearcher(e,t){if(!e.searcherTypes.includes(g.Prefix))return null;if(e.substringSearchConfig===void 0)throw new Error("Unable to create prefix searcher: No substring search config provided.");return this.createPrefixSearcher(e.substringSearchConfig,t)}static createPrefixSearcher(e,t){return t===null&&(t=this.createSubstringSearcher(e)),new we(t)}},Ce=class i{constructor(e,t,r,n,s,a){this.paddingLeft=void 0,this.paddingRight=void 0,this.paddingMiddle=void 0,this.ngramN=void 0,this.transformNgram=void 0,this.inequalityPenalty=void 0,this.paddingLeft=e,this.paddingRight=t,this.paddingMiddle=r,this.ngramN=n,this.transformNgram=s,this.inequalityPenalty=a}static createDefaultConfig(){return new i("$$","!","!$$",3,e=>e.endsWith("$")?null:e.indexOf("$")===-1?e.split("").sort().join(""):e,.05)}};var Ie=class i{constructor(e){this.suffixArraySeparator=void 0,this.suffixArraySeparator=e}static createDefaultConfig(){return new i("$")}},Le=class i{constructor(e,t,r,n,s,a){this.searcherTypes=void 0,this.maxQueryLength=void 0,this.sortOrder=void 0,this.normalizerConfig=void 0,this.fuzzySearchConfig=void 0,this.substringSearchConfig=void 0,this.searcherTypes=e,this.maxQueryLength=t,this.sortOrder=r,this.normalizerConfig=n,this.fuzzySearchConfig=s,this.substringSearchConfig=a}static createDefaultConfig(){let e=[g.Fuzzy,g.Substring,g.Prefix],t=R.QualityAndMatchedString,r=U.createDefaultConfig(),n=Ce.createDefaultConfig(),s=Ie.createDefaultConfig();return new i(e,150,t,r,n,s)}},K=class{static createSearcher(e){let t=J.createSearcher(e),r=J.createSearcher(e),n=new te(e.maxQueryLength,t,r);return n=new re(n),n}static createDefaultSearcher(){let e=Le.createDefaultConfig();return this.createSearcher(e)}};function He(i,e){if(i.length===0)return null;let t=i.find(n=>n.sourceStart<=e&&e<=n.sourceEnd);if(t)return t.commentrayLine;if(e<i[0].sourceStart)return i[0].commentrayLine;let r=i[0];for(let n of i)if(n.sourceStart<=e)r=n;else break;return r.commentrayLine}function ze(i,e){if(i.length===0)return null;let t=i[0];for(let r of i)if(r.commentrayLine<=e)t=r;else break;return t.sourceStart-1}function C(i,e,t,r,n){let s=Math.max(0,e-t),a=Math.max(0,r-n);return s<=0?0:i/s*a}function v(i){let e=i.trim();if(e==="")return"";try{let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return new TextDecoder("utf-8",{fatal:!1}).decode(r)}catch{return""}}function Be(i,e){function t(r){let n=i.getAttribute(r);return n!==null&&n.trim()!==""?n:e.getAttribute(r)?.trim()??""}return{rawCodeB64:t("data-raw-code-b64"),rawMdB64:t("data-raw-md-b64")}}function V(i){return i.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Oe(i,e){let t=e.map(r=>r.trim()).filter(Boolean);if(t.length===0)return V(i);try{let r=t.map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),n=new RegExp(`(${r.join("|")})`,"gi");return i.split(n).map((a,o)=>o%2===1?`<mark class="search-hit">${V(a)}</mark>`:V(a)).join("")}catch{return V(i)}}function Ae(i,e){let t=e.map(c=>c.trim()).filter(Boolean);if(t.length===0)return[];let r=i.toLowerCase(),n=t.map(c=>c.toLowerCase()),s=[],a=0,o=0;for(;a<i.length&&o<400;){let c=a,h=-1,l=!0;for(let u of n){if(u.length===0)continue;let m=r.indexOf(u,c);if(m<0){l=!1;break}h<0&&(h=m),c=m+u.length}if(!l||h<0)break;s.push({start:h,end:c}),o++,a=h+1}return s}function qe(i,e){let t=Math.max(0,Math.min(e,i.length)),r=0;for(let n=0;n<t;n++)i[n]===`
2
+ `&&r++;return r}function $e(i,e){let t=i.split(`
3
+ `);return e<0||e>=t.length?"":t[e]??""}function Pe(i,e){try{return i.getItem(e)}catch{return null}}function _(i,e,t){try{i.setItem(e,t)}catch{}}function st(i){return i.trim().split(/\s+/).filter(Boolean)}function Je(i,e,t){return Math.max(e,Math.min(t,i))}function I(i){return i.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function at(i,e){let t=i.replace(/\s+/g," ").trim();return t.length<=e?t:`${t.slice(0,e-1)}\u2026`}function ot(i,e){let t=new Map;for(let r of i){let n=r.kind==="path"?`path:${r.spPath??""}|${r.crPath??""}|${r.text.slice(0,120)}`:`${r.kind}:${r.line}:${r.crPath??""}`,s=t.get(n);(!s||r.score>s.score)&&t.set(n,r)}return[...t.values()].sort((r,n)=>n.score-r.score).slice(0,e)}function Re(i,e,t){let r=Ae(i,t),n=new Set,s=[];for(let a of r){let o=qe(i,a.start);n.has(o)||(n.add(o),s.push({kind:e,line:o,text:$e(i,o),score:1e3,source:"ordered"}))}return s}function ct(i,e,t){let r=e.trim();if(!r)return[];let n=new E(r,t,[new N(.22),new L(0),new H(0)]),s=i.getMatches(n),a=[];for(let o of s.matches){let c=o.entity;a.push({kind:c.kind,line:c.line,text:c.text,score:100+o.quality,source:"fuzzy",crPath:c.crPath,spPath:c.spPath})}return a}function ht(i,e){if(e.length===0)return[];let t=[];for(let r of i)r.kind!=="path"||Ae(r.text,e).length===0||t.push({kind:"path",line:r.line,text:r.text,score:1e3,source:"ordered",spPath:r.spPath,crPath:r.crPath});return t}function lt(i){let{scope:e,filePathLabel:t,commentrayPathLabel:r,rawCode:n,rawMd:s,searcher:a,queryRaw:o,tokens:c,pathBlobWide:h,pathRowsForOrdering:l}=i,u=(h&&h.trim().length>0?h.trim():[t,r].filter(b=>b.trim().length>0).join(`
4
+ `))||"",m=e==="commentray-and-paths"?[]:Re(n,"code",c),d=e==="commentray-and-paths"&&l&&l.length>0?ht(l,c):e==="commentray-and-paths"&&u?Re(u,"path",c):[],p=Re(s,"md",c),y=ct(a,o,60);return ot([...m,...d,...p,...y],80)}function ut(i){return i==="commentray-and-paths"?"Paths + indexed commentray (this page + browse pages when built). Ordered tokens + fuzzy lines.":"Whole source: whitespace tokens in order (may span lines). Per-line fuzzy ranking for typos."}function dt(i,e){if(i.kind==="code")return`Code L${i.line+1}`;if(i.kind==="path")return"Path";let t=i.crPath&&i.crPath!==e.currentCommentrayPath?` \xB7 ${i.crPath}`:"";return`Commentray L${i.line+1}${t}`}function mt(i,e,t){let r=dt(i,t),n=i.source==="ordered"?"ordered":"fuzzy",s=Oe(at(i.text,320),e),a=I(i.kind==="md"?i.crPath??t.currentCommentrayPath:i.crPath??""),o=I(i.kind==="md"?i.spPath??t.currentSourcePath:i.spPath??"");return`<button type="button" class="hit" data-kind="${i.kind}" data-line="${String(i.line)}" data-cr-path="${a}" data-sp-path="${o}"><span class="meta">${I(r)} <span class="src-tag">(${n})</span></span><div class="snippet">${s}</div></button>`}function gt(i,e,t,r){if(e.length===0)return'<div class="hint">No matches. Try fewer tokens or looser spelling (fuzzy matches per line).</div>';let n=ut(i),s=[];s.push(`<div class="hint">${n} ${e.length} hit(s).</div>`);for(let a of e)s.push(mt(a,t,r));return s.join("")}function Ke(i,e,t){let r=i.querySelector(`#commentray-md-line-${String(e)}`);if(r instanceof HTMLElement){let a=r.getBoundingClientRect().top-i.getBoundingClientRect().top+i.scrollTop;i.scrollTo({top:Math.max(0,a-8),behavior:"smooth"});return}if(t<=1)return;let n=e/Math.max(1,t-1),s=i.scrollHeight-i.clientHeight;i.scrollTo({top:n*Math.max(0,s),behavior:"smooth"})}function Ve(i,e,t){let r=i.find(n=>n.commentrayPath===e);if(r){if(r.staticBrowseUrl?.trim()){let n=new URL(r.staticBrowseUrl.trim(),globalThis.location.href);t!==null&&t>=0&&(n.hash=`commentray-md-line-${String(t)}`),globalThis.open(n.toString(),"_blank","noopener,noreferrer");return}if(r.commentrayOnGithub){let n=t!==null&&t>=0?`${r.commentrayOnGithub}#L${String(t+1)}`:r.commentrayOnGithub;globalThis.open(n,"_blank","noopener,noreferrer")}}}function ft(i){return{scope:(i.getAttribute("data-search-scope")||"")==="commentray-and-paths"?"commentray-and-paths":"full",filePathLabel:i.getAttribute("data-search-file-path")||"",commentrayPathLabel:i.getAttribute("data-search-commentray-path")||""}}function Qe(i,e,t,r,n){let s=t.split(`
5
+ `),a=e.split(`
6
+ `),o=[];return i==="commentray-and-paths"&&(r.trim()&&o.push({kind:"path",line:o.length,text:r}),n.trim()&&o.push({kind:"path",line:o.length,text:n})),[...i==="full"?a.map((c,h)=>({kind:"code",line:h,text:c})):[],...o,...s.map((c,h)=>({kind:"md",line:h,text:c}))]}function Ge(i){let e=K.createDefaultSearcher();return e.indexEntities(i,t=>t.kind==="md"&&t.crPath?`md:${t.crPath}:${t.line}`:t.kind==="path"?`path:${t.spPath??""}|${t.crPath??""}|${t.line}|${t.text.slice(0,120)}`:`${t.kind}:${t.line}`,t=>[t.text]),e}function pt(i,e){let t=i;for(;t;){if(t.classList?.contains("hit"))return t;if(t===e)return null;t=t.parentElement}return null}function yt(i){let e=document.getElementById(`code-line-${String(i)}`);e&&e.scrollIntoView({block:"nearest",behavior:"smooth"})}function St(i,e){let t=(i.getAttribute("data-cr-path")?.trim()??"").trim(),r=e.mutable.commentrayPathLabel.trim();if(t.length===0||t===r){e.docScrollEl.scrollTo({top:0,behavior:"smooth"});return}Ve(e.mutable.documentedPairs,t,null)}function wt(i,e,t){if(e.length>0&&e!==t.mutable.commentrayPathLabel){Ve(t.mutable.documentedPairs,e,i);return}Ke(t.docScrollEl,i,t.mutable.mdLines.length)}function vt(i,e){let t=i.getAttribute("data-kind"),r=parseInt(i.getAttribute("data-line")||"0",10),n=i.getAttribute("data-cr-path")?.trim()??"";if(t==="code"){yt(r);return}if(t==="path"){St(i,e);return}wt(r,n,e)}function bt(i){let{scope:e,filePathLabel:t,mutable:r,rawCode:n,searchInput:s,searchClear:a,searchResults:o,docScrollEl:c}=i,h;function l(){clearTimeout(h),h=void 0,s.value="",o.innerHTML="",o.hidden=!0}function u(){let d=st(s.value);if(d.length===0){o.hidden=!0,o.innerHTML="";return}let p=lt({scope:e,filePathLabel:t,commentrayPathLabel:r.commentrayPathLabel,rawCode:n,rawMd:r.rawMd,searcher:r.searcher,queryRaw:s.value,tokens:d,pathBlobWide:r.pathBlobWide,pathRowsForOrdering:r.pathRowsForOrdering.length>0?r.pathRowsForOrdering:void 0});o.hidden=!1,o.innerHTML=gt(e,p,d,{currentCommentrayPath:r.commentrayPathLabel,currentSourcePath:t})}let m={mutable:r,docScrollEl:c};o.addEventListener("click",d=>{let p=pt(d.target,o);p&&vt(p,m)}),s.addEventListener("input",()=>{clearTimeout(h),h=setTimeout(u,200)}),a.addEventListener("click",l),document.addEventListener("keydown",d=>{if(d.key!=="Escape")return;let p=s.value.trim().length>0,y=document.activeElement===s,b=!o.hidden;!p&&!y&&!b||(l(),y&&s.blur(),d.preventDefault())})}function _e(i,e,t){let r=Pe(localStorage,i)==="1";t.checked=r,r&&e.classList.add("wrap"),t.addEventListener("change",()=>{t.checked?(e.classList.add("wrap"),_(localStorage,i,"1")):(e.classList.remove("wrap"),_(localStorage,i,"0"))})}function Xe(i){let e=i.trim();if(!e)return[];try{let t=JSON.parse(v(e));if(!Array.isArray(t))return[];let r=[];for(let n of t){if(typeof n!="object"||n===null)continue;let s=n;typeof s.id=="string"&&typeof s.commentrayLine=="number"&&typeof s.sourceStart=="number"&&typeof s.sourceEnd=="number"&&r.push({id:s.id,commentrayLine:s.commentrayLine,sourceStart:s.sourceStart,sourceEnd:s.sourceEnd})}return r}catch{return[]}}function xt(i){let e=i.getBoundingClientRect().top+2,t=i.querySelectorAll('[id^="code-line-"]');for(let r of t)if(r.getBoundingClientRect().bottom>e){let s=/^code-line-(\d+)$/.exec(r.id);return s?Number(s[1])+1:1}return t.length>0?t.length:1}function Tt(i){let e=i.getBoundingClientRect().top+2,t=i.querySelectorAll(".commentray-block-anchor"),r=0;for(let n of t){let s=n.getAttribute("data-commentray-line");if(!(s===null||s===""))if(n.getBoundingClientRect().top<=e+1)r=Number(s);else break}return r}function Ye(i,e,t,r){let n="none";i.addEventListener("scroll",()=>{n!=="doc"&&(n="code",t(),n="none")},{passive:!0}),e.addEventListener("scroll",()=>{n!=="code"&&(n="doc",r(),n="none")},{passive:!0})}function Ue(i,e,t){Ye(i,e,()=>{let r=t(),n=xt(i),s=He(r,n);if(s===null)e.scrollTop=C(i.scrollTop,i.scrollHeight,i.clientHeight,e.scrollHeight,e.clientHeight);else{let a=e.querySelector(`[data-commentray-line="${String(s)}"]`);if(a instanceof HTMLElement){let o=a.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop;e.scrollTop=Math.max(0,o-2)}else e.scrollTop=C(i.scrollTop,i.scrollHeight,i.clientHeight,e.scrollHeight,e.clientHeight)}},()=>{let r=t(),n=Tt(e),s=ze(r,n);if(s===null)i.scrollTop=C(e.scrollTop,e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);else{let a=document.getElementById(`code-line-${String(s)}`);if(a){let o=a.getBoundingClientRect().top-i.getBoundingClientRect().top+i.scrollTop;i.scrollTop=Math.max(0,o-2)}else i.scrollTop=C(e.scrollTop,e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight)}})}function Mt(i,e){Ye(i,e,()=>{e.scrollTop=C(i.scrollTop,i.scrollHeight,i.clientHeight,e.scrollHeight,e.clientHeight)},()=>{i.scrollTop=C(e.scrollTop,e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight)})}function Et(i){if(typeof i!="object"||i===null)return!1;let e=i;return typeof e.sourcePath=="string"&&typeof e.commentrayPath=="string"&&typeof e.sourceOnGithub=="string"&&typeof e.commentrayOnGithub=="string"&&(e.staticBrowseUrl===void 0||typeof e.staticBrowseUrl=="string")}function ke(i){let e=[];if(!Array.isArray(i))return e;for(let t of i)Et(t)&&e.push(t);return e}function Ct(i){let e=new Set,t=[],r=0;for(let n of i)for(let s of[n.sourcePath,n.commentrayPath]){let a=s.trim();!a||e.has(a)||(e.add(a),t.push({kind:"path",line:r++,text:a,spPath:n.sourcePath,crPath:n.commentrayPath}))}return t}function It(i){if(i.kind!=="commentrayLine"||typeof i.line!="number"||typeof i.text!="string")return null;let e=typeof i.sourcePath=="string"?i.sourcePath:"",t=typeof i.commentrayPath=="string"?i.commentrayPath:"";return{kind:"md",line:i.line,text:i.text,spPath:e,crPath:t}}function Lt(i,e){if(i.kind!=="sourcePath"&&i.kind!=="commentrayPath")return null;let t=typeof i.sourcePath=="string"?i.sourcePath:"",r=typeof i.commentrayPath=="string"?i.commentrayPath:"",n=i.kind==="sourcePath"?t:r;return n?{kind:"path",line:e,text:n,spPath:t,crPath:r}:null}function Ht(i){if(!i||typeof i!="object")return[];let e=i.rows;if(!Array.isArray(e))return[];let t=[],r=0;for(let n of e){if(!n||typeof n!="object")continue;let s=n,a=It(s);if(a){t.push(a);continue}let o=Lt(s,r);o&&(t.push(o),r+=1)}return t}function Ze(i){let e=i.trim();if(e==="")return[];try{let t=JSON.parse(v(e));return ke(t)}catch{return[]}}function zt(i,e){let t=e.sourcePath.split("/").filter(Boolean);if(t.length===0)return;let r=i;for(let n=0;n<t.length;n++){let s=t[n];if(s===void 0)continue;r.children.has(s)||r.children.set(s,{children:new Map,pairs:[]});let a=r.children.get(s);if(a===void 0)return;n===t.length-1&&a.pairs.push(e),r=a}}function At(i){let e=i.replace(/\\/g,"/").replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function Pt(i){return(i.replace(/\\/g,"/").replace(/\/+$/,"").split("/").filter(Boolean).at(-1)??"").replace(/\.md$/i,"")}function Rt(i,e){let t=At(i.sourcePath);if(!e)return t;let r=Pt(i.commentrayPath);return r!==""&&r!==t?`${t} \xB7 ${r}`:t}function et(i){let e=[...i.children.keys()].sort((r,n)=>r.localeCompare(n));if(e.length===0)return"";let t=[];for(let r of e){let n=i.children.get(r);if(n!==void 0){if(n.children.size>0){let s=et(n);t.push(`<li><div class="tree-dir">${I(r)}</div>${s}</li>`)}if(n.pairs.length>0){let s=n.pairs.length>1;for(let a of n.pairs){let o=I(Rt(a,s)),c=I(`${a.sourcePath} \u2014 open companion on GitHub`);t.push(`<li><div class="tree-file"><a class="tree-file-link" href="${I(a.commentrayOnGithub)}" target="_blank" rel="noopener noreferrer" title="${c}">${o}</a></div></li>`)}}}}return`<ul>${t.join("")}</ul>`}function kt(i,e){if(e.length===0){i.innerHTML='<p class="nav-rail__doc-hub-hint" role="status">No documented pairs in this export.</p>';return}let t={children:new Map,pairs:[]};for(let r of e)zt(t,r);i.innerHTML=et(t)}function Nt(i,e){let t=null,r=null;return async()=>t!==null?t:(r===null&&(r=(async()=>{if(e.length>0&&(t=Ze(e),t.length>0))return;if(i.length===0){t=[];return}let n=await fetch(i,{credentials:"same-origin"});if(!n.ok)throw new Error(`nav json ${String(n.status)}`);let s=await n.json();t=ke(s.documentedPairs)})()),await r,t??[])}function Ft(){let i=document.getElementById("documented-files-hub"),e=document.getElementById("documented-files-tree"),t=document.getElementById("shell");if(!(i instanceof HTMLDetailsElement)||!(e instanceof HTMLElement))return;let r=e,n=i.getAttribute("data-nav-json-url")?.trim()??"",s=t?.getAttribute("data-documented-pairs-b64")?.trim()??"";if(n.length===0&&s.length===0)return;let a=Nt(n,s);async function o(){try{let c=await a();kt(r,c)}catch{r.innerHTML='<p class="nav-rail__doc-hub-hint" role="alert">Could not load the file list.</p>'}}i.addEventListener("toggle",()=>{i.open&&o()})}function Dt(i,e,t,r,n){let s=!1,a=n;function o(h){if(!s)return;let l=e.getBoundingClientRect(),u=h.clientX-l.left,m=Je(u/l.width*100,15,85);a=m,t.style.flex=`0 0 ${m}%`}function c(){s=!1,window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",c),document.body.style.cursor="",document.body.style.userSelect="",_(localStorage,i,String(a))}r.addEventListener("mousedown",h=>{h.preventDefault(),s=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none",window.addEventListener("mousemove",o),window.addEventListener("mouseup",c)})}var je="commentray.codeCommentrayStatic.splitPct",tt="commentray.codeCommentrayStatic.wrap";function Bt(i){let e=document.getElementById("wrap-lines");e&&_e(tt,i,e)}function Ot(i){let e=i?.textContent?.trim()??"";if(!e)return null;try{let t=JSON.parse(v(e));if(!t||!Array.isArray(t.angles)||t.angles.length<2)return null;for(let r of t.angles)if(typeof r.id!="string"||typeof r.docInnerHtmlB64!="string")return null;return t}catch{return null}}function qt(){let i=document.getElementById("doc-pane"),e=document.getElementById("gutter"),t=document.getElementById("wrap-lines"),r=document.getElementById("search-q"),n=document.getElementById("search-clear"),s=document.getElementById("search-results");if(!i||!e||!t||!r||!n||!s)return null;let a=document.getElementById("doc-pane-body"),o=a instanceof HTMLElement?a:i;return{docBody:a,docScrollEl:o,gutter:e,wrapCb:t,searchInput:r,searchClear:n,searchResults:s}}function $t(i){let{scope:e,rawCode:t,filePathLabel:r,hubNavRows:n,pathRowsForOrdering:s,rawMd:a,commentrayPathLabel:o}=i;if(e!=="commentray-and-paths")return Qe(e,t,a,r,o);if(n.length>0)return n;let c=s.length>0?s:Qe(e,t,a,r,o).filter(l=>l.kind==="path"),h=a.split(`
7
+ `).map((l,u)=>({kind:"md",line:u,text:l,spPath:r,crPath:o}));return[...c,...h]}function Qt(i,e,t,r){if(e!=="commentray-and-paths")return{documentedPairs:[],pathRowsForOrdering:[],pathBlobWide:""};let n=Ze(i.getAttribute("data-documented-pairs-b64")?.trim()??""),s=Ct(n),a=s.length>0?s.map(o=>o.text).join(`
8
+ `):[t,r].filter(o=>o.trim().length>0).join(`
9
+ `);return{documentedPairs:n,pathRowsForOrdering:s,pathBlobWide:a}}function Gt(i,e,t,r,n){i.length!==0&&(async()=>{try{let s=await fetch(i,{credentials:"same-origin"});if(!s.ok)return;let a=await s.json(),o=ke(a.documentedPairs);o.length>0&&(e.documentedPairs=o,t.documentedPairs=o);let c=Ht(a);if(c.length===0)return;e.hubNavRows=c,e.pathRowsForOrdering=c.filter(h=>h.kind==="path"),t.pathRowsForOrdering=e.pathRowsForOrdering,t.pathBlobWide=e.pathRowsForOrdering.map(h=>h.text).join(`
10
+ `),r(),n.value.trim().length>0&&n.dispatchEvent(new Event("input",{bubbles:!0}))}catch{}})()}function Ut(i){let{codePane:e,docScrollEl:t,docBody:r,shell:n,scrollLinks:s,multiPayload:a,mutable:o,rebuildSearcher:c,searchInput:h,searchResults:l}=i,u={current:s};if(a){Ue(e,t,()=>u.current);let m=document.getElementById("angle-select");m&&r&&m.addEventListener("change",()=>{let d=a.angles.find(y=>y.id===m.value);if(!d)return;r.innerHTML=v(d.docInnerHtmlB64),o.rawMd=v(d.rawMdB64),o.mdLines=o.rawMd.split(`
11
+ `),o.commentrayPathLabel=d.commentrayPathForSearch,c(),u.current=Xe(d.scrollBlockLinksB64),n.setAttribute("data-scroll-block-links-b64",d.scrollBlockLinksB64),n.setAttribute("data-search-commentray-path",d.commentrayPathForSearch);let p=document.getElementById("toolbar-commentray-github");p instanceof HTMLAnchorElement&&d.commentrayOnGithubUrl?.trim()&&(p.href=d.commentrayOnGithubUrl.trim()),h.value="",l.innerHTML="",l.hidden=!0});return}if(s.length>0){Ue(e,t,()=>s);return}Mt(e,t)}function jt(i,e){function t(){let r=/^commentray-md-line-(\d+)$/.exec(globalThis.location.hash.slice(1));if(!r?.[1])return;let n=Number.parseInt(r[1],10);Number.isFinite(n)&&Ke(i,n,e())}globalThis.addEventListener("hashchange",t),globalThis.requestAnimationFrame(()=>{globalThis.requestAnimationFrame(t)})}function Wt(i,e){let t=qt();if(!t)return;let{docBody:r,docScrollEl:n,gutter:s,wrapCb:a,searchInput:o,searchClear:c,searchResults:h}=t,{rawCodeB64:l,rawMdB64:u}=Be(i,e),m=v(l),d=v(u),p=Xe(i.getAttribute("data-scroll-block-links-b64")||""),{scope:y,filePathLabel:b,commentrayPathLabel:Ne}=ft(i),X=Qt(i,y,b,Ne),z={hubNavRows:[],documentedPairs:X.documentedPairs,pathRowsForOrdering:X.pathRowsForOrdering},x={rawMd:d,mdLines:d.split(`
12
+ `),commentrayPathLabel:Ne,searcher:Ge([]),pathBlobWide:X.pathBlobWide,pathRowsForOrdering:z.pathRowsForOrdering,documentedPairs:z.documentedPairs};function Y(){x.searcher=Ge($t({scope:y,rawCode:m,filePathLabel:b,hubNavRows:z.hubNavRows,pathRowsForOrdering:z.pathRowsForOrdering,rawMd:x.rawMd,commentrayPathLabel:x.commentrayPathLabel}))}Y(),bt({scope:y,filePathLabel:b,mutable:x,rawCode:m,searchInput:o,searchClear:c,searchResults:h,docScrollEl:n});let rt=i.getAttribute("data-nav-search-json-url")?.trim()??"";Gt(rt,z,x,Y,o);let Fe=parseFloat(Pe(localStorage,je)||"50"),De=Je(Number.isFinite(Fe)?Fe:50,15,85);e.style.flex=`0 0 ${De}%`,_e(tt,e,a),Dt(je,i,e,s,De);let nt=document.getElementById("commentray-multi-angle-b64"),it=Ot(nt);Ut({codePane:e,docScrollEl:n,docBody:r,shell:i,scrollLinks:p,multiPayload:it,mutable:x,rebuildSearcher:Y,searchInput:o,searchResults:h}),jt(n,()=>x.mdLines.length)}function We(){Ft();let i=document.getElementById("shell"),e=document.getElementById("code-pane");if(!i||!e)return;if((i.getAttribute("data-layout")||"dual")==="stretch"){Bt(e);return}Wt(i,e)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",We):We();})();