!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).nlp=e()}(this,(function(){"use strict";var t={methods:{one:{},two:{},three:{},four:{}},model:{one:{},two:{},three:{}},compute:{},hooks:[]};const e={compute:function(t){const{world:e}=this,n=e.compute;return"string"==typeof t&&n.hasOwnProperty(t)?n[t](this):(t=>"[object Array]"===Object.prototype.toString.call(t))(t)?t.forEach((o=>{e.compute.hasOwnProperty(o)?n[o](this):console.warn("no compute:",t)})):"function"==typeof t?t(this):console.warn("no compute:",t),this}};var n={forEach:function(t){return this.fullPointer.forEach(((e,n)=>{const o=this.update([e]);t(o,n)})),this},map:function(t,e){const n=this.fullPointer.map(((e,n)=>{const o=this.update([e]),r=t(o,n);return void 0===r?this.none():r}));if(0===n.length)return e||this.update([]);if(void 0!==n[0]){if("string"==typeof n[0])return n;if("object"==typeof n[0]&&(null===n[0]||!n[0].isView))return n}let o=[];return n.forEach((t=>{o=o.concat(t.fullPointer)})),this.toView(o)},filter:function(t){let e=this.fullPointer;e=e.filter(((e,n)=>{const o=this.update([e]);return t(o,n)}));return this.update(e)},find:function(t){const e=this.fullPointer.find(((e,n)=>{const o=this.update([e]);return t(o,n)}));return this.update([e])},some:function(t){return this.fullPointer.some(((e,n)=>{const o=this.update([e]);return t(o,n)}))},random:function(t=1){let e=this.fullPointer,n=Math.floor(Math.random()*e.length);return n+t>this.length&&(n=this.length-t,n=n<0?0:n),e=e.slice(n,n+t),this.update(e)}};const o={termList:function(){return this.methods.one.termList(this.docs)},terms:function(t){const e=this.match(".");return"number"==typeof t?e.eq(t):e},groups:function(t){if(t||0===t)return this.update(this._groups[t]||[]);const e={};return Object.keys(this._groups).forEach((t=>{e[t]=this.update(this._groups[t])})),e},eq:function(t){let e=this.pointer;return e||(e=this.docs.map(((t,e)=>[e]))),e[t]?this.update([e[t]]):this.none()},first:function(){return this.eq(0)},last:function(){const t=this.fullPointer.length-1;return this.eq(t)},firstTerms:function(){return this.match("^.")},lastTerms:function(){return this.match(".$")},slice:function(t,e){let n=this.pointer||this.docs.map(((t,e)=>[e]));return n=n.slice(t,e),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const t=this.fullPointer.map((t=>[t[0]]));return this.update(t).toView()},none:function(){return this.update([])},isDoc:function(t){if(!t||!t.isView)return!1;const e=this.fullPointer,n=t.fullPointer;return!e.length!==n.length&&e.every(((t,e)=>!!n[e]&&(t[0]===n[e][0]&&t[1]===n[e][1]&&t[2]===n[e][2])))},wordCount:function(){return this.docs.reduce(((t,e)=>(t+=e.filter((t=>""!==t.text)).length,t)),0)},isFull:function(){const t=this.pointer;if(!t)return!0;if(0===t.length||0!==t[0][0])return!1;let e=0,n=0;return this.document.forEach((t=>e+=t.length)),this.docs.forEach((t=>n+=t.length)),e===n},getNth:function(t){return"number"==typeof t?this.eq(t):"string"==typeof t?this.if(t):this}};o.group=o.groups,o.fullSentence=o.fullSentences,o.sentence=o.fullSentences,o.lastTerm=o.lastTerms,o.firstTerm=o.firstTerms;const r=Object.assign({},o,e,n);r.get=r.eq;class View{constructor(e,n,o={}){[["document",e],["world",t],["_groups",o],["_cache",null],["viewType","View"]].forEach((t=>{Object.defineProperty(this,t[0],{value:t[1],writable:!0})})),this.ptrs=n}get docs(){let e=this.document;return this.ptrs&&(e=t.methods.one.getDoc(this.ptrs,this.document)),e}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:t,ptrs:e,document:n}=this,o=e||t.map(((t,e)=>[e]));return o.map((t=>{let[e,o,r,s,i]=t;return o=o||0,r=r||(n[e]||[]).length,n[e]&&n[e][o]&&(s=s||n[e][o].id,n[e][r-1]&&(i=i||n[e][r-1].id)),[e,o,r,s,i]}))}update(t){const e=new View(this.document,t);if(this._cache&&t&&t.length>0){const n=[];t.forEach(((t,e)=>{const[o,r,s]=t;(1===t.length||0===r&&this.document[o].length===s)&&(n[e]=this._cache[o])})),n.length>0&&(e._cache=n)}return e.world=this.world,e}toView(t){return new View(this.document,t||this.pointer)}fromText(t){const{methods:e}=this,n=e.one.tokenize.fromString(t,this.world),o=new View(n);return o.world=this.world,o.compute(["normal","freeze","lexicon"]),this.world.compute.preTagger&&o.compute("preTagger"),o.compute("unfreeze"),o}clone(){let t=this.document.slice(0);t=t.map((t=>t.map((t=>((t=Object.assign({},t)).tags=new Set(t.tags),t)))));const e=this.update(this.pointer);return e.document=t,e._cache=this._cache,e}}Object.assign(View.prototype,r);const s=function(t){return t&&"object"==typeof t&&!Array.isArray(t)};function i(t,e){if(s(e))for(const n in e)s(e[n])?(t[n]||Object.assign(t,{[n]:{}}),i(t[n],e[n])):Object.assign(t,{[n]:e[n]});return t}const c=function(t,e,n,o){if(r=t,"[object Array]"===Object.prototype.toString.call(r))return void t.forEach((t=>c(t,e,n,o)));var r;const{methods:s,model:u,compute:a,hooks:l}=e;t.methods&&function(t,e){for(const n in e)t[n]=t[n]||{},Object.assign(t[n],e[n])}(s,t.methods),t.model&&i(u,t.model),t.irregulars&&function(t,e){const n=t.two.models||{};Object.keys(e).forEach((t=>{e[t].pastTense&&(n.toPast&&(n.toPast.ex[t]=e[t].pastTense),n.fromPast&&(n.fromPast.ex[e[t].pastTense]=t)),e[t].presentTense&&(n.toPresent&&(n.toPresent.ex[t]=e[t].presentTense),n.fromPresent&&(n.fromPresent.ex[e[t].presentTense]=t)),e[t].gerund&&(n.toGerund&&(n.toGerund.ex[t]=e[t].gerund),n.fromGerund&&(n.fromGerund.ex[e[t].gerund]=t)),e[t].comparative&&(n.toComparative&&(n.toComparative.ex[t]=e[t].comparative),n.fromComparative&&(n.fromComparative.ex[e[t].comparative]=t)),e[t].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[t]=e[t].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[e[t].superlative]=t))}))}(u,t.irregulars),t.compute&&Object.assign(a,t.compute),l&&(e.hooks=l.concat(t.hooks||[])),t.api&&t.api(n),t.lib&&Object.keys(t.lib).forEach((e=>o[e]=t.lib[e])),t.tags&&o.addTags(t.tags),t.words&&o.addWords(t.words),t.frozen&&o.addWords(t.frozen,!0),t.mutate&&t.mutate(e,o)},u=function(t){return"[object Array]"===Object.prototype.toString.call(t)},a=function(t,e,n){const{methods:o}=n,r=new e([]);if(r.world=n,"number"==typeof t&&(t=String(t)),!t)return r;if("string"==typeof t){return new e(o.one.tokenize.fromString(t,n))}if(s=t,"[object Object]"===Object.prototype.toString.call(s)&&t.isView)return new e(t.document,t.ptrs);var s;if(u(t)){if(u(t[0])){const n=t.map((t=>t.map((t=>({text:t,normal:t,pre:"",post:" ",tags:new Set})))));return new e(n)}const n=t.map((t=>t.terms.map((t=>(u(t.tags)&&(t.tags=new Set(t.tags)),t)))));return new e(n)}return r},l=Object.assign({},t),h=function(t,e){e&&h.addWords(e);const n=a(t,View,l);return t&&n.compute(l.hooks),n};Object.defineProperty(h,"_world",{value:l,writable:!0}),h.tokenize=function(t,e){const{compute:n}=this._world;e&&h.addWords(e);const o=a(t,View,l);return n.contractions&&o.compute(["alias","normal","machine","contractions"]),o},h.plugin=function(t){return c(t,this._world,View,this),this},h.extend=h.plugin,h.world=function(){return this._world},h.model=function(){return this._world.model},h.methods=function(){return this._world.methods},h.hooks=function(){return this._world.hooks},h.verbose=function(t){const e="undefined"!=typeof process&&process.env?process.env:self.env||{};return e.DEBUG_TAGS="tagger"===t||!0===t||"",e.DEBUG_MATCH="match"===t||!0===t||"",e.DEBUG_CHUNKS="chunker"===t||!0===t||"",this},h.version="14.15.1";var f={one:{cacheDoc:function(t){const e=t.map((t=>{const e=new Set;return t.forEach((t=>{""!==t.normal&&e.add(t.normal),t.switch&&e.add(`%${t.switch}%`),t.implicit&&e.add(t.implicit),t.machine&&e.add(t.machine),t.root&&e.add(t.root),t.alias&&t.alias.forEach((t=>e.add(t)));const n=Array.from(t.tags);for(let t=0;t/^\p{Lu}[\p{Ll}'’]/u.test(t)||/^\p{Lu}$/u.test(t),w=(t,e,n)=>{if(n.forEach((t=>t.dirty=!0)),t){const o=[e,0].concat(n);Array.prototype.splice.apply(t,o)}return t},y=function(t){const e=t[t.length-1];!e||/ $/.test(e.post)||/[-–—]/.test(e.post)||(e.post+=" ")},b=(t,e,n)=>{const o=/[-.?!,;:)–—'"]/g,r=t[e-1];if(!r)return;const s=r.post;if(o.test(s)){const t=s.match(o).join(""),e=n[n.length-1];e.post=t+e.post,r.post=r.post.replace(o,"")}},v=function(t,e,n,o){const[r,s,i]=e;0===s||i===o[r].length?y(n):(y(n),y([t[e[1]]])),function(t,e,n){const o=t[e];if(0!==e||!m(o.text))return;n[0].text=n[0].text.replace(/^\p{Ll}/u,(t=>t.toUpperCase()));const r=t[e];r.tags.has("ProperNoun")||r.tags.has("Acronym")||m(r.text)&&r.text.length>1&&(r.text=(s=r.text,s.replace(/^\p{Lu}/u,(t=>t.toLowerCase()))));var s}(t,s,n),w(t,s,n)};let x=0;const j=t=>(t=t.length<3?"0"+t:t).length<3?"0"+t:t,E=function(t){let[e,n]=t.index||[0,0];x+=1,x=x>46655?0:x,e=e>46655?0:e,n=n>1294?0:n;let o=j(x.toString(36));o+=j(e.toString(36));let r=n.toString(36);r=r.length<2?"0"+r:r,o+=r;return o+=parseInt(36*Math.random(),10).toString(36),t.normal+"|"+o.toUpperCase()},O=function(t){if(t.has("@hasContraction")&&"function"==typeof t.contractions){t.grow("@hasContraction").contractions().expand()}},k=t=>"[object Array]"===Object.prototype.toString.call(t),P=function(t,e,n){const{document:o,world:r}=e;e.uncache();const s=e.fullPointer,i=e.fullPointer;e.forEach(((c,u)=>{const a=c.fullPointer[0],[l]=a,h=o[l];let f=function(t,e){const{methods:n}=e;return"string"==typeof t?n.one.tokenize.fromString(t,e)[0]:"object"==typeof t&&t.isView?t.clone().docs[0]||[]:k(t)?k(t[0])?t[0]:t:[]}(t,r);0!==f.length&&(f=function(t){return t.map((t=>(t.id=E(t),t)))}(f),n?(O(e.update([a]).firstTerm()),v(h,a,f,o)):(O(e.update([a]).lastTerm()),function(t,e,n,o){const[r,,s]=e,i=(o[r]||[]).length;st.replace(/^\p{Ll}/u,(t=>t.toUpperCase())),$=t=>t.replace(/^\p{Lu}/u,(t=>t.toLowerCase()));z.replaceWith=function(t,e={}){let n=this.fullPointer;const o=this;if(this.uncache(),"function"==typeof t)return function(t,e,n){return t.forEach((t=>{const o=e(t);t.replaceWith(o,n)})),t}(o,t,e);const r=o.docs[0];if(!r)return o;const s=e.possessives&&r[r.length-1].tags.has("Possessive"),i=e.case&&(c=r[0].text,/^\p{Lu}[\p{Ll}'’]/u.test(c)||/^\p{Lu}$/u.test(c));var c;t=function(t,e){if("string"!=typeof t)return t;const n=e.groups();return t=t.replace(S,(t=>{const e=t.replace(/\$/,"");return n.hasOwnProperty(e)?n[e].text():t})),t}(t,o);const u=this.update(n);n=n.map((t=>t.slice(0,3)));const a=(u.docs[0]||[]).map((t=>Array.from(t.tags))),l=u.docs[0][0].pre,h=u.docs[0][u.docs[0].length-1].post;if("string"==typeof t&&(t=this.fromText(t).compute("id")),o.insertAfter(t),u.has("@hasContraction")&&o.contractions){o.grow("@hasContraction+").contractions().expand()}if(o.delete(u),s){const t=o.docs[0],e=t[t.length-1];e.tags.has("Possessive")||(e.text+="'s",e.normal+="'s",e.tags.add("Possessive"))}if(l&&o.docs[0]&&(o.docs[0][0].pre=l),h&&o.docs[0]){const t=o.docs[0][o.docs[0].length-1];t.post.trim()||(t.post=h)}const f=o.toView(n).compute(["index","freeze","lexicon"]);if(f.world.compute.preTagger&&f.compute("preTagger"),f.compute("unfreeze"),e.tags&&f.terms().forEach(((t,e)=>{t.tagSafe(a[e])})),!f.docs[0]||!f.docs[0][0])return f;if(e.case){const t=i?A:$;f.docs[0][0].text=t(f.docs[0][0].text)}return f},z.replace=function(t,e,n){if(t&&!e)return this.replaceWith(t,n);const o=this.match(t);return o.found?(this.soften(),o.replaceWith(e,n)):this};const T={remove:function(t){const{indexN:e}=this.methods.one.pointer;this.uncache();let n=this.all(),o=this;t&&(n=this,o=this.match(t));const r=!n.ptrs;if(o.has("@hasContraction")&&o.contractions){o.grow("@hasContraction").contractions().expand()}let s=n.fullPointer;const i=o.fullPointer.reverse(),c=function(t,e){e.forEach((e=>{const[n,o,r]=e,s=r-o;t[n]&&(r===t[n].length&&r>1&&function(t,e){const n=t.length-1,o=t[n],r=t[n-e];r&&o&&(r.post+=o.post,r.post=r.post.replace(/ +([.?!,;:])/,"$1"),r.post=r.post.replace(/[,;:]+([.?!])/,"$1"))}(t[n],s),t[n].splice(o,s))}));for(let e=t.length-1;e>=0;e-=1)if(0===t[e].length&&(t.splice(e,1),e===t.length&&t[e-1])){const n=t[e-1],o=n[n.length-1];o&&(o.post=o.post.trimEnd())}return t}(this.document,i);if(s=function(t,e){return t=t.map((t=>{const[n]=t;return e[n]?(e[n].forEach((e=>{const n=e[2]-e[1];t[1]<=e[1]&&t[2]>=e[2]&&(t[2]-=n)})),t):t})),t.forEach(((e,n)=>{if(0===e[1]&&0==e[2])for(let e=n+1;et[2]-t[1]>0))).map((t=>(t[3]=null,t[4]=null,t)))}(s,e(i)),n.ptrs=s,n.document=c,n.compute("index"),r&&(n.ptrs=void 0),!t)return this.ptrs=[],n.none();return n.toView(s)}};T.delete=T.remove;const C={pre:function(t,e){return void 0===t&&this.found?this.docs[0][0].pre:(this.docs.forEach((n=>{const o=n[0];!0===e?o.pre+=t:o.pre=t})),this)},post:function(t,e){if(void 0===t){const t=this.docs[this.docs.length-1];return t[t.length-1].post}return this.docs.forEach((n=>{const o=n[n.length-1];!0===e?o.post+=t:o.post=t})),this},trim:function(){if(!this.found)return this;const t=this.docs,e=t[0][0];e.pre=e.pre.trimStart();const n=t[t.length-1],o=n[n.length-1];return o.post=o.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach((t=>{t.forEach(((e,n)=>{0!==n&&(e.pre=""),t[n+1]&&(e.post="-")}))})),this},dehyphenate:function(){const t=/[-–—]/;return this.docs.forEach((e=>{e.forEach((e=>{t.test(e.post)&&(e.post=" ")}))})),this},toQuotations:function(t,e){return t=t||'"',e=e||'"',this.docs.forEach((n=>{n[0].pre=t+n[0].pre;const o=n[n.length-1];o.post=e+o.post})),this},toParentheses:function(t,e){return t=t||"(",e=e||")",this.docs.forEach((n=>{n[0].pre=t+n[0].pre;const o=n[n.length-1];o.post=e+o.post})),this}};C.deHyphenate=C.dehyphenate,C.toQuotation=C.toQuotations;var L={alpha:(t,e)=>t.normale.normal?1:0,length:(t,e)=>{const n=t.normal.trim().length,o=e.normal.trim().length;return no?-1:0},wordCount:(t,e)=>t.wordse.words?-1:0,sequential:(t,e)=>t[0]e[0]?-1:t[1]>e[1]?1:-1,byFreq:function(t){const e={};return t.forEach((t=>{e[t.normal]=e[t.normal]||0,e[t.normal]+=1})),t.sort(((t,n)=>{const o=e[t.normal],r=e[n.normal];return or?-1:0})),t}};const N=new Set(["index","sequence","seq","sequential","chron","chronological"]),V=new Set(["freq","frequency","topk","repeats"]),F=new Set(["alpha","alphabetical"]);var q={unique:function(){const t=new Set;return this.filter((e=>{const n=e.text("machine");return!t.has(n)&&(t.add(n),!0)}))},reverse:function(){let t=this.pointer||this.docs.map(((t,e)=>[e]));return t=[].concat(t),t=t.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(t)},sort:function(t){const{docs:e,pointer:n}=this;if(this.uncache(),"function"==typeof t)return function(t,e){let n=t.fullPointer;return n=n.sort(((n,o)=>(n=t.update([n]),o=t.update([o]),e(n,o)))),t.ptrs=n,t}(this,t);t=t||"alpha";const o=n||e.map(((t,e)=>[e]));let r=e.map(((t,e)=>({index:e,words:t.length,normal:t.map((t=>t.machine||t.normal||"")).join(" "),pointer:o[e]})));return N.has(t)&&(t="sequential"),F.has(t)&&(t="alpha"),V.has(t)?(r=L.byFreq(r),this.update(r.map((t=>t.pointer)))):"function"==typeof L[t]?(r=r.sort(L[t]),this.update(r.map((t=>t.pointer)))):this}};const G=function(t,e){if(t.length>0){const e=t[t.length-1],n=e[e.length-1];!1===/ /.test(n.post)&&(n.post+=" ")}return t=t.concat(e)};var B={concat:function(t){if("string"==typeof t){const e=this.fromText(t);if(this.found&&this.ptrs){const t=this.fullPointer,n=t[t.length-1][0];this.document.splice(n,0,...e.document)}else this.document=this.document.concat(e.document);return this.all().compute("index")}if("object"==typeof t&&t.isView)return function(t,e){if(t.document===e.document){const n=t.fullPointer.concat(e.fullPointer);return t.toView(n).compute("index")}return e.fullPointer.forEach((e=>{e[0]+=t.document.length})),t.document=G(t.document,e.docs),t.all()}(this,t);if(e=t,"[object Array]"===Object.prototype.toString.call(e)){const e=G(this.document,t);return this.document=e,this.all()}var e;return this}};var D={harden:function(){return this.ptrs=this.fullPointer,this},soften:function(){let t=this.ptrs;return!t||t.length<1||(t=t.map((t=>t.slice(0,3))),this.ptrs=t),this}};const M=Object.assign({},{toLowerCase:function(){return this.termList().forEach((t=>{t.text=t.text.toLowerCase()})),this},toUpperCase:function(){return this.termList().forEach((t=>{t.text=t.text.toUpperCase()})),this},toTitleCase:function(){return this.termList().forEach((t=>{t.text=t.text.replace(/^ *[a-z\u00C0-\u00FF]/,(t=>t.toUpperCase()))})),this},toCamelCase:function(){return this.docs.forEach((t=>{t.forEach(((e,n)=>{0!==n&&(e.text=e.text.replace(/^ *[a-z\u00C0-\u00FF]/,(t=>t.toUpperCase()))),n!==t.length-1&&(e.post="")}))})),this}},_,z,T,C,q,B,D),U={id:function(t){const e=t.docs;for(let t=0;t(t.implicit=t.text,t.machine=t.text,t.pre="",t.post="",t.text="",t.normal="",t.index=[o,r+e],t))),n[0]&&(n[0].pre=t[o][r].pre,n[n.length-1].post=t[o][r].post,n[0].text=t[o][r].text,n[0].normal=t[o][r].normal),t[o].splice(r,1,...n))},H=/'/,Z=new Set(["what","how","when","where","why"]),K=new Set(["be","go","start","think","need"]),J=new Set(["been","gone"]),X=/'/,Y=/(e|é|aison|sion|tion)$/,tt=/(age|isme|acle|ege|oire)$/;var et=(t,e)=>["je",t[e].normal.split(X)[1]],nt=(t,e)=>{const n=t[e].normal.split(X)[1];return n&&n.endsWith("e")?["la",n]:["le",n]},ot=(t,e)=>{const n=t[e].normal.split(X)[1];return n&&Y.test(n)&&!tt.test(n)?["du",n]:n&&n.endsWith("s")?["des",n]:["de",n]};const rt=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,st=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,it=/^[0-9]{3}-[0-9]{4}$/,ct=function(t,e){const n=t[e];let o=n.text.match(rt);return null!==o?!0===n.tags.has("PhoneNumber")||it.test(n.text)?null:[o[1],"to",o[2]]:(o=n.text.match(st),null!==o?[o[1],"to",o[4]]:null)},ut=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,at=function(t,e,n){const o=n.model.one.numberSuffixes||{},r=t[e].text.match(ut);if(null!==r){const t=r[2].toLowerCase().trim();return o.hasOwnProperty(t)?null:[r[1],t]}return null},lt=/'/,ht=/^[0-9][^-–—]*[-–—].*?[0-9]/,ft=function(t,e,n,o){const r=e.update();r.document=[t];let s=n+o;n>0&&(n-=1),t[s]&&(s+=1),r.ptrs=[[0,n,s]]},pt={t:(t,e)=>function(t,e){return"ain't"===t[e].normal||"aint"===t[e].normal?null:[t[e].normal.replace(/n't/,""),"not"]}(t,e),d:(t,e)=>function(t,e){const n=t[e].normal.split(H)[0];if(Z.has(n))return[n,"did"];if(t[e+1]){if(J.has(t[e+1].normal))return[n,"had"];if(K.has(t[e+1].normal))return[n,"would"]}return null}(t,e)},dt={j:(t,e)=>et(t,e),l:(t,e)=>nt(t,e),d:(t,e)=>ot(t,e)},mt=function(t,e,n,o){for(let r=0;r2)return s.out.concat(o)}return null},gt=function(t,e){const n=e.fromText(t.join(" "));return n.compute(["id","alias"]),n.docs[0]},wt=function(t,e){for(let n=e+1;n<5&&t[n];n+=1)if("been"===t[n].normal)return["there","has"];return["there","is"]};var yt={contractions:t=>{const{world:e,document:n}=t,{model:o,methods:r}=e,s=o.one.contractions||[];n.forEach(((o,i)=>{for(let c=o.length-1;c>=0;c-=1){let u=null,a=null;if(!0===lt.test(o[c].normal)){const t=o[c].normal.split(lt);u=t[0],a=t[1]}let l=mt(s,o[c],u,a);!l&&pt.hasOwnProperty(a)&&(l=pt[a](o,c,e)),!l&&dt.hasOwnProperty(u)&&(l=dt[u](o,c)),"there"===u&&"s"===a&&(l=wt(o,c)),l?(l=gt(l,t),Q(n,[i,c],l),ft(n[i],t,c,l.length)):ht.test(o[c].normal)?(l=ct(o,c),l&&(l=gt(l,t),Q(n,[i,c],l),r.one.setTag(l,"NumberRange",e),l[2]&&l[2].tags.has("Time")&&r.one.setTag([l[0]],"Time",e,null,"time-range"),ft(n[i],t,c,l.length))):(l=at(o,c,e),l&&(l=gt(l,t),Q(n,[i,c],l),r.one.setTag([l[1]],"Unit",e,null,"contraction-unit")))}}))}};const bt={model:R,compute:yt,hooks:["contractions"]},vt=function(t){const e=t.world,{model:n,methods:o}=t.world,r=o.one.setTag,{frozenLex:s}=n.one,i=n.one._multiCache||{};t.docs.forEach((t=>{for(let n=0;nn;o-=1){const i=t.slice(n,o+1),c=i.map((t=>t.machine||t.normal)).join(" ");!0!==s.hasOwnProperty(c)||(r(i,s[c],e,!1,"1-frozen-multi-lexicon"),i.forEach((t=>t.frozen=!0)))}}void 0!==s[c]&&s.hasOwnProperty(c)&&(r([o],s[c],e,!1,"1-freeze-lexicon"),o.frozen=!0)}}))};const xt=t=>""+t+"",jt=t=>""+t+"",Et=function(t){t.docs.forEach((t=>{console.log(xt("\n ┌─────────")),t.forEach((t=>{let e=` ${jt("│")} `;const n=t.implicit||t.text||"-";!0===t.frozen?e+=`${xt(n)} ❄️`:e+=jt(n),console.log(e)}))}))};var Ot={compute:{frozen:vt,freeze:vt,unfreeze:function(t){return t.docs.forEach((t=>{t.forEach((t=>{delete t.frozen}))})),t}},mutate:t=>{const e=t.methods.one;e.termMethods.isFrozen=t=>!0===t.frozen,e.debug.freeze=Et,e.debug.frozen=Et},api:function(t){t.prototype.freeze=function(){return this.docs.forEach((t=>{t.forEach((t=>{t.frozen=!0}))})),this},t.prototype.unfreeze=function(){this.compute("unfreeze")},t.prototype.isFrozen=function(){return this.match("@isFrozen+")}},hooks:["freeze"]};const kt=function(t,e,n){const{model:o,methods:r}=n,s=r.one.setTag,i=o.one._multiCache||{},{lexicon:c}=o.one||{},u=t[e],a=u.machine||u.normal;if(void 0!==i[a]&&t[e+1]){for(let o=e+i[a]-1;o>e;o-=1){const r=t.slice(e,o+1);if(r.length<=1)return!1;const i=r.map((t=>t.machine||t.normal)).join(" ");if(!0===c.hasOwnProperty(i)){const t=c[i];return s(r,t,n,!1,"1-multi-lexicon"),!t||2!==t.length||"PhrasalVerb"!==t[0]&&"PhrasalVerb"!==t[1]||s([r[1]],"Particle",n,!1,"1-phrasal-particle"),!0}}return!1}return null},Pt=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,_t=new Set(["Verb","Infinitive","PastTense","Gerund","PresentTense","Adjective","Participle"]),St=function(t,e,n){const{model:o,methods:r}=n,s=r.one.setTag,{lexicon:i}=o.one,c=t[e],u=c.machine||c.normal;if(void 0!==i[u]&&i.hasOwnProperty(u))return s([c],i[u],n,!1,"1-lexicon"),!0;if(c.alias){const t=c.alias.find((t=>i.hasOwnProperty(t)));if(t)return s([c],i[t],n,!1,"1-lexicon-alias"),!0}if(!0===Pt.test(u)){const t=u.replace(Pt,"");if(i.hasOwnProperty(t)&&t.length>3&&_t.has(i[t]))return s([c],i[t],n,!1,"1-lexicon-prefix"),!0}return null};var zt={lexicon:function(t){const e=t.world;t.docs.forEach((t=>{for(let n=0;n{const r=t[o],s=(o=(o=o.toLowerCase().trim()).replace(/'s\b/,"")).split(/ /);s.length>1&&(void 0===n[s[0]]||s.length>n[s[0]])&&(n[s[0]]=s.length),e[o]=e[o]||r})),delete e[""],delete e.null,delete e[" "],{lex:e,_multi:n}}}};var $t={addWords:function(t,e=!1){const n=this.world(),{methods:o,model:r}=n;if(!t)return;if(Object.keys(t).forEach((e=>{"string"==typeof t[e]&&t[e].startsWith("#")&&(t[e]=t[e].replace(/^#/,""))})),!0===e){const{lex:e,_multi:s}=o.one.expandLexicon(t,n);return Object.assign(r.one._multiCache,s),void Object.assign(r.one.frozenLex,e)}if(o.two.expandLexicon){const{lex:e,_multi:s}=o.two.expandLexicon(t,n);Object.assign(r.one.lexicon,e),Object.assign(r.one._multiCache,s)}const{lex:s,_multi:i}=o.one.expandLexicon(t,n);Object.assign(r.one.lexicon,s),Object.assign(r.one._multiCache,i)}};var Tt={model:{one:{lexicon:{},_multiCache:{},frozenLex:{}}},methods:At,compute:zt,lib:$t,hooks:["lexicon"]};const Ct=function(t,e){const n=[{}],o=[null],r=[0],s=[];let i=0;t.forEach((function(t){let r=0;const s=function(t,e){const{methods:n,model:o}=e,r=n.one.tokenize.splitTerms(t,o).map((t=>n.one.tokenize.splitWhitespace(t,o)));return r.map((t=>t.text.toLowerCase()))}(t,e);for(let t=0;t0&&!n[i].hasOwnProperty(u);)i=r[i];if(n.hasOwnProperty(i)){const t=n[i][u];r[a]=t,o[t]&&(o[a]=o[a]||[],o[a]=o[a].concat(o[t]))}else r[a]=0}}return{goNext:n,endAs:o,failTo:r}},Lt=function(t,e,n){let o=0;const r=[];for(let s=0;s0&&(void 0===e.goNext[o]||!e.goNext[o].hasOwnProperty(i));)o=e.failTo[o]||0;if(e.goNext[o].hasOwnProperty(i)&&(o=e.goNext[o][i],e.endAs[o])){const n=e.endAs[o];for(let e=0;e{for(let n=t.length-1;n>=0;n-=1)if(t[n]!==e)return t=t.slice(0,n+1);return t},Ft={buildTrie:function(t){return function(t){return t.goNext=t.goNext.map((t=>{if(0!==Object.keys(t).length)return t})),t.goNext=Vt(t.goNext,void 0),t.failTo=Vt(t.failTo,0),t.endAs=Vt(t.endAs,null),t}(Ct(t,this.world()))}};Ft.compile=Ft.buildTrie;var qt={api:function(t){t.prototype.lookup=function(t,e={}){if(!t)return this.none();"string"==typeof t&&(t=[t]);var n;let o=function(t,e,n){let o=[];n.form=n.form||"normal";const r=t.docs;if(!e.goNext||!e.goNext[0])return console.error("Compromise invalid lookup trie"),t.none();const s=Object.keys(e.goNext[0]);for(let i=0;i0&&(o=o.concat(u))}return t.update(o)}(this,(n=t,"[object Object]"===Object.prototype.toString.call(n)?t:Ct(t,this.world)),e);return o=o.settle(),o}},lib:Ft};const Gt=function(t,e){return e?(t.forEach((t=>{const n=t[0];e[n]&&(t[0]=e[n][0],t[1]+=e[n][1],t[2]+=e[n][1])})),t):t},Bt=function(t,e){let{ptrs:n}=t;const{byGroup:o}=t;return n=Gt(n,e),Object.keys(o).forEach((t=>{o[t]=Gt(o[t],e)})),{ptrs:n,byGroup:o}},Dt=function(t,e,n){const o=n.methods.one;return"number"==typeof t&&(t=String(t)),"string"==typeof t&&(t=o.killUnicode(t,n),t=o.parseMatch(t,e,n)),t},Mt=t=>"[object Object]"===Object.prototype.toString.call(t),Ut=t=>t&&Mt(t)&&!0===t.isView,Wt=t=>t&&Mt(t)&&!0===t.isNet;var It={matchOne:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.intersection(t).eq(0);if(Wt(t))return this.sweep(t,{tagger:!1,matchOne:!0}).view;const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0},s=o.match(this.docs,r,this._cache),{ptrs:i,byGroup:c}=Bt(s,this.fullPointer),u=this.toView(i);return u._groups=c,u},match:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.intersection(t);if(Wt(t))return this.sweep(t,{tagger:!1}).view.settle();const r={regs:t=Dt(t,n,this.world),group:e},s=o.match(this.docs,r,this._cache),{ptrs:i,byGroup:c}=Bt(s,this.fullPointer),u=this.toView(i);return u._groups=c,u},has:function(t,e,n){const o=this.methods.one;if(Ut(t)){return this.intersection(t).fullPointer.length>0}if(Wt(t))return this.sweep(t,{tagger:!1}).view.found;const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0};return o.match(this.docs,r,this._cache).ptrs.length>0},if:function(t,e,n){const o=this.methods.one;if(Ut(t))return this.filter((e=>e.intersection(t).found));if(Wt(t)){const e=this.sweep(t,{tagger:!1}).view.settle();return this.if(e)}const r={regs:t=Dt(t,n,this.world),group:e,justOne:!0};let s=this.fullPointer;const i=this._cache||[];s=s.filter(((t,e)=>{const n=this.update([t]);return o.match(n.docs,r,i[e]).ptrs.length>0}));const c=this.update(s);return this._cache&&(c._cache=s.map((t=>i[t[0]]))),c},ifNo:function(t,e,n){const{methods:o}=this,r=o.one;if(Ut(t))return this.filter((e=>!e.intersection(t).found));if(Wt(t)){const e=this.sweep(t,{tagger:!1}).view.settle();return this.ifNo(e)}t=Dt(t,n,this.world);const s=this._cache||[],i=this.filter(((n,o)=>{const i={regs:t,group:e,justOne:!0};return 0===r.match(n.docs,i,s[o]).ptrs.length}));return this._cache&&(i._cache=i.ptrs.map((t=>s[t[0]]))),i}};var Rt={before:function(t,e,n){const{indexN:o}=this.methods.one.pointer,r=[],s=o(this.fullPointer);Object.keys(s).forEach((t=>{const e=s[t].sort(((t,e)=>t[1]>e[1]?1:-1))[0];e[1]>0&&r.push([e[0],0,e[1]])}));const i=this.toView(r);return t?i.match(t,e,n):i},after:function(t,e,n){const{indexN:o}=this.methods.one.pointer,r=[],s=o(this.fullPointer),i=this.document;Object.keys(s).forEach((t=>{const e=s[t].sort(((t,e)=>t[1]>e[1]?-1:1))[0],[n,,o]=e;o{const s=n.before(t,e);if(s.found){const t=s.terms();o[r][1]-=t.length,o[r][3]=t.docs[0][0].id}})),this.update(o)},growRight:function(t,e,n){"string"==typeof t&&(t=this.world.methods.one.parseMatch(t,n,this.world)),t[0].start=!0;const o=this.fullPointer;return this.forEach(((n,r)=>{const s=n.after(t,e);if(s.found){const t=s.terms();o[r][2]+=t.length,o[r][4]=null}})),this.update(o)},grow:function(t,e,n){return this.growRight(t,e,n).growLeft(t,e,n)}};const Qt=function(t,e){return[t[0],t[1],e[2]]},Ht=(t,e,n)=>{return"string"==typeof t||(o=t,"[object Array]"===Object.prototype.toString.call(o))?e.match(t,n):t||e.none();var o},Zt=function(t,e){const[n,o,r]=t;return e.document[n]&&e.document[n][o]&&(t[3]=t[3]||e.document[n][o].id,e.document[n][r-1]&&(t[4]=t[4]||e.document[n][r-1].id)),t},Kt={splitOn:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);let s=[];return r.forEach((t=>{s.push(t.passthrough),s.push(t.before),s.push(t.match),s.push(t.after)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)},splitBefore:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);for(let t=0;t{s.push(t.passthrough),s.push(t.before),t.match&&t.after?s.push(Qt(t.match,t.after)):s.push(t.match)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)},splitAfter:function(t,e){const{splitAll:n}=this.methods.one.pointer,o=Ht(t,this,e).fullPointer,r=n(this.fullPointer,o);let s=[];return r.forEach((t=>{s.push(t.passthrough),t.before&&t.match?s.push(Qt(t.before,t.match)):(s.push(t.before),s.push(t.match)),s.push(t.after)})),s=s.filter((t=>t)),s=s.map((t=>Zt(t,this))),this.update(s)}};Kt.split=Kt.splitAfter;const Jt=function(t,e){return!(!t||!e)&&(t[0]===e[0]&&t[2]===e[1])},Xt=function(t,e,n){const o=t.world,r=o.methods.one.parseMatch;n=n||"^.";const s=r(e=e||".$",{},o),i=r(n,{},o);s[s.length-1].end=!0,i[0].start=!0;const c=t.fullPointer,u=[c[0]];for(let e=1;e)?\/.*?[^\\/]\/[?\]+*$~]*)(?:\s|$)/,ne=/([!~[^]*(?:<[^<]*>)?\([^)]+[^\\)]\)[?\]+*$~]*)(?:\s|$)/,oe=/ /g,re=t=>/^[![^]*(<[^<]*>)?\//.test(t)&&/\/[?\]+*$~]*$/.test(t),se=function(t){return t=(t=t.map((t=>t.trim()))).filter((t=>t))},ie=/\{([0-9]+)?(, *[0-9]*)?\}/,ce=/&&/,ue=new RegExp(/^<\s*(\S+)\s*>/),ae=t=>t.charAt(0).toUpperCase()+t.substring(1),le=t=>t.charAt(t.length-1),he=t=>t.charAt(0),fe=t=>t.substring(1),pe=t=>t.substring(0,t.length-1),de=function(t){return t=fe(t),t=pe(t)},me=function(t,e){const n={};for(let o=0;o<2;o+=1){if("$"===le(t)&&(n.end=!0,t=pe(t)),"^"===he(t)&&(n.start=!0,t=fe(t)),"?"===le(t)&&(n.optional=!0,t=pe(t)),("["===he(t)||"]"===le(t))&&(n.group=null,"["===he(t)&&(n.groupStart=!0),"]"===le(t)&&(n.groupEnd=!0),t=(t=t.replace(/^\[/,"")).replace(/\]$/,""),"<"===he(t))){const e=ue.exec(t);e.length>=2&&(n.group=e[1],t=t.replace(e[0],""))}if("+"===le(t)&&(n.greedy=!0,t=pe(t)),"*"!==t&&"*"===le(t)&&"\\*"!==t&&(n.greedy=!0,t=pe(t)),"!"===he(t)&&(n.negative=!0,t=fe(t)),"~"===he(t)&&"~"===le(t)&&t.length>2&&(t=de(t),n.fuzzy=!0,n.min=e.fuzzy||.85,!1===/\(/.test(t)))return n.word=t,n;if("/"===he(t)&&"/"===le(t))return t=de(t),e.caseSensitive&&(n.use="text"),n.regex=new RegExp(t),n;if(!0===ie.test(t)&&(t=t.replace(ie,((t,e,o)=>(void 0===o?(n.min=Number(e),n.max=Number(e)):(o=o.replace(/, */,""),void 0===e?(n.min=0,n.max=Number(o)):(n.min=Number(e),n.max=Number(o||999))),n.greedy=!0,n.min||(n.optional=!0),"")))),"("===he(t)&&")"===le(t)){ce.test(t)?(n.choices=t.split(ce),n.operator="and"):(n.choices=t.split("|"),n.operator="or"),n.choices[0]=fe(n.choices[0]);const o=n.choices.length-1;n.choices[o]=pe(n.choices[o]),n.choices=n.choices.map((t=>t.trim())),n.choices=n.choices.filter((t=>t)),n.choices=n.choices.map((t=>t.split(/ /g).map((t=>me(t,e))))),t=""}if("{"===he(t)&&"}"===le(t)){if(t=de(t),n.root=t,/\//.test(t)){const t=n.root.split(/\//);n.root=t[0],n.pos=t[1],"adj"===n.pos&&(n.pos="Adjective"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),void 0!==t[2]&&(n.sense=t[2])}return n}if("<"===he(t)&&">"===le(t))return t=de(t),n.chunk=ae(t),n.greedy=!0,n;if("%"===he(t)&&"%"===le(t))return t=de(t),n.switch=t,n}return"#"===he(t)?(n.tag=fe(t),n.tag=ae(n.tag),n):"@"===he(t)?(n.method=fe(t),n):"."===t?(n.anything=!0,n):"*"===t?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(t&&(t=(t=t.replace("\\*","*")).replace("\\.","."),e.caseSensitive?n.use="text":t=t.toLowerCase(),n.word=t),n)},ge=/[a-z0-9][-–—][a-z]/i,we=function(t,e){const{all:n}=e.methods.two.transform.verb||{},o=t.root;return n?n(o,e.model):[]},ye=function(t,e){const{all:n}=e.methods.two.transform.noun||{};return n?n(t.root,e.model):[t.root]},be=function(t,e){const{all:n}=e.methods.two.transform.adjective||{};return n?n(t.root,e.model):[t.root]},ve=function(t){return t=function(t){let e=0,n=null;for(let o=0;o(t.fuzzy&&t.choices&&t.choices.forEach((e=>{1===e.length&&e[0].word&&(e[0].fuzzy=!0,e[0].min=t.min)})),t)))}(t=t.map((t=>{if(void 0!==t.choices){if("or"!==t.operator)return t;if(!0===t.fuzzy)return t;!0===t.choices.every((t=>{if(1!==t.length)return!1;const e=t[0];return!0!==e.fuzzy&&!e.start&&!e.end&&void 0!==e.word&&!0!==e.negative&&!0!==e.optional&&!0!==e.method}))&&(t.fastOr=new Set,t.choices.forEach((e=>{t.fastOr.add(e[0].word)})),delete t.choices)}return t}))),t},xe=function(t,e){for(const n of e)if(t.has(n))return!0;return!1},je=function(t,e){for(let n=0;nn?o:n)+1;if(Math.abs(n-o)>(r||100))return r||100;const s=[];for(let t=0;t4)return n;u=e[i-1],a=c===u?0:1,l=s[r-1][i]+1,(h=s[r][i-1]+1)1&&i>1&&c===e[i-2]&&t[r-2]===u&&(h=s[r-2][i-2]+a)-1!==t.post.indexOf(e),ze={hasQuote:t=>Oe.test(t.pre)||ke.test(t.post),hasComma:t=>Se(t,","),hasPeriod:t=>!0===Se(t,".")&&!1===Se(t,"..."),hasExclamation:t=>Se(t,"!"),hasQuestionMark:t=>Se(t,"?")||Se(t,"¿"),hasEllipses:t=>Se(t,"..")||Se(t,"…"),hasSemicolon:t=>Se(t,";"),hasColon:t=>Se(t,":"),hasSlash:t=>/\//.test(t.text),hasHyphen:t=>Pe.test(t.post)||Pe.test(t.pre),hasDash:t=>_e.test(t.post)||_e.test(t.pre),hasContraction:t=>Boolean(t.implicit),isAcronym:t=>t.tags.has("Acronym"),isKnown:t=>t.tags.size>0,isTitleCase:t=>/^\p{Lu}[a-z'\u00C0-\u00FF]/u.test(t.text),isUpperCase:t=>/^\p{Lu}+$/u.test(t.text)};ze.hasQuotation=ze.hasQuote;let Ae=function(){};Ae=function(t,e,n,o){const r=function(t,e,n,o){if(!0===e.anything)return!0;if(!0===e.start&&0!==n)return!1;if(!0===e.end&&n!==o-1)return!1;if(void 0!==e.id&&e.id===t.id)return!0;if(void 0!==e.word){if(e.use)return e.word===t[e.use];if(null!==t.machine&&t.machine===e.word)return!0;if(void 0!==t.alias&&t.alias.hasOwnProperty(e.word))return!0;if(!0===e.fuzzy){if(e.word===t.root)return!0;if(Ee(e.word,t.normal)>=e.min)return!0}return!(!t.alias||!t.alias.some((t=>t===e.word)))||e.word===t.text||e.word===t.normal}if(void 0!==e.tag)return!0===t.tags.has(e.tag);if(void 0!==e.method)return"function"==typeof ze[e.method]&&!0===ze[e.method](t);if(void 0!==e.pre)return t.pre&&t.pre.includes(e.pre);if(void 0!==e.post)return t.post&&t.post.includes(e.post);if(void 0!==e.regex){let n=t.normal;return e.use&&(n=t[e.use]),e.regex.test(n)}if(void 0!==e.chunk)return t.chunk===e.chunk;if(void 0!==e.switch)return t.switch===e.switch;if(void 0!==e.machine)return t.normal===e.machine||t.machine===e.machine||t.root===e.machine;if(void 0!==e.sense)return t.sense===e.sense;if(void 0!==e.fastOr){if(e.pos&&!t.tags.has(e.pos))return null;const n=t.root||t.implicit||t.machine||t.normal;return e.fastOr.has(n)||e.fastOr.has(t.text)}return void 0!==e.choices&&("and"===e.operator?e.choices.every((e=>Ae(t,e,n,o))):e.choices.some((e=>Ae(t,e,n,o))))}(t,e,n,o);return!0===e.negative?!r:r};const $e=function(t,e){if(!0===t.end&&!0===t.greedy&&e.start_i+e.tn.max)return t.t=t.t+n.max,!0;if(!0===t.hasGroup){Te(t,t.t).length=o-t.t}return t.t=o,!0},Le=function(t,e=0){const n=t.regs[t.r];let o=!1;for(let s=0;s{let r=0;const s=t.t+o+e+r;if(void 0===t.terms[s])return!1;const i=Ae(t.terms[s],n,s+t.start_i,t.phrase_length);if(!0===i&&!0===n.greedy)for(let e=1;e{const o=n.every(((e,n)=>{const o=t.t+n;return void 0!==t.terms[o]&&Ae(t.terms[o],e,o,t.phrase_length)}));return!0===o&&n.length>e&&(e=n.length),o}))&&e}(t);if(o){if(!0===n.negative)return null;if(!0===t.hasGroup){Te(t,t.t).length+=o}if(!0===n.end){const e=t.phrase_length-1;if(t.t+t.start_i!==e)return null}return t.t+=o,!0}return!!n.optional||null},Fe=function(t){const{regs:e}=t,n=e[t.r],o=Object.assign({},n);o.negative=!1;if(Ae(t.terms[t.t],o,t.start_i+t.t,t.phrase_length))return!1;if(n.optional){const n=e[t.r+1];if(n){if(Ae(t.terms[t.t],n,t.start_i+t.t,t.phrase_length))t.r+=1;else if(n.optional&&e[t.r+2]){Ae(t.terms[t.t],e[t.r+2],t.start_i+t.t,t.phrase_length)&&(t.r+=2)}}}return n.greedy?function(t,e,n){let o=0;for(let r=t.t;ro||(t.t+=o,0))}(t,o,e[t.r+1]):(t.t+=1,!0)},qe=function(t){const{regs:e,phrase_length:n}=t,o=e[t.r];return t.t=function(t,e){const n=Object.assign({},t.regs[t.r],{start:!1,end:!1}),o=t.t;for(;t.tt.t?null:!0!==o.end||t.start_i+t.t===n||null},Ge=function(t){const{regs:e}=t,n=e[t.r],o=t.terms[t.t],r=t.t;if(n.optional&&e[t.r+1]&&n.negative)return!0;if(n.optional&&e[t.r+1]&&function(t){const{regs:e}=t,n=e[t.r],o=t.terms[t.t],r=Ae(o,e[t.r+1],t.start_i+t.t,t.phrase_length);if(n.negative||r){const n=t.terms[t.t+1];n&&Ae(n,e[t.r+1],t.start_i+t.t,t.phrase_length)||(t.r+=1)}}(t),o.implicit&&t.terms[t.t+1]&&function(t){const e=t.terms[t.t],n=t.regs[t.r];if(e.implicit&&t.terms[t.t+1]){if(!t.terms[t.t+1].implicit)return;n.word===e.normal&&(t.t+=1),"hasContraction"===n.method&&(t.t+=1)}}(t),t.t+=1,!0===n.end&&t.t!==t.terms.length&&!0!==n.greedy)return null;if(!0===n.greedy){if(!qe(t))return null}return!0===t.hasGroup&&function(t,e){const n=t.regs[t.r],o=Te(t,e);t.t>1&&n.greedy?o.length+=t.t-e:o.length++}(t,r),!0},Be=function(t,e,n,o){if(0===t.length||0===e.length)return null;const r={t:0,terms:t,r:0,regs:e,groups:{},start_i:n,phrase_length:o,inGroup:null};for(;r.r!t.optional)))break;return null}if(!0===t.anything&&!0===t.greedy){if(!Ce(r))return null;continue}if(void 0!==t.choices&&"or"===t.operator){if(!Ne(r))return null;continue}if(void 0!==t.choices&&"and"===t.operator){if(!Ve(r))return null;continue}if(!0===t.anything){if(t.negative&&t.anything)return null;if(!Ge(r))return null;continue}if(!0===$e(t,r)){if(!Ge(r))return null;continue}if(t.negative){if(!Fe(r))return null;continue}if(!0!==Ae(r.terms[r.t],t,r.start_i+r.t,r.phrase_length)){if(!0!==t.optional)return null}else{if(!Ge(r))return null}}const s=[null,n,r.t+n];if(s[1]===s[2])return null;const i={};return Object.keys(r.groups).forEach((t=>{const e=r.groups[t],o=n+e.start;i[t]=[null,o,o+e.length]})),{pointer:s,groups:i}},De=function(t,e){return t.pointer[0]=e,Object.keys(t.groups).forEach((n=>{t.groups[n][0]=e})),t},Me=function(t,e,n){let o=Be(t,e,0,t.length);return o?(o=De(o,n),o):null},Ue={one:{termMethods:ze,parseMatch:function(t,e,n){if(null==t||""===t)return[];e=e||{},"number"==typeof t&&(t=String(t));let o=function(t){const e=t.split(ee);let n=[];e.forEach((t=>{re(t)?n.push(t):n=n.concat(t.split(ne))})),n=se(n);let o=[];return n.forEach((t=>{(t=>/^[![^]*(<[^<]*>)?\(/.test(t)&&/\)[?\]+*$~]*$/.test(t))(t)||re(t)?o.push(t):o=o.concat(t.split(oe))})),o=se(o),o}(t);return o=o.map((t=>me(t,e))),o=function(t,e){const n=e.model.one.prefixes;for(let e=t.length-1;e>=0;e-=1){const o=t[e];if(o.word&&ge.test(o.word)){let r=o.word.split(/[-–—]/g);if(n.hasOwnProperty(r[0]))continue;r=r.filter((t=>t)).reverse(),t.splice(e,1),r.forEach((n=>{const r=Object.assign({},o);r.word=n,t.splice(e,0,r)}))}}return t}(o,n),o=function(t,e){return t.map((t=>{if(t.root)if(e.methods.two&&e.methods.two.transform){let n=[];t.pos?"Verb"===t.pos?n=n.concat(we(t,e)):"Noun"===t.pos?n=n.concat(ye(t,e)):"Adjective"===t.pos&&(n=n.concat(be(t,e))):(n=n.concat(we(t,e)),n=n.concat(ye(t,e)),n=n.concat(be(t,e))),n=n.filter((t=>t)),n.length>0&&(t.operator="or",t.fastOr=new Set(n))}else t.machine=t.root,delete t.id,delete t.root;return t}))}(o,n),o=ve(o),o},match:function(t,e,n){n=n||[];const{regs:o,group:r,justOne:s}=e;let i=[];if(!o||0===o.length)return{ptrs:[],byGroup:{}};const c=o.filter((t=>!0!==t.optional&&!0!==t.negative)).length;t:for(let e=0;et&&(t=Math.abs(n-1))}}else{const t=Me(r,o,e);t&&i.push(t)}}return!0===o[o.length-1].end&&(i=i.filter((e=>{const n=e.pointer[0];return t[n].length===e.pointer[2]}))),e.notIf&&(i=function(t,e,n){return t=t.filter((t=>{const[o,r,s]=t.pointer,i=n[o].slice(r,s);for(let t=0;t{t.groups[e]&&n.push(t.groups[e])})):t.forEach((t=>{n.push(t.pointer),Object.keys(t.groups).forEach((e=>{o[e]=o[e]||[],o[e].push(t.groups[e])}))}))),{ptrs:n,byGroup:o}}(i,r),i.ptrs.forEach((e=>{const[n,o,r]=e;e[3]=t[n][o].id,e[4]=t[n][r-1].id})),i}}};var We={api:function(t){Object.assign(t.prototype,te)},methods:Ue,lib:{parseMatch:function(t,e){const n=this.world(),o=n.methods.one.killUnicode;return o&&(t=o(t,n)),n.methods.one.parseMatch(t,e,n)}}};const Ie=/^\../,Re=/^#./,Qe=function(t,e){const n={},o={};return Object.keys(e).forEach((r=>{let s=e[r];const i=function(t){let e="",n="";return t=t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"),Ie.test(t)?e=``),e+=">",{start:e,end:n}}(r);"string"==typeof s&&(s=t.match(s)),s.docs.forEach((t=>{if(t.every((t=>t.implicit)))return;const e=t[0].id;n[e]=n[e]||[],n[e].push(i.start);const r=t[t.length-1].id;o[r]=o[r]||[],o[r].push(i.end)}))})),{starts:n,ends:o}};var He={html:function(t){const{starts:e,ends:n}=Qe(this,t);let o="";return this.docs.forEach((t=>{for(let r=0;r{let n=t.pre||"",r=t.post||"";"some"===e.punctuation&&(n=n.replace(Ke,""),Xe.test(r)&&(r=" "),r=r.replace(Je,""),r=r.replace(/\?!+/,"?"),r=r.replace(/!+/,"!"),r=r.replace(/\?+/,"?"),r=r.replace(/\.{2,}/,""),t.tags.has("Abbreviation")&&(r=r.replace(/\./,""))),"some"===e.whitespace&&(n=n.replace(/\s/,""),r=r.replace(/\s+/," ")),e.keepPunct||(n=n.replace(Ke,""),r="-"===r?" ":r.replace(Ze,""));let s=t[e.form||"text"]||t.normal||"";"implicit"===e.form&&(s=t.implicit||t.text),"root"===e.form&&t.implicit&&(s=t.root||t.implicit||t.normal),"machine"!==e.form&&"implicit"!==e.form&&"root"!==e.form||!t.implicit||r&&Ye.test(r)||(r+=" "),o+=n+s+r})),!1===n&&(o=o.trim()),!0===e.lowerCase&&(o=o.toLowerCase()),o},en={text:{form:"text"},normal:{whitespace:"some",punctuation:"some",case:"some",unicode:"some",form:"normal"},machine:{keepSpace:!1,whitespace:"some",punctuation:"some",case:"none",unicode:"some",form:"machine"},root:{keepSpace:!1,whitespace:"some",punctuation:"some",case:"some",unicode:"some",form:"root"},implicit:{form:"implicit"}};en.clean=en.normal,en.reduced=en.root;const nn=[];let on=0;for(;on<64;)nn[on]=0|4294967296*Math.sin(++on%Math.PI);const rn=function(t){let e,n,o,r=decodeURI(encodeURI(t))+"€",s=r.length;const i=[e=1732584193,n=4023233417,~e,~n],c=[];for(t=--s/4+2|15,c[--t]=8*s;~s;)c[s>>2]|=r.charCodeAt(s)<<8*s--;for(on=r=0;on>4]+nn[r]+~~c[on|15&[r,5*r+1,3*r+5,7*r][s]])<<(s=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*s+r++%4])|o>>>-s),e,n])e=0|s[1],n=s[2];for(r=4;r;)i[--r]+=s[r]}for(t="";r<32;)t+=(i[r>>3]>>4*(1^r++)&15).toString(16);return t},sn={text:!0,terms:!0},cn={case:"none",unicode:"some",form:"machine",punctuation:"some"},un=function(t,e){return Object.assign({},t,e)},an={text:t=>tn(t,{keepPunct:!0},!1),normal:t=>tn(t,un(en.normal,{keepPunct:!0}),!1),implicit:t=>tn(t,un(en.implicit,{keepPunct:!0}),!1),machine:t=>tn(t,cn,!1),root:t=>tn(t,un(cn,{form:"root"}),!1),hash:t=>rn(tn(t,{keepPunct:!0},!1)),offset:t=>{const e=an.text(t).length;return{index:t[0].offset.index,start:t[0].offset.start,length:e}},terms:t=>t.map((t=>{const e=Object.assign({},t);return e.tags=Array.from(t.tags),e})),confidence:(t,e,n)=>e.eq(n).confidence(),syllables:(t,e,n)=>e.eq(n).syllables(),sentence:(t,e,n)=>e.eq(n).fullSentence().text(),dirty:t=>t.some((t=>!0===t.dirty))};an.sentences=an.sentence,an.clean=an.normal,an.reduced=an.root;const ln={json:function(t){const e=(n=this,"string"==typeof(o=(o=t)||{})&&(o={}),(o=Object.assign({},sn,o)).offset&&n.compute("offset"),n.docs.map(((t,e)=>{const r={};return Object.keys(o).forEach((s=>{o[s]&&an[s]&&(r[s]=an[s](t,n,e))})),r})));var n,o;return"number"==typeof t?e[t]:e}};ln.data=ln.json;const hn=function(t){const e=t.pre||"",n=t.post||"";return e+t.text+n},fn=function(t,e){const n=function(t,e){const n={};return Object.keys(e).forEach((o=>{t.match(o).fullPointer.forEach((t=>{n[t[3]]={fn:e[o],end:t[2]}}))})),n}(t,e);let o="";return t.docs.forEach(((e,r)=>{for(let s=0;st.reduce(((t,e)=>t+e.pre+e.text+e.post),"").trim()));return t.filter((t=>t))}if("freq"===t||"frequency"===t||"topk"===t)return function(t){const e={};t.forEach((t=>{e[t]=e[t]||0,e[t]+=1}));const n=Object.keys(e).map((t=>({normal:t,count:e[t]})));return n.sort(((t,e)=>t.count>e.count?-1:0))}(this.json({normal:!0}).map((t=>t.normal)));if("terms"===t){let t=[];return this.docs.forEach((e=>{let n=e.map((t=>t.text));n=n.filter((t=>t)),t=t.concat(n)})),t}return"tags"===t?this.docs.map((t=>t.reduce(((t,e)=>(t[e.implicit||e.normal]=Array.from(e.tags),t)),{}))):"debug"===t?this.debug():this.text()},wrap:function(t){return fn(this,t)}};var dn={text:function(t){let e={};var n;if(t&&"string"==typeof t&&en.hasOwnProperty(t)?e=Object.assign({},en[t]):t&&(n=t,"[object Object]"===Object.prototype.toString.call(n))&&(e=Object.assign({},t)),void 0!==e.keepSpace||this.isFull()||(e.keepSpace=!1),void 0===e.keepEndPunct&&this.pointer){const t=this.pointer[0];t&&t[1]?e.keepEndPunct=!1:e.keepEndPunct=!0}return void 0===e.keepPunct&&(e.keepPunct=!0),void 0===e.keepSpace&&(e.keepSpace=!0),function(t,e){let n="";if(!t||!t[0]||!t[0][0])return n;for(let o=0;o""+t+gn,red:t=>""+t+gn,blue:t=>""+t+gn,magenta:t=>""+t+gn,cyan:t=>""+t+gn,yellow:t=>""+t+gn,black:t=>""+t+gn,dim:t=>""+t+gn,i:t=>""+t+gn},yn={tags:function(t){const{docs:e,model:n}=t;0===e.length&&console.log(wn.blue("\n ──────")),e.forEach((e=>{console.log(wn.blue("\n ┌─────────")),e.forEach((e=>{const o=[...e.tags||[]];let r=e.text||"-";e.sense&&(r=`{${e.normal}/${e.sense}}`),e.implicit&&(r="["+e.implicit+"]"),r=wn.yellow(r);let s="'"+r+"'";if(e.reference){const n=t.update([e.reference]).text("normal");s+=` - ${wn.dim(wn.i("["+n+"]"))}`}s=s.padEnd(18);const i=wn.blue(" │ ")+wn.i(s)+" - "+function(t,e){return e.one.tagSet&&(t=t.map((t=>{if(!e.one.tagSet.hasOwnProperty(t))return t;const n=e.one.tagSet[t].color||"blue";return wn[n](t)}))),t.join(", ")}(o,n);console.log(i)}))})),console.log("\n")},clientSide:function(t){console.log("%c -=-=- ","background-color:#6699cc;"),t.forEach((t=>{console.groupCollapsed(t.text());const e=t.docs[0].map((t=>{let e=t.text||"-";t.implicit&&(e="["+t.implicit+"]");return{text:e,tags:"["+Array.from(t.tags).join(", ")+"]"}}));console.table(e,["text","tags"]),console.groupEnd()}))},chunks:function(t){const{docs:e}=t;console.log(""),e.forEach((t=>{const e=[];t.forEach((t=>{"Noun"===t.chunk?e.push(wn.blue(t.implicit||t.normal)):"Verb"===t.chunk?e.push(wn.green(t.implicit||t.normal)):"Adjective"===t.chunk?e.push(wn.yellow(t.implicit||t.normal)):"Pivot"===t.chunk?e.push(wn.red(t.implicit||t.normal)):e.push(t.implicit||t.normal)})),console.log(e.join(" "),"\n")})),console.log("\n")},highlight:function(t){if(!t.found)return;const e={};t.fullPointer.forEach((t=>{e[t[0]]=e[t[0]]||[],e[t[0]].push(t)})),Object.keys(e).forEach((n=>{let o=t.update([[Number(n)]]).text();t.update(e[n]).json({offset:!0}).forEach(((t,e)=>{o=function(t,e,n){const o=((t,e,n)=>{const o=9*n,r=e.start+o,s=r+e.length;return[t.substring(0,r),t.substring(r,s),t.substring(s,t.length)]})(t,e,n);return`${o[0]}${wn.blue(o[1])}${o[2]}`}(o,t.offset,e)})),console.log(o)})),console.log("\n")}};var bn={api:function(t){Object.assign(t.prototype,mn)},methods:{one:{hash:rn,debug:yn}}};const vn=function(t,e){if(t[0]!==e[0])return!1;const[,n,o]=t,[,r,s]=e;return n<=r&&o>r||r<=n&&s>n},xn=function(t){const e={};return t.forEach((t=>{e[t[0]]=e[t[0]]||[],e[t[0]].push(t)})),e},jn=function(t,e){const n=xn(e),o=[];return t.forEach((t=>{const[e]=t;let r=n[e]||[];if(r=r.filter((e=>function(t,e){return t[1]<=e[1]&&e[2]<=t[2]}(t,e))),0===r.length)return void o.push({passthrough:t});r=r.sort(((t,e)=>t[1]-e[1]));let s=t;r.forEach(((t,e)=>{const n=function(t,e){const[n,o]=t,r=e[1],s=e[2],i={};if(os&&(i.after=[n,s,t[2]]),i}(s,t);r[e+1]?(o.push({before:n.before,match:n.match}),n.after&&(s=n.after)):o.push(n)}))})),o};var En={one:{termList:function(t){const e=[];for(let n=0;n{if(!o)return;let[s,i,c,u,a]=o,l=e[s]||[];if(void 0===i&&(i=0),void 0===c&&(c=l.length),!u||l[i]&&l[i].id===u)l=l.slice(i,c);else{const n=function(t,e,n){for(let o=0;o<20;o+=1){if(e[n-o]){const r=e[n-o].findIndex((e=>e.id===t));if(-1!==r)return[n-o,r]}if(e[n+o]){const r=e[n+o].findIndex((e=>e.id===t));if(-1!==r)return[n+o,r]}}return null}(u,e,s);if(null!==n){const o=c-i;l=e[n[0]].slice(n[1],n[1]+o);const s=l[0]?l[0].id:null;t[r]=[n[0],n[1],n[1]+o,s]}}0!==l.length&&i!==c&&(a&&l[l.length-1].id!==a&&(l=function(t,e){const[n,o,,,r]=t,s=e[n],i=s.findIndex((t=>t.id===r));return-1===i?(t[2]=e[n].length,t[4]=s.length?s[s.length-1].id:null):t[2]=i,e[n].slice(o,t[2]+1)}(o,e)),n.push(l))})),n=n.filter((t=>t.length>0)),n},pointer:{indexN:xn,splitAll:jn}}};const On=function(t,e){const n=t.concat(e),o=xn(n);let r=[];return n.forEach((t=>{const[e]=t;if(1===o[e].length)return void r.push(t);const n=o[e].filter((e=>vn(t,e)));n.push(t);const s=function(t){let e=t[0][1],n=t[0][2];return t.forEach((t=>{t[1]n&&(n=t[2])})),[t[0][0],e,n]}(n);r.push(s)})),r=function(t){const e={};for(let n=0;n{t.passthrough&&n.push(t.passthrough),t.before&&n.push(t.before),t.after&&n.push(t.after)})),n},Pn=(t,e)=>{return"string"==typeof t||(n=t,"[object Array]"===Object.prototype.toString.call(n))?e.match(t):t||e.none();var n},_n=function(t,e){return t.map((t=>{const[n,o]=t;return e[n]&&e[n][o]&&(t[3]=e[n][o].id),t}))},Sn={union:function(t){t=Pn(t,this);let e=On(this.fullPointer,t.fullPointer);return e=_n(e,this.document),this.toView(e)}};Sn.and=Sn.union,Sn.intersection=function(t){t=Pn(t,this);let e=function(t,e){const n=xn(e),o=[];return t.forEach((t=>{let e=n[t[0]]||[];e=e.filter((e=>vn(t,e))),0!==e.length&&e.forEach((e=>{const n=function(t,e){const n=t[1]e[2]?e[2]:t[2];return n{t=On(t,[e])})),t=_n(t,this.document),this.update(t)};var zn={methods:En,api:function(t){Object.assign(t.prototype,Sn)}};const An=function(t){return!0===t.optional||!0===t.negative?null:t.tag?"#"+t.tag:t.word?t.word:t.switch?`%${t.switch}%`:null},$n=function(t,e){const n=e.methods.one.parseMatch;return t.forEach((t=>{t.regs=n(t.match,{},e),"string"==typeof t.ifNo&&(t.ifNo=[t.ifNo]),t.notIf&&(t.notIf=n(t.notIf,{},e)),t.needs=function(t){const e=[];return t.forEach((t=>{e.push(An(t)),"and"===t.operator&&t.choices&&t.choices.forEach((t=>{t.forEach((t=>{e.push(An(t))}))}))})),e.filter((t=>t))}(t.regs);const{wants:o,count:r}=function(t){const e=[];let n=0;return t.forEach((t=>{"or"!==t.operator||t.optional||t.negative||(t.fastOr&&Array.from(t.fastOr).forEach((t=>{e.push(t)})),t.choices&&t.choices.forEach((t=>{t.forEach((t=>{const n=An(t);n&&e.push(n)}))})),n+=1)})),{wants:e,count:n}}(t.regs);t.wants=o,t.minWant=r,t.minWords=t.regs.filter((t=>!t.optional)).length})),t};var Tn={buildNet:function(t,e){t=$n(t,e);const n={};t.forEach((t=>{t.needs.forEach((e=>{n[e]=Array.isArray(n[e])?n[e]:[],n[e].push(t)})),t.wants.forEach((e=>{n[e]=Array.isArray(n[e])?n[e]:[],n[e].push(t)}))})),Object.keys(n).forEach((t=>{const e={};n[t]=n[t].filter((t=>"boolean"!=typeof e[t.match]&&(e[t.match]=!0,!0)))}));const o=t.filter((t=>0===t.needs.length&&0===t.wants.length));return{hooks:n,always:o}},bulkMatch:function(t,e,n,o={}){const r=n.one.cacheDoc(t);let s=function(t,e){return t.map(((n,o)=>{let r=[];Object.keys(e).forEach((n=>{t[o].has(n)&&(r=r.concat(e[n]))}));const s={};return r=r.filter((t=>"boolean"!=typeof s[t.match]&&(s[t.match]=!0,!0))),r}))}(r,e.hooks);s=function(t,e){return t.map(((t,n)=>{const o=e[n];return(t=(t=t.filter((t=>t.needs.every((t=>o.has(t)))))).filter((t=>void 0===t.ifNo||!0!==t.ifNo.some((t=>o.has(t)))))).filter((t=>0===t.wants.length||t.wants.filter((t=>o.has(t))).length>=t.minWant))}))}(s,r),e.always.length>0&&(s=s.map((t=>t.concat(e.always)))),s=function(t,e){return t.map(((t,n)=>{const o=e[n].length;return t=t.filter((t=>o>=t.minWords)),t}))}(s,t);const i=function(t,e,n,o,r){const s=[];for(let n=0;n0&&(u.ptrs.forEach((t=>{t[0]=n;const e=Object.assign({},c,{pointer:t});void 0!==c.unTag&&(e.unTag=c.unTag),s.push(e)})),!0===r.matchOne))return[s[0]]}return s}(s,t,0,n,o);return i},bulkTagger:function(t,e,n){const{model:o,methods:r}=n,{getDoc:s,setTag:i,unTag:c}=r.one,u=r.two.looksPlural;if(0===t.length)return t;return("undefined"!=typeof process&&process.env?process.env:self.env||{}).DEBUG_TAGS&&console.log(`\n\n → ${t.length} post-tagger:`),t.map((t=>{if(!t.tag&&!t.chunk&&!t.unTag)return;const r=t.reason||t.match,a=s([t.pointer],e)[0];if(!0===t.safe){if(!1===function(t,e,n){const o=n.one.tagSet;if(!o.hasOwnProperty(e))return!0;const r=o[e].not||[];for(let e=0;et.frozen=!0))}void 0!==t.unTag&&c(a,t.unTag,n,t.safe,r),t.chunk&&a.forEach((e=>e.chunk=t.chunk))}))}},Cn={lib:{buildNet:function(t){const e=this.methods().one.buildNet(t,this.world());return e.isNet=!0,e}},api:function(t){t.prototype.sweep=function(t,e={}){const{world:n,docs:o}=this,{methods:r}=n;let s=r.one.bulkMatch(o,t,this.methods,e);!1!==e.tagger&&r.one.bulkTagger(s,o,this.world),s=s.map((t=>{const e=t.pointer,n=o[e[0]][e[1]],r=e[2]-e[1];return n.index&&(t.pointer=[n.index[0],n.index[1],e[1]+r]),t}));const i=s.map((t=>t.pointer));return s=s.map((t=>(t.view=this.update([t.pointer]),delete t.regs,delete t.needs,delete t.pointer,delete t._expanded,t))),{view:this.update(i),found:s}}},methods:{one:Tn}};const Ln=/ /,Nn=function(t,e){"Noun"===e&&(t.chunk=e),"Verb"===e&&(t.chunk=e)},Vn=function(t,e,n,o){if(!0===t.tags.has(e))return null;if("."===e)return null;!0===t.frozen&&(o=!0);const r=n[e];if(r){if(r.not&&r.not.length>0)for(let e=0;e0)for(let e=0;e{const o=t.map((t=>t.text||"["+t.implicit+"]")).join(" ");var r;"string"!=typeof e&&e.length>2&&(e=e.slice(0,2).join(", #")+" +"),e="string"!=typeof e?e.join(", #"):e,console.log(` ${(r=o,""+r+"").padEnd(24)} → #${e.padEnd(22)} ${(t=>""+t+"")(n)}`)})(t,e,r),!0!=(c=e,"[object Array]"===Object.prototype.toString.call(c)))if("string"==typeof e)if(e=e.trim(),Ln.test(e))!function(t,e,n,o){const r=e.split(Ln);t.forEach(((t,e)=>{let s=r[e];s&&(s=s.replace(/^#/,""),Vn(t,s,n,o))}))}(t,e,s,o);else{e=e.replace(/^#/,"");for(let n=0;nFn(t,e,n,o)))},qn=function(t){return t.children=t.children||[],t._cache=t._cache||{},t.props=t.props||{},t._cache.parents=t._cache.parents||[],t._cache.children=t._cache.children||[],t},Gn=/^ *(#|\/\/)/,Bn=function(t){let e=t.trim().split(/->/),n=[];e.forEach((t=>{n=n.concat(function(t){if(!(t=t.trim()))return null;if(/^\[/.test(t)&&/\]$/.test(t)){let e=(t=(t=t.replace(/^\[/,"")).replace(/\]$/,"")).split(/,/);return e=e.map((t=>t.trim())).filter((t=>t)),e=e.map((t=>qn({id:t}))),e}return[qn({id:t})]}(t))})),n=n.filter((t=>t));let o=n[0];for(let t=1;t{let n=[],o=[t];for(;o.length>0;){let t=o.pop();n.push(t),t.children&&t.children.forEach((n=>{e&&e(t,n),o.push(n)}))}return n},Mn=t=>"[object Array]"===Object.prototype.toString.call(t),Un=t=>(t=t||"").trim(),Wn=function(t=[]){return"string"==typeof t?function(t){let e=t.split(/\r?\n/),n=[];e.forEach((t=>{if(!t.trim()||Gn.test(t))return;let e=(t=>{const e=/^( {2}|\t)/;let n=0;for(;e.test(t);)t=t.replace(e,""),n+=1;return n})(t);n.push({indent:e,node:Bn(t)})}));let o=function(t){let e={children:[]};return t.forEach(((n,o)=>{0===n.indent?e.children=e.children.concat(n.node):t[o-1]&&function(t,e){let n=t[e].indent;for(;e>=0;e-=1)if(t[e].indent{e[t.id]=t}));let n=qn({});return t.forEach((t=>{if((t=qn(t)).parent)if(e.hasOwnProperty(t.parent)){let n=e[t.parent];delete t.parent,n.children.push(t)}else console.warn(`[Grad] - missing node '${t.parent}'`);else n.children.push(t)})),n}(t):(Dn(e=t).forEach(qn),e);var e},In=function(t,e){let n="-> ";e&&(n=(t=>""+t+"")("→ "));let o="";return Dn(t).forEach(((t,r)=>{let s=t.id||"";if(e&&(s=(t=>""+t+"")(s)),0===r&&!t.id)return;let i=t._cache.parents.length;o+=" ".repeat(i)+n+s+"\n"})),o},Rn=function(t){let e=Dn(t);e.forEach((t=>{delete(t=Object.assign({},t)).children}));let n=e[0];return n&&!n.id&&0===Object.keys(n.props).length&&e.shift(),e},Qn={text:In,txt:In,array:Rn,flat:Rn},Hn=function(t,e){return"nested"===e||"json"===e?t:"debug"===e?(console.log(In(t,!0)),null):Qn.hasOwnProperty(e)?Qn[e](t):t},Zn=t=>{Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cache.parents||[],e._cache.parents=t._cache.parents.concat([t.id]))}))},Kn=/\//;class g{constructor(t={}){Object.defineProperty(this,"json",{enumerable:!1,value:t,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(t={}){let e=this.json.props||{};return"string"==typeof t&&(e[t]=!0),this.json.props=Object.assign(e,t),this}get(t){if(t=Un(t),!Kn.test(t)){let e=this.json.children.find((e=>e.id===t));return new g(e)}let e=((t,e)=>{let n=(t=>"string"!=typeof t?t:(t=t.replace(/^\//,"")).split(/\//))(e=e||"");for(let e=0;et.id===n[e]));if(!o)return null;t=o}return t})(this.json,t)||qn({});return new g(e)}add(t,e={}){if(Mn(t))return t.forEach((t=>this.add(Un(t),e))),this;t=Un(t);let n=qn({id:t,props:e});return this.json.children.push(n),new g(n)}remove(t){return t=Un(t),this.json.children=this.json.children.filter((e=>e.id!==t)),this}nodes(){return Dn(this.json).map((t=>(delete(t=Object.assign({},t)).children,t)))}cache(){return(t=>{let e=Dn(t,((t,e)=>{t.id&&(t._cache.parents=t._cache.parents||[],t._cache.children=t._cache.children||[],e._cache.parents=t._cache.parents.concat([t.id]))})),n={};e.forEach((t=>{t.id&&(n[t.id]=t)})),e.forEach((t=>{t._cache.parents.forEach((e=>{n.hasOwnProperty(e)&&n[e]._cache.children.push(t.id)}))})),t._cache.children=Object.keys(n)})(this.json),this}list(){return Dn(this.json)}fillDown(){var t;return t=this.json,Dn(t,((t,e)=>{e.props=((t,e)=>(Object.keys(e).forEach((n=>{if(e[n]instanceof Set){let o=t[n]||new Set;t[n]=new Set([...o,...e[n]])}else if((t=>t&&"object"==typeof t&&!Array.isArray(t))(e[n])){let o=t[n]||{};t[n]=Object.assign({},e[n],o)}else Mn(e[n])?t[n]=e[n].concat(t[n]||[]):void 0===t[n]&&(t[n]=e[n])})),t))(e.props,t.props)})),this}depth(){Zn(this.json);let t=Dn(this.json),e=t.length>1?1:0;return t.forEach((t=>{if(0===t._cache.parents.length)return;let n=t._cache.parents.length+1;n>e&&(e=n)})),e}out(t){return Zn(this.json),Hn(this.json,t)}debug(){return Zn(this.json),Hn(this.json,"debug"),this}}const Jn=function(t){let e=Wn(t);return new g(e)};Jn.prototype.plugin=function(t){t(this)};const Xn={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Hyphenated:"cyan",Adverb:"cyan"},Yn=function(t){if(Xn.hasOwnProperty(t.id))return Xn[t.id];if(Xn.hasOwnProperty(t.is))return Xn[t.is];const e=t._cache.parents.find((t=>Xn[t]));return Xn[e]},to=function(t){return t?"string"==typeof t?[t]:t:[]},eo=function(t,e){return t=function(t,e){return Object.keys(t).forEach((n=>{t[n].isA&&(t[n].is=t[n].isA),t[n].notA&&(t[n].not=t[n].notA),t[n].is&&"string"==typeof t[n].is&&(e.hasOwnProperty(t[n].is)||t.hasOwnProperty(t[n].is)||(t[t[n].is]={})),t[n].not&&"string"==typeof t[n].not&&!t.hasOwnProperty(t[n].not)&&(e.hasOwnProperty(t[n].not)||t.hasOwnProperty(t[n].not)||(t[t[n].not]={}))})),t}(t,e),Object.keys(t).forEach((e=>{t[e].children=to(t[e].children),t[e].not=to(t[e].not)})),Object.keys(t).forEach((e=>{(t[e].not||[]).forEach((n=>{t[n]&&t[n].not&&t[n].not.push(e)}))})),t};var no={one:{setTag:Fn,unTag:function(t,e,n){e=e.trim().replace(/^#/,"");for(let o=0;o0)for(let t=0;t0&&(t=function(t){return Object.keys(t).forEach((e=>{t[e]=Object.assign({},t[e]),t[e].novel=!0})),t}(t)),t=eo(t,e);const n=function(t){const e=Object.keys(t).map((e=>{const n=t[e],o={not:new Set(n.not),also:n.also,is:n.is,novel:n.novel};return{id:e,parent:n.is,props:o,children:[]}}));return Jn(e).cache().fillDown().out("array")}(Object.assign({},e,t)),o=function(t){const e={};return t.forEach((t=>{const{not:n,also:o,is:r,novel:s}=t.props;let i=t._cache.parents;o&&(i=i.concat(o)),e[t.id]={is:r,not:n,novel:s,also:o,parents:i,children:t._cache.children,color:Yn(t)}})),Object.keys(e).forEach((t=>{const n=new Set(e[t].not);e[t].not.forEach((t=>{e[t]&&e[t].children.forEach((t=>n.add(t)))})),e[t].not=Array.from(n)})),e}(n);return o},canBe:function(t,e,n){if(!n.hasOwnProperty(e))return!0;const o=n[e].not||[];for(let e=0;er.one.setTag(o,t,i,n,e))):r.one.setTag(o,t,i,n,e),this.uncache(),this},tagSafe:function(t,e=""){return this.tag(t,e,!0)},unTag:function(t,e){if(!this.found||!t)return this;const n=this.termList();if(0===n.length)return this;const{methods:o,verbose:r,model:s}=this;!0===r&&console.log(" - ",t,e||"");const i=s.one.tagSet;return oo(t)?t.forEach((t=>o.one.unTag(n,t,i))):o.one.unTag(n,t,i),this.uncache(),this},canBe:function(t){t=t.replace(/^#/,"");const e=this.model.one.tagSet,n=this.methods.one.canBe,o=[];this.document.forEach(((r,s)=>{r.forEach(((r,i)=>{n(r,t,e)||o.push([s,i,i+1])}))}));const r=this.update(o);return this.difference(r)}};var so={addTags:function(t){const{model:e,methods:n}=this.world(),o=e.one.tagSet,r=(0,n.one.addTags)(t,o);return e.one.tagSet=r,this}};const io=new Set(["Auxiliary","Possessive"]);var co={model:{one:{tagSet:{}}},compute:{tagRank:function(t){const{document:e,world:n}=t,o=n.model.one.tagSet;e.forEach((t=>{t.forEach((t=>{const e=Array.from(t.tags);t.tagRank=function(t,e){return t=t.sort(((t,n)=>{if(io.has(t)||!e.hasOwnProperty(n))return 1;if(io.has(n)||!e.hasOwnProperty(t))return-1;let o=e[t].children||[];const r=o.length;return o=e[n].children||[],r-o.length})),t}(e,o)}))}))}},methods:no,api:function(t){Object.assign(t.prototype,ro)},lib:so};const uo=/([.!?\u203D\u2E18\u203C\u2047-\u2049\u3002]+\s)/g,ao=/^[.!?\u203D\u2E18\u203C\u2047-\u2049\u3002]+\s$/,lo=/((?:\r?\n|\r)+)/,ho=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,fo=/\S/,po=function(t){return Boolean(t.match(/\n$/))},mo={'"':'"',""":""","“":"”","‟":"”","„":"”","⹂":"”","‚":"’","«":"»","‹":"›","‵":"′","‶":"″","‷":"‴","〝":"〞","〟":"〞"},go=RegExp("["+Object.keys(mo).join("")+"]","g"),wo=RegExp("["+Object.values(mo).join("")+"]","g"),yo=function(t){if(!t)return!1;const e=t.match(wo);return null!==e&&1===e.length},bo=/\(/g,vo=/\)/g,xo=/\S/,jo=/^\s+/,Eo=function(t,e){const n=t.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:o,suffixes:r}=e.one;if(1===n[0].length&&/[a-z]/i.test(n[0]))return!1;if(o.hasOwnProperty(n[0]))return!1;if(n[1]=n[1].trim().replace(/[.?!]$/,""),r.hasOwnProperty(n[1]))return!1;if(!0===/^([a-z\u00C0-\u00FF`"'/]+)[-–—]([a-z0-9\u00C0-\u00FF].*)/i.test(t))return!0;return!0===/^[('"]?([0-9]{1,4})[-–—]([a-z\u00C0-\u00FF`"'/-]+[)'"]?$)/i.test(t)},Oo=function(t){const e=[],n=t.split(/[-–—]/);let o="-";const r=t.match(/[-–—]/);r&&r[0]&&(o=r);for(let t=0;t(t[e]=!0,t)),{});const Ao=/\p{Letter}/u,$o=/[\p{Number}\p{Currency_Symbol}]/u,To=/^[a-z]\.([a-z]\.)+/i,Co=/[sn]['’]$/,Lo=/([A-Z]\.)+[A-Z]?,?$/,No=/^[A-Z]\.,?$/,Vo=/[A-Z]{2,}('s|,)?$/,Fo=/([a-z]\.)+[a-z]\.?$/,qo=function(t){return function(t){return!0===Lo.test(t)||!0===Fo.test(t)||!0===No.test(t)||!0===Vo.test(t)}(t)&&(t=t.replace(/\./g,"")),t},Go=function(t,e){const n=e.methods.one.killUnicode;let o=t.text||"";o=function(t){const e=t=(t=(t=t||"").toLowerCase()).trim();return t=(t=(t=t.replace(/[,;.!?]+$/,"")).replace(/\u2026/g,"...")).replace(/\u2013/g,"-"),!1===/^[:;]/.test(t)&&(t=(t=(t=t.replace(/\.{3,}$/g,"")).replace(/[",.!:;?)]+$/g,"")).replace(/^['"(]+/g,"")),""===(t=(t=t.replace(/[\u200B-\u200D\uFEFF]/g,"")).trim())&&(t=e),t.replace(/([0-9]),([0-9])/g,"$1$2")}(o),o=n(o,e),o=qo(o),t.normal=o},Bo=/[ .][A-Z]\.? *$/i,Do=/(?:\u2026|\.{2,}) *$/,Mo=/\p{L}/u,Uo=/\. *$/,Wo=/^[A-Z]\. $/;var Io={one:{killUnicode:function(t,e){const n=e.model.one.unicode||{},o=(t=t||"").split("");return o.forEach(((t,e)=>{n[t]&&(o[e]=n[t])})),o.join("")},tokenize:{splitSentences:function(t,e){if(t=t||"",!(t=String(t))||"string"!=typeof t||!1===xo.test(t))return[];const n=function(t){const e=[],n=t.split(lo);for(let t=0;t0&&(r.push(s),t[e]=""):t[e+1]=s+(t[e+1]||"")}return r}(o,e),o=function(t){const e=[];for(let n=0;n0?(n[n.length-1]+=s,n.push(e)):n.push(s+e),s=""):s+=e}return s&&(0===n.length&&(n[0]=""),n[n.length-1]+=s),n=function(t){for(let e=1;et)),n},splitWhitespace:(t,e)=>{const{str:n,pre:o,post:r}=function(t,e){const{prePunctuation:n,postPunctuation:o,emoticons:r}=e.one;let s=t,i="",c="";const u=Array.from(t);if(r.hasOwnProperty(t.trim()))return{str:t.trim(),pre:i,post:" "};let a=u.length;for(let t=0;t(c=t||"",""))),t=s,i=""),{str:t,pre:i,post:c}}(t,e);return{text:n,pre:o,post:r,tags:new Set}},fromString:function(t,e){const{methods:n,model:o}=e,{splitSentences:r,splitTerms:s,splitWhitespace:i}=n.one.tokenize;return t=r(t=t||"",e).map((t=>{let n=s(t,o);return n=n.map((t=>i(t,o))),n.forEach((t=>{Go(t,e)})),n})),t}}}};const Ro={},Qo={};[[["approx","apt","bc","cyn","eg","esp","est","etc","ex","exp","prob","pron","gal","min","pseud","fig","jd","lat","lng","vol","fm","def","misc","plz","ea","ps","sec","pt","pref","pl","pp","qt","fr","sq","nee","ss","tel","temp","vet","ver","fem","masc","eng","adj","vb","rb","inf","situ","vivo","vitro","wr"]],[["dl","ml","gal","qt","pt","tbl","tsp","tbsp","km","dm","cm","mm","mi","td","hr","hrs","kg","hg","dg","cg","mg","µg","lb","oz","sq ft","hz","mps","mph","kmph","kb","mb","tb","lx","lm","fl oz","yb"],"Unit"],[["ad","al","arc","ba","bl","ca","cca","col","corp","ft","fy","ie","lit","ma","md","pd","tce"],"Noun"],[["adj","adm","adv","asst","atty","bldg","brig","capt","cmdr","comdr","cpl","det","dr","esq","gen","gov","hon","jr","llb","lt","maj","messrs","mlle","mme","mr","mrs","ms","mstr","phd","prof","pvt","rep","reps","res","rev","sen","sens","sfc","sgt","sir","sr","supt","surg"],"Honorific"],[["jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec"],"Month"],[["dept","univ","assn","bros","inc","ltd","co"],"Organization"],[["rd","st","dist","mt","ave","blvd","cl","cres","hwy","ariz","cal","calif","colo","conn","fla","fl","ga","ida","ia","kan","kans","minn","neb","nebr","okla","penna","penn","pa","dak","tenn","tex","ut","vt","va","wis","wisc","wy","wyo","usafa","alta","ont","que","sask"],"Place"]].forEach((t=>{t[0].forEach((e=>{Ro[e]=!0,Qo[e]="Abbreviation",void 0!==t[1]&&(Qo[e]=[Qo[e],t[1]])}))}));var Ho=["anti","bi","co","contra","de","extra","infra","inter","intra","macro","micro","mis","mono","multi","peri","pre","pro","proto","pseudo","re","sub","supra","trans","tri","un","out","ex"].reduce(((t,e)=>(t[e]=!0,t)),{});const Zo={"!":"¡","?":"¿Ɂ",'"':'“”"❝❞',"'":"‘‛❛❜’","-":"—–",a:"ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ",b:"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ",c:"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ",d:"ÐĎďĐđƉƊȡƋƌ",e:"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ",f:"ƑƒϜϝӺӻҒғſ",g:"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ",h:"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ",I:"ÌÍÎÏ",i:"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇",j:"ĴĵǰȷɈɉϳЈј",k:"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ",l:"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ",m:"ΜϺϻМмӍӎ",n:"ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ",o:"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ",p:"ƤΡρϷϸϼРрҎҏÞ",q:"Ɋɋ",r:"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ",s:"ŚśŜŝŞşŠšƧƨȘșȿЅѕ",t:"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт",u:"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ",v:"νѴѵѶѷ",w:"ŴŵƜωώϖϢϣШЩшщѡѿ",x:"×ΧχϗϰХхҲҳӼӽӾӿ",y:"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ",z:"ŹźŻżŽžƵƶȤȥɀΖ"},Ko={};Object.keys(Zo).forEach((function(t){Zo[t].split("").forEach((function(e){Ko[e]=t}))}));const Jo=/\//,Xo=/[a-z]\.[a-z]/i,Yo=/[0-9]/,tr=function(t,e){const n=t.normal||t.text||t.machine,o=e.model.one.aliases;if(o.hasOwnProperty(n)&&(t.alias=t.alias||[],t.alias.push(o[n])),Jo.test(n)&&!Xo.test(n)&&!Yo.test(n)){const e=n.split(Jo);e.length<=3&&e.forEach((e=>{""!==(e=e.trim())&&(t.alias=t.alias||[],t.alias.push(e))}))}return t},er=/^\p{Letter}+-\p{Letter}+$/u,nr=function(t){let e=t.implicit||t.normal||t.text;e=e.replace(/['’]s$/,""),e=e.replace(/s['’]$/,"s"),e=e.replace(/([aeiou][ktrp])in'$/,"$1ing"),er.test(e)&&(e=e.replace(/-/g,"")),e=e.replace(/^[#@]/,""),e!==t.normal&&(t.machine=e)},or=function(t,e){const n=t.docs;for(let o=0;oor(t,tr),machine:t=>or(t,nr),normal:t=>or(t,Go),freq:function(t){const e=t.docs,n={};for(let t=0;t{let i=(t=t.toLowerCase().trim()).length;e.max&&i>e.max&&(i=e.max);for(let c=e.min;c{delete o[t]})),o}(t,e,this.world());return Object.keys(r).forEach((t=>{n.one.typeahead.hasOwnProperty(t)?delete n.one.typeahead[t]:n.one.typeahead[t]=r[t]})),this}};var lr={model:{one:{typeahead:{}}},api:function(t){t.prototype.autoFill=cr},lib:ar,compute:ir,hooks:["typeahead"]};return h.extend(W),h.extend(bn),h.extend(We),h.extend(zn),h.extend(co),h.plugin(bt),h.extend(sr),h.extend(Ot),h.plugin(d),h.extend(qt),h.extend(lr),h.extend(Tt),h.extend(Cn),h}));