Socket
Socket
Sign inDemoInstall

autolinker

Package Overview
Dependencies
Maintainers
2
Versions
87
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

autolinker - npm Package Compare versions

Comparing version 2.1.0 to 2.2.0

4

dist/Autolinker.min.js
/*!
* Autolinker.js
* 2.1.0
* 2.2.0
*

@@ -10,3 +10,3 @@ * Copyright(c) 2018 Gregory Jacobs <greg@greg-jacobs.com>

*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Autolinker=e()}(this,function(){"use strict";function a(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}function e(t,e){for(var n=t.length-1;0<=n;n--)!0===e(t[n])&&t.splice(n,1)}var n=function(){function t(t){void 0===t&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return t.prototype.setTagName=function(t){return this.tagName=t,this},t.prototype.getTagName=function(){return this.tagName||""},t.prototype.setAttr=function(t,e){return this.getAttrs()[t]=e,this},t.prototype.getAttr=function(t){return this.getAttrs()[t]},t.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},t.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},t.prototype.setClass=function(t){return this.setAttr("class",t)},t.prototype.addClass=function(t){for(var e,n=this.getClass(),r=this.whitespaceRegex,u=n?n.split(r):[],o=t.split(r);e=o.shift();)-1===a(u,e)&&u.push(e);return this.getAttrs().class=u.join(" "),this},t.prototype.removeClass=function(t){for(var e,n=this.getClass(),r=this.whitespaceRegex,u=n?n.split(r):[],o=t.split(r);u.length&&(e=o.shift());){var i=a(u,e);-1!==i&&u.splice(i,1)}return this.getAttrs().class=u.join(" "),this},t.prototype.getClass=function(){return this.getAttrs().class||""},t.prototype.hasClass=function(t){return-1!==(" "+this.getClass()+" ").indexOf(" "+t+" ")},t.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},t.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},t.prototype.getInnerHTML=function(){return this.innerHTML||""},t.prototype.getInnerHtml=function(){return this.getInnerHTML()},t.prototype.toAnchorString=function(){var t=this.getTagName(),e=this.buildAttrsStr();return["<",t,e=e?" "+e:"",">",this.getInnerHtml(),"</",t,">"].join("")},t.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var t=this.getAttrs(),e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n+'="'+t[n]+'"');return e.join(" ")},t}();var r,u,o,i,t,s,c,h,l,p,f,g,m,d,x,y,b,A,w,v=function(){function t(t){void 0===t&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return t.prototype.build=function(t){return new n({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},t.prototype.createAttrs=function(t){var e={href:t.getAnchorHref()},n=this.createCssClass(t);return n&&(e.class=n),this.newWindow&&(e.target="_blank",e.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(e.title=t.getAnchorHref()),e},t.prototype.createCssClass=function(t){var e=this.className;if(e){for(var n=[e],r=t.getCssClassSuffixes(),u=0,o=r.length;u<o;u++)n.push(e+"-"+r[u]);return n.join(" ")}return""},t.prototype.processAnchorText=function(t){return t=this.doTruncate(t)},t.prototype.doTruncate=function(t){var e=this.truncate;if(!e||!e.length)return t;var n,r,u,o,i,a=e.length,s=e.location;return"smart"===s?function(t,e,i){var n,r;n=null==i?(i="&hellip;",r=3,8):(r=i.length,i.length);var u=function(t){var e="";return t.scheme&&t.host&&(e+=t.scheme+"://"),t.host&&(e+=t.host),t.path&&(e+="/"+t.path),t.query&&(e+="?"+t.query),t.fragment&&(e+="#"+t.fragment),e},o=function(t,e){var n=e/2,r=Math.ceil(n),u=-1*Math.floor(n),o="";return u<0&&(o=t.substr(u)),t.substr(0,r)+i+o};if(t.length<=e)return t;var a,s,c,h=e-r,l=(a={},(c=(s=t).match(/^([a-z]+):\/\//i))&&(a.scheme=c[1],s=s.substr(c[0].length)),(c=s.match(/^(.*?)(?=(\?|#|\/|$))/i))&&(a.host=c[1],s=s.substr(c[0].length)),(c=s.match(/^\/(.*?)(?=(\?|#|$))/i))&&(a.path=c[1],s=s.substr(c[0].length)),(c=s.match(/^\?(.*?)(?=(#|$))/i))&&(a.query=c[1],s=s.substr(c[0].length)),(c=s.match(/^#(.*?)$/i))&&(a.fragment=c[1]),a);if(l.query){var p=l.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);p&&(l.query=l.query.substr(0,p[1].length),t=u(l))}if(t.length<=e)return t;if(l.host&&(l.host=l.host.replace(/^www\./,""),t=u(l)),t.length<=e)return t;var f="";if(l.host&&(f+=l.host),f.length>=h)return l.host.length==e?(l.host.substr(0,e-r)+i).substr(0,h+n):o(f,h).substr(0,h+n);var g="";if(l.path&&(g+="/"+l.path),l.query&&(g+="?"+l.query),g){if(h<=(f+g).length)return(f+g).length==e?(f+g).substr(0,e):(f+o(g,h-f.length)).substr(0,h+n);f+=g}if(l.fragment){var m="#"+l.fragment;if(h<=(f+m).length)return(f+m).length==e?(f+m).substr(0,e):(f+o(m,h-f.length)).substr(0,h+n);f+=m}if(l.scheme&&l.host){var d=l.scheme+"://";if((f+d).length<h)return(d+f).substr(0,e)}if(f.length<=e)return f;var x="";return 0<h&&(x=f.substr(-1*Math.floor(h/2))),(f.substr(0,Math.ceil(h/2))+i+x).substr(0,h+n)}(t,a):"middle"===s?function(t,e,n){if(t.length<=e)return t;var r,u=e-(null==n?(n="&hellip;",r=8,3):(r=n.length,n.length)),o="";return 0<u&&(o=t.substr(-1*Math.floor(u/2))),(t.substr(0,Math.ceil(u/2))+n+o).substr(0,u+r)}(t,a):(u=a,o=n,(r=t).length>u&&(i=null==o?(o="&hellip;",3):o.length,r=r.substring(0,u-i)+o),r)},t}(),F=function(){function t(t){this.offset=0,this.text="",this.offset=t.offset,this.text=t.text}return t.prototype.getOffset=function(){return this.offset},t.prototype.getText=function(){return this.text},t}(),B=(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),C=function(n){function t(t){var e=n.call(this,t)||this;return e.comment="",e.comment=t.comment,e}return B(t,n),t.prototype.getType=function(){return"comment"},t.prototype.getComment=function(){return this.comment},t}(F),E=(u=function(t,e){return(u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}u(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),D=function(n){function t(t){var e=n.call(this,t)||this;return e.tagName="",e.closing=!1,e.tagName=t.tagName,e.closing=t.closing,e}return E(t,n),t.prototype.getType=function(){return"element"},t.prototype.getTagName=function(){return this.tagName},t.prototype.isClosing=function(){return this.closing},t}(F),k=(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),_=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return k(e,t),e.prototype.getType=function(){return"entity"},e}(F),T=(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getType=function(){return"text"},e}(F),j=(t=/[0-9a-zA-Z][0-9a-zA-Z:]*/,s=/[^\s"'>\/=\x00-\x1F\x7F]+/,h="(?:\\s*?=\\s*?"+(c=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/).source+")?",l=function(t){return"(?=("+s.source+"))\\"+t+h},new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",l(2),"|",c.source+")",")*",">",")","|","(?:","<(/)?","(?:",/!--([\s\S]+?)--/.source,"|","(?:","("+t.source+")","\\s*/?",")","|","(?:","("+t.source+")","\\s+","(?:","(?:\\s+|\\b)",l(7),")*","\\s*/?",")",")",">",")"].join(""),"gi")),M=/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi,O=function(){function t(){}return t.prototype.parse=function(t){for(var e,n,r=0,u=[];null!==(e=j.exec(t));){var o=e[0],i=e[4],a=e[1]||e[5]||e[6],s=!!e[3],c=e.index,h=t.substring(r,c);h&&(n=this.parseTextAndEntityNodes(r,h),u.push.apply(u,n)),i?u.push(this.createCommentNode(c,o,i)):u.push(this.createElementNode(c,o,a,s)),r=c+o.length}if(r<t.length){var l=t.substring(r);l&&(n=this.parseTextAndEntityNodes(r,l)).forEach(function(t){return u.push(t)})}return u},t.prototype.parseTextAndEntityNodes=function(t,e){for(var n=[],r=function(t,e){if(!e.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var n,r=[],u=0;n=e.exec(t);)r.push(t.substring(u,n.index)),r.push(n[0]),u=n.index+n[0].length;return r.push(t.substring(u)),r}(e,M),u=0,o=r.length;u<o;u+=2){var i=r[u],a=r[u+1];i&&(n.push(this.createTextNode(t,i)),t+=i.length),a&&(n.push(this.createEntityNode(t,a)),t+=a.length)}return n},t.prototype.createCommentNode=function(t,e,n){return new C({offset:t,text:e,comment:n.trim()})},t.prototype.createElementNode=function(t,e,n,r){return new D({offset:t,text:e,tagName:n.toLowerCase(),closing:r})},t.prototype.createEntityNode=function(t,e){return new _({offset:t,text:e})},t.prototype.createTextNode=function(t,e){return new P({offset:t,text:e})},t}(),N=function(){function t(t){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return t.prototype.getMatchedText=function(){return this.matchedText},t.prototype.setOffset=function(t){this.offset=t},t.prototype.getOffset=function(){return this.offset},t.prototype.getCssClassSuffixes=function(){return[this.getType()]},t.prototype.buildTag=function(){return this.tagBuilder.build(this)},t}(),z=(p=function(t,e){return(p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}p(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),R=function(n){function t(t){var e=n.call(this,t)||this;return e.email="",e.email=t.email,e}return z(t,n),t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(N),q=(f=function(t,e){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}f(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),S=function(n){function t(t){var e=n.call(this,t)||this;return e.serviceName="",e.hashtag="",e.serviceName=t.serviceName,e.hashtag=t.hashtag,e}return q(t,n),t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var t=this.serviceName,e=this.hashtag;switch(t){case"twitter":return"https://twitter.com/hashtag/"+e;case"facebook":return"https://www.facebook.com/hashtag/"+e;case"instagram":return"https://instagram.com/explore/tags/"+e;default:throw new Error("Unknown service name to point hashtag to: "+t)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t}(N),H=(g=function(t,e){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}g(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),U=function(n){function t(t){var e=n.call(this,t)||this;return e.serviceName="twitter",e.mention="",e.mention=t.mention,e.serviceName=t.serviceName,e}return H(t,n),t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;default:throw new Error("Unknown service name to point mention to: "+this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var t=n.prototype.getCssClassSuffixes.call(this),e=this.getServiceName();return e&&t.push(e),t},t}(N),W=(m=function(t,e){return(m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}m(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),I=function(n){function t(t){var e=n.call(this,t)||this;return e.number="",e.plusSign=!1,e.number=t.number,e.plusSign=t.plusSign,e}return W(t,n),t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(N),L=(d=function(t,e){return(d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}d(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),Z=function(n){function t(t){var e=n.call(this,t)||this;return e.url="",e.urlMatchType="scheme",e.protocolUrlMatch=!1,e.protocolRelativeMatch=!1,e.stripPrefix={scheme:!0,www:!0},e.stripTrailingSlash=!0,e.decodePercentEncoding=!0,e.schemePrefixRegex=/^(https?:\/\/)?/i,e.wwwPrefixRegex=/^(https?:\/\/)?(www\.)?/i,e.protocolRelativeRegex=/^\/\//,e.protocolPrepended=!1,e.urlMatchType=t.urlMatchType,e.url=t.url,e.protocolUrlMatch=t.protocolUrlMatch,e.protocolRelativeMatch=t.protocolRelativeMatch,e.stripPrefix=t.stripPrefix,e.stripTrailingSlash=t.stripTrailingSlash,e.decodePercentEncoding=t.decodePercentEncoding,e}return L(t,n),t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var t=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(t=this.url="http://"+t,this.protocolPrepended=!0),t},t.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,"&")},t.prototype.getAnchorText=function(){var t=this.getMatchedText();return this.protocolRelativeMatch&&(t=this.stripProtocolRelativePrefix(t)),this.stripPrefix.scheme&&(t=this.stripSchemePrefix(t)),this.stripPrefix.www&&(t=this.stripWwwPrefix(t)),this.stripTrailingSlash&&(t=this.removeTrailingSlash(t)),this.decodePercentEncoding&&(t=this.removePercentEncoding(t)),t},t.prototype.stripSchemePrefix=function(t){return t.replace(this.schemePrefixRegex,"")},t.prototype.stripWwwPrefix=function(t){return t.replace(this.wwwPrefixRegex,"$1")},t.prototype.stripProtocolRelativePrefix=function(t){return t.replace(this.protocolRelativeRegex,"")},t.prototype.removeTrailingSlash=function(t){return"/"===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t},t.prototype.removePercentEncoding=function(t){var e=t.replace(/%22/gi,"&quot;").replace(/%26/gi,"&amp;").replace(/%27/gi,"&#39;").replace(/%3C/gi,"&lt;").replace(/%3E/gi,"&gt;");try{return decodeURIComponent(e)}catch(t){return e}},t}(N),$=function(t){this.__jsduckDummyDocProp=null,this.tagBuilder=t.tagBuilder},V=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,Y=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,G=V+Y,J="(?:["+Y+"]{1,3}\\.){3}["+Y+"]{1,3}",K="["+G+"](?:["+G+"\\-]{0,61}["+G+"])?",Q=function(t){return"(?=("+K+"))\\"+t},X=function(t){return"(?:"+Q(t)+"(?:\\."+Q(t+1)+"){0,126}|"+J+")"},tt=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,et=(x=function(t,e){return(x=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}x(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),nt=function(r){function t(){var t,e,n=null!==r&&r.apply(this,arguments)||this;return n.matcherRegex=(t=G+"!#$%&'*+\\-\\/=?^_`{|}~",e=new RegExp("(?:["+t+"](?:["+t+']|\\.(?!\\.|@))*|\\"['+(t+'\\s"(),:;<>@\\[\\]')+'.]+\\")@'),new RegExp([e.source,X(1),"\\.",tt.source].join(""),"gi")),n}return et(t,r),t.prototype.parseMatches=function(t){for(var e,n=this.matcherRegex,r=this.tagBuilder,u=[];null!==(e=n.exec(t));){var o=e[0];u.push(new R({tagBuilder:r,matchedText:o,offset:e.index,email:o}))}return u},t}($),rt=function(){function t(){}return t.isValid=function(t,e){return!(e&&!this.isValidUriScheme(e)||this.urlMatchDoesNotHaveProtocolOrDot(t,e)||this.urlMatchDoesNotHaveAtLeastOneWordChar(t,e)&&!this.isValidIpAddress(t)||this.containsMultipleDots(t))},t.isValidIpAddress=function(t){var e=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==t.match(e)},t.containsMultipleDots=function(t){var e=t;return this.hasFullProtocolRegex.test(t)&&(e=t.split("://")[1]),-1<e.split("/")[0].indexOf("..")},t.isValidUriScheme=function(t){var e=t.match(this.uriSchemeRegex),n=e&&e[0].toLowerCase();return"javascript:"!==n&&"vbscript:"!==n},t.urlMatchDoesNotHaveProtocolOrDot=function(t,e){return!(!t||e&&this.hasFullProtocolRegex.test(e)||-1!==t.indexOf("."))},t.urlMatchDoesNotHaveAtLeastOneWordChar=function(t,e){return!(!t||!e)&&!this.hasWordCharAfterProtocolRegex.test(t)},t.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,t.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,t.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+V+"]"),t.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,t}(),ut=(y=function(t,e){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}y(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),ot=function(r){function t(t){var e,n=r.call(this,t)||this;return n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.matcherRegex=(e=new RegExp("[/?#](?:["+G+"\\-+&@#/%=~_()|'$*\\[\\]?!:,.;✓]*["+G+"\\-+&@#/%=~_()|'$*\\[\\]✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,X(2),")","|","(","(//)?",/(?:www\.)/.source,X(6),")","|","(","(//)?",X(10)+"\\.",tt.source,"(?![-"+G+"])",")",")","(?::[0-9]+)?","(?:"+e.source+")?"].join(""),"gi")),n.wordCharRegExp=new RegExp("["+G+"]"),n.openParensRe=/\(/g,n.closeParensRe=/\)/g,n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return ut(t,r),t.prototype.parseMatches=function(t){for(var e,n=this.matcherRegex,r=this.stripPrefix,u=this.stripTrailingSlash,o=this.decodePercentEncoding,i=this.tagBuilder,a=[];null!==(e=n.exec(t));){var s=e[0],c=e[1],h=e[4],l=e[5],p=e[9],f=e.index,g=l||p,m=t.charAt(f-1);if(rt.isValid(s,c)&&!(0<f&&"@"===m||0<f&&g&&this.wordCharRegExp.test(m))){if(/\?$/.test(s)&&(s=s.substr(0,s.length-1)),this.matchHasUnbalancedClosingParen(s))s=s.substr(0,s.length-1);else{var d=this.matchHasInvalidCharAfterTld(s,c);-1<d&&(s=s.substr(0,d))}var x=c?"scheme":h?"www":"tld",y=!!c;a.push(new Z({tagBuilder:i,matchedText:s,offset:f,urlMatchType:x,url:s,protocolUrlMatch:y,protocolRelativeMatch:!!g,stripPrefix:r,stripTrailingSlash:u,decodePercentEncoding:o}))}}return a},t.prototype.matchHasUnbalancedClosingParen=function(t){if(")"===t.charAt(t.length-1)){var e=t.match(this.openParensRe),n=t.match(this.closeParensRe);if((e&&e.length||0)<(n&&n.length||0))return!0}return!1},t.prototype.matchHasInvalidCharAfterTld=function(t,e){if(!t)return-1;var n=0;e&&(n=t.indexOf(":"),t=t.slice(n));var r=new RegExp("^((.?//)?[-."+G+"]*[-"+G+"]\\.[-"+G+"]+)").exec(t);return null===r?-1:(n+=r[1].length,t=t.slice(r[1].length),/^[^-.A-Za-z0-9:\/?#]/.test(t)?n:-1)},t}($),it=(b=function(t,e){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}b(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),at=function(n){function t(t){var e=n.call(this,t)||this;return e.serviceName="twitter",e.matcherRegex=new RegExp("#[_"+G+"]{1,139}","g"),e.nonWordCharRegex=new RegExp("[^"+G+"]"),e.serviceName=t.serviceName,e}return it(t,n),t.prototype.parseMatches=function(t){for(var e,n=this.matcherRegex,r=this.nonWordCharRegex,u=this.serviceName,o=this.tagBuilder,i=[];null!==(e=n.exec(t));){var a=e.index,s=t.charAt(a-1);if(0===a||r.test(s)){var c=e[0],h=e[0].slice(1);i.push(new S({tagBuilder:o,matchedText:c,offset:a,serviceName:u,hashtag:h}))}}return i},t}($),st=(A=function(t,e){return(A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}A(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),ct=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matcherRegex=/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/g,t}return st(t,e),t.prototype.parseMatches=function(t){for(var e,n=this.matcherRegex,r=this.tagBuilder,u=[];null!==(e=n.exec(t));){var o=e[0],i=o.replace(/[^0-9,;#]/g,""),a=!(!e[1]&&!e[2]),s=0==e.index?"":t.substr(e.index-1,1),c=t.substr(e.index+o.length,1),h=!s.match(/\d/)&&!c.match(/\d/);this.testMatch(e[3])&&this.testMatch(o)&&h&&u.push(new I({tagBuilder:r,matchedText:o,offset:e.index,number:i,plusSign:a}))}return u},t.prototype.testMatch=function(t){return/\D/.test(t)},t}($),ht=(w=function(t,e){return(w=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}w(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),lt=function(n){function t(t){var e=n.call(this,t)||this;return e.serviceName="twitter",e.matcherRegexes={twitter:new RegExp("@[_"+G+"]{1,20}","g"),instagram:new RegExp("@[_."+G+"]{1,50}","g"),soundcloud:new RegExp("@[_."+G+"-]{1,50}","g")},e.nonWordCharRegex=new RegExp("[^"+G+"]"),e.serviceName=t.serviceName,e}return ht(t,n),t.prototype.parseMatches=function(t){var e,n=this.serviceName,r=this.matcherRegexes[this.serviceName],u=this.nonWordCharRegex,o=this.tagBuilder,i=[];if(!r)return i;for(;null!==(e=r.exec(t));){var a=e.index,s=t.charAt(a-1);if(0===a||u.test(s)){var c=e[0].replace(/\.+$/g,""),h=c.slice(1);i.push(new U({tagBuilder:o,matchedText:c,offset:a,serviceName:n,mention:h}))}}return i},t}($);return function(){function r(t){void 0===t&&(t={}),this.version=r.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.htmlParser=new O,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(t.urls),this.email="boolean"==typeof t.email?t.email:this.email,this.phone="boolean"==typeof t.phone?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow="boolean"==typeof t.newWindow?t.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(t.stripPrefix),this.stripTrailingSlash="boolean"==typeof t.stripTrailingSlash?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding="boolean"==typeof t.decodePercentEncoding?t.decodePercentEncoding:this.decodePercentEncoding;var e=this.mention;if(!1!==e&&"twitter"!==e&&"instagram"!==e&&"soundcloud"!==e)throw new Error("invalid `mention` cfg - see docs");var n=this.hashtag;if(!1!==n&&"twitter"!==n&&"facebook"!==n&&"instagram"!==n)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return r.link=function(t,e){return new r(e).link(t)},r.parse=function(t,e){return new r(e).parse(t)},r.prototype.normalizeUrlsCfg=function(t){return null==t&&(t=!0),"boolean"==typeof t?{schemeMatches:t,wwwMatches:t,tldMatches:t}:{schemeMatches:"boolean"!=typeof t.schemeMatches||t.schemeMatches,wwwMatches:"boolean"!=typeof t.wwwMatches||t.wwwMatches,tldMatches:"boolean"!=typeof t.tldMatches||t.tldMatches}},r.prototype.normalizeStripPrefixCfg=function(t){return null==t&&(t=!0),"boolean"==typeof t?{scheme:t,www:t}:{scheme:"boolean"!=typeof t.scheme||t.scheme,www:"boolean"!=typeof t.www||t.www}},r.prototype.normalizeTruncateCfg=function(t){return"number"==typeof t?{length:t,location:"end"}:function(t,e){for(var n in e)e.hasOwnProperty(n)&&void 0===t[n]&&(t[n]=e[n]);return t}(t||{},{length:Number.POSITIVE_INFINITY,location:"end"})},r.prototype.parse=function(t){for(var e=this.htmlParser.parse(t),n=["a","style","script"],r=0,u=[],o=0,i=e.length;o<i;o++){var a=e[o],s=a.getType();if("element"===s&&-1!==n.indexOf(a.getTagName()))a.isClosing()?r=Math.max(r-1,0):r++;else if("text"===s&&0===r){var c=this.parseText(a.getText(),a.getOffset());u.push.apply(u,c)}}return u=this.compactMatches(u),u=this.removeUnwantedMatches(u)},r.prototype.compactMatches=function(t){t.sort(function(t,e){return t.getOffset()-e.getOffset()});for(var e=0;e<t.length-1;e++){var n=t[e],r=n.getOffset(),u=n.getMatchedText().length,o=r+u;if(e+1<t.length){if(t[e+1].getOffset()===r){var i=t[e+1].getMatchedText().length>u?e:e+1;t.splice(i,1);continue}t[e+1].getOffset()<o&&t.splice(e+1,1)}}return t},r.prototype.removeUnwantedMatches=function(t){return this.hashtag||e(t,function(t){return"hashtag"===t.getType()}),this.email||e(t,function(t){return"email"===t.getType()}),this.phone||e(t,function(t){return"phone"===t.getType()}),this.mention||e(t,function(t){return"mention"===t.getType()}),this.urls.schemeMatches||e(t,function(t){return"url"===t.getType()&&"scheme"===t.getUrlMatchType()}),this.urls.wwwMatches||e(t,function(t){return"url"===t.getType()&&"www"===t.getUrlMatchType()}),this.urls.tldMatches||e(t,function(t){return"url"===t.getType()&&"tld"===t.getUrlMatchType()}),t},r.prototype.parseText=function(t,e){void 0===e&&(e=0),e=e||0;for(var n=this.getMatchers(),r=[],u=0,o=n.length;u<o;u++){for(var i=n[u].parseMatches(t),a=0,s=i.length;a<s;a++)i[a].setOffset(e+i[a].getOffset());r.push.apply(r,i)}return r},r.prototype.link=function(t){if(!t)return"";for(var e=this.parse(t),n=[],r=0,u=0,o=e.length;u<o;u++){var i=e[u];n.push(t.substring(r,i.getOffset())),n.push(this.createMatchReturnVal(i)),r=i.getOffset()+i.getMatchedText().length}return n.push(t.substring(r)),n.join("")},r.prototype.createMatchReturnVal=function(t){var e;return this.replaceFn&&(e=this.replaceFn.call(this.context,t)),"string"==typeof e?e:!1===e?t.getMatchedText():e instanceof n?e.toAnchorString():t.buildTag().toAnchorString()},r.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var t=this.getTagBuilder(),e=[new at({tagBuilder:t,serviceName:this.hashtag}),new nt({tagBuilder:t}),new ct({tagBuilder:t}),new lt({tagBuilder:t,serviceName:this.mention}),new ot({tagBuilder:t,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=e},r.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new v({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},r.version="2.1.0",r.AnchorTagBuilder=v,r.HtmlTag=n,r.matcher={Email:nt,Hashtag:at,Matcher:$,Mention:lt,Phone:ct,Url:ot},r.match={Email:R,Hashtag:S,Match:N,Mention:U,Phone:I,Url:Z},r}()});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Autolinker=e()}(this,function(){"use strict";function a(t,e){if(Array.prototype.indexOf)return t.indexOf(e);for(var u=0,n=t.length;u<n;u++)if(t[u]===e)return u;return-1}function e(t,e){for(var u=t.length-1;0<=u;u--)!0===e(t[u])&&t.splice(u,1)}var u=function(){function t(t){void 0===t&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.whitespaceRegex=/\s+/,this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return t.prototype.setTagName=function(t){return this.tagName=t,this},t.prototype.getTagName=function(){return this.tagName||""},t.prototype.setAttr=function(t,e){return this.getAttrs()[t]=e,this},t.prototype.getAttr=function(t){return this.getAttrs()[t]},t.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},t.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},t.prototype.setClass=function(t){return this.setAttr("class",t)},t.prototype.addClass=function(t){for(var e,u=this.getClass(),n=this.whitespaceRegex,r=u?u.split(n):[],o=t.split(n);e=o.shift();)-1===a(r,e)&&r.push(e);return this.getAttrs().class=r.join(" "),this},t.prototype.removeClass=function(t){for(var e,u=this.getClass(),n=this.whitespaceRegex,r=u?u.split(n):[],o=t.split(n);r.length&&(e=o.shift());){var i=a(r,e);-1!==i&&r.splice(i,1)}return this.getAttrs().class=r.join(" "),this},t.prototype.getClass=function(){return this.getAttrs().class||""},t.prototype.hasClass=function(t){return-1!==(" "+this.getClass()+" ").indexOf(" "+t+" ")},t.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},t.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},t.prototype.getInnerHTML=function(){return this.innerHTML||""},t.prototype.getInnerHtml=function(){return this.getInnerHTML()},t.prototype.toAnchorString=function(){var t=this.getTagName(),e=this.buildAttrsStr();return["<",t,e=e?" "+e:"",">",this.getInnerHtml(),"</",t,">"].join("")},t.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var t=this.getAttrs(),e=[];for(var u in t)t.hasOwnProperty(u)&&e.push(u+'="'+t[u]+'"');return e.join(" ")},t}();var n,r,o,i,t,s,c,h,l,p,f,g,m,d,A,x,y,b,F,w=function(){function t(t){void 0===t&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return t.prototype.build=function(t){return new u({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},t.prototype.createAttrs=function(t){var e={href:t.getAnchorHref()},u=this.createCssClass(t);return u&&(e.class=u),this.newWindow&&(e.target="_blank",e.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(e.title=t.getAnchorHref()),e},t.prototype.createCssClass=function(t){var e=this.className;if(e){for(var u=[e],n=t.getCssClassSuffixes(),r=0,o=n.length;r<o;r++)u.push(e+"-"+n[r]);return u.join(" ")}return""},t.prototype.processAnchorText=function(t){return t=this.doTruncate(t)},t.prototype.doTruncate=function(t){var e=this.truncate;if(!e||!e.length)return t;var u,n,r,o,i,a=e.length,s=e.location;return"smart"===s?function(t,e,i){var u,n;u=null==i?(i="&hellip;",n=3,8):(n=i.length,i.length);var r=function(t){var e="";return t.scheme&&t.host&&(e+=t.scheme+"://"),t.host&&(e+=t.host),t.path&&(e+="/"+t.path),t.query&&(e+="?"+t.query),t.fragment&&(e+="#"+t.fragment),e},o=function(t,e){var u=e/2,n=Math.ceil(u),r=-1*Math.floor(u),o="";return r<0&&(o=t.substr(r)),t.substr(0,n)+i+o};if(t.length<=e)return t;var a,s,c,h=e-n,l=(a={},(c=(s=t).match(/^([a-z]+):\/\//i))&&(a.scheme=c[1],s=s.substr(c[0].length)),(c=s.match(/^(.*?)(?=(\?|#|\/|$))/i))&&(a.host=c[1],s=s.substr(c[0].length)),(c=s.match(/^\/(.*?)(?=(\?|#|$))/i))&&(a.path=c[1],s=s.substr(c[0].length)),(c=s.match(/^\?(.*?)(?=(#|$))/i))&&(a.query=c[1],s=s.substr(c[0].length)),(c=s.match(/^#(.*?)$/i))&&(a.fragment=c[1]),a);if(l.query){var p=l.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);p&&(l.query=l.query.substr(0,p[1].length),t=r(l))}if(t.length<=e)return t;if(l.host&&(l.host=l.host.replace(/^www\./,""),t=r(l)),t.length<=e)return t;var f="";if(l.host&&(f+=l.host),f.length>=h)return l.host.length==e?(l.host.substr(0,e-n)+i).substr(0,h+u):o(f,h).substr(0,h+u);var g="";if(l.path&&(g+="/"+l.path),l.query&&(g+="?"+l.query),g){if(h<=(f+g).length)return(f+g).length==e?(f+g).substr(0,e):(f+o(g,h-f.length)).substr(0,h+u);f+=g}if(l.fragment){var m="#"+l.fragment;if(h<=(f+m).length)return(f+m).length==e?(f+m).substr(0,e):(f+o(m,h-f.length)).substr(0,h+u);f+=m}if(l.scheme&&l.host){var d=l.scheme+"://";if((f+d).length<h)return(d+f).substr(0,e)}if(f.length<=e)return f;var A="";return 0<h&&(A=f.substr(-1*Math.floor(h/2))),(f.substr(0,Math.ceil(h/2))+i+A).substr(0,h+u)}(t,a):"middle"===s?function(t,e,u){if(t.length<=e)return t;var n,r=e-(null==u?(u="&hellip;",n=8,3):(n=u.length,u.length)),o="";return 0<r&&(o=t.substr(-1*Math.floor(r/2))),(t.substr(0,Math.ceil(r/2))+u+o).substr(0,r+n)}(t,a):(r=a,o=u,(n=t).length>r&&(i=null==o?(o="&hellip;",3):o.length,n=n.substring(0,r-i)+o),n)},t}(),v=function(){function t(t){this.offset=0,this.text="",this.offset=t.offset,this.text=t.text}return t.prototype.getOffset=function(){return this.offset},t.prototype.getText=function(){return this.text},t}(),B=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),C=function(u){function t(t){var e=u.call(this,t)||this;return e.comment="",e.comment=t.comment,e}return B(t,u),t.prototype.getType=function(){return"comment"},t.prototype.getComment=function(){return this.comment},t}(v),E=(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),D=function(u){function t(t){var e=u.call(this,t)||this;return e.tagName="",e.closing=!1,e.tagName=t.tagName,e.closing=t.closing,e}return E(t,u),t.prototype.getType=function(){return"element"},t.prototype.getTagName=function(){return this.tagName},t.prototype.isClosing=function(){return this.closing},t}(v),k=(o=function(t,e){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}o(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),_=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return k(e,t),e.prototype.getType=function(){return"entity"},e}(v),T=(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),P=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return T(e,t),e.prototype.getType=function(){return"text"},e}(v),j=(t=/[0-9a-zA-Z][0-9a-zA-Z:]*/,s=/[^\s"'>\/=\x00-\x1F\x7F]+/,h="(?:\\s*?=\\s*?"+(c=/(?:"[^"]*?"|'[^']*?'|[^'"=<>`\s]+)/).source+")?",l=function(t){return"(?=("+s.source+"))\\"+t+h},new RegExp(["(?:","<(!DOCTYPE)","(?:","\\s+","(?:",l(2),"|",c.source+")",")*",">",")","|","(?:","<(/)?","(?:",/!--([\s\S]+?)--/.source,"|","(?:","("+t.source+")","\\s*/?",")","|","(?:","("+t.source+")","\\s+","(?:","(?:\\s+|\\b)",l(7),")*","\\s*/?",")",")",">",")"].join(""),"gi")),M=/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi,O=function(){function t(){}return t.prototype.parse=function(t){for(var e,u,n=0,r=[];null!==(e=j.exec(t));){var o=e[0],i=e[4],a=e[1]||e[5]||e[6],s=!!e[3],c=e.index,h=t.substring(n,c);h&&(u=this.parseTextAndEntityNodes(n,h),r.push.apply(r,u)),i?r.push(this.createCommentNode(c,o,i)):r.push(this.createElementNode(c,o,a,s)),n=c+o.length}if(n<t.length){var l=t.substring(n);l&&(u=this.parseTextAndEntityNodes(n,l)).forEach(function(t){return r.push(t)})}return r},t.prototype.parseTextAndEntityNodes=function(t,e){for(var u=[],n=function(t,e){if(!e.global)throw new Error("`splitRegex` must have the 'g' flag set");for(var u,n=[],r=0;u=e.exec(t);)n.push(t.substring(r,u.index)),n.push(u[0]),r=u.index+u[0].length;return n.push(t.substring(r)),n}(e,M),r=0,o=n.length;r<o;r+=2){var i=n[r],a=n[r+1];i&&(u.push(this.createTextNode(t,i)),t+=i.length),a&&(u.push(this.createEntityNode(t,a)),t+=a.length)}return u},t.prototype.createCommentNode=function(t,e,u){return new C({offset:t,text:e,comment:u.trim()})},t.prototype.createElementNode=function(t,e,u,n){return new D({offset:t,text:e,tagName:u.toLowerCase(),closing:n})},t.prototype.createEntityNode=function(t,e){return new _({offset:t,text:e})},t.prototype.createTextNode=function(t,e){return new P({offset:t,text:e})},t}(),N=function(){function t(t){this.__jsduckDummyDocProp=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return t.prototype.getMatchedText=function(){return this.matchedText},t.prototype.setOffset=function(t){this.offset=t},t.prototype.getOffset=function(){return this.offset},t.prototype.getCssClassSuffixes=function(){return[this.getType()]},t.prototype.buildTag=function(){return this.tagBuilder.build(this)},t}(),z=(p=function(t,e){return(p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}p(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),R=function(u){function t(t){var e=u.call(this,t)||this;return e.email="",e.email=t.email,e}return z(t,u),t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(N),q=(f=function(t,e){return(f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}f(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),S=function(u){function t(t){var e=u.call(this,t)||this;return e.serviceName="",e.hashtag="",e.serviceName=t.serviceName,e.hashtag=t.hashtag,e}return q(t,u),t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var t=this.serviceName,e=this.hashtag;switch(t){case"twitter":return"https://twitter.com/hashtag/"+e;case"facebook":return"https://www.facebook.com/hashtag/"+e;case"instagram":return"https://instagram.com/explore/tags/"+e;default:throw new Error("Unknown service name to point hashtag to: "+t)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t}(N),H=(g=function(t,e){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}g(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),U=function(u){function t(t){var e=u.call(this,t)||this;return e.serviceName="twitter",e.mention="",e.mention=t.mention,e.serviceName=t.serviceName,e}return H(t,u),t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;default:throw new Error("Unknown service name to point mention to: "+this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var t=u.prototype.getCssClassSuffixes.call(this),e=this.getServiceName();return e&&t.push(e),t},t}(N),W=(m=function(t,e){return(m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}m(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),I=function(u){function t(t){var e=u.call(this,t)||this;return e.number="",e.plusSign=!1,e.number=t.number,e.plusSign=t.plusSign,e}return W(t,u),t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(N),L=(d=function(t,e){return(d=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}d(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),Z=function(u){function t(t){var e=u.call(this,t)||this;return e.url="",e.urlMatchType="scheme",e.protocolUrlMatch=!1,e.protocolRelativeMatch=!1,e.stripPrefix={scheme:!0,www:!0},e.stripTrailingSlash=!0,e.decodePercentEncoding=!0,e.schemePrefixRegex=/^(https?:\/\/)?/i,e.wwwPrefixRegex=/^(https?:\/\/)?(www\.)?/i,e.protocolRelativeRegex=/^\/\//,e.protocolPrepended=!1,e.urlMatchType=t.urlMatchType,e.url=t.url,e.protocolUrlMatch=t.protocolUrlMatch,e.protocolRelativeMatch=t.protocolRelativeMatch,e.stripPrefix=t.stripPrefix,e.stripTrailingSlash=t.stripTrailingSlash,e.decodePercentEncoding=t.decodePercentEncoding,e}return L(t,u),t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var t=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(t=this.url="http://"+t,this.protocolPrepended=!0),t},t.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,"&")},t.prototype.getAnchorText=function(){var t=this.getMatchedText();return this.protocolRelativeMatch&&(t=this.stripProtocolRelativePrefix(t)),this.stripPrefix.scheme&&(t=this.stripSchemePrefix(t)),this.stripPrefix.www&&(t=this.stripWwwPrefix(t)),this.stripTrailingSlash&&(t=this.removeTrailingSlash(t)),this.decodePercentEncoding&&(t=this.removePercentEncoding(t)),t},t.prototype.stripSchemePrefix=function(t){return t.replace(this.schemePrefixRegex,"")},t.prototype.stripWwwPrefix=function(t){return t.replace(this.wwwPrefixRegex,"$1")},t.prototype.stripProtocolRelativePrefix=function(t){return t.replace(this.protocolRelativeRegex,"")},t.prototype.removeTrailingSlash=function(t){return"/"===t.charAt(t.length-1)&&(t=t.slice(0,-1)),t},t.prototype.removePercentEncoding=function(t){var e=t.replace(/%22/gi,"&quot;").replace(/%26/gi,"&amp;").replace(/%27/gi,"&#39;").replace(/%3C/gi,"&lt;").replace(/%3E/gi,"&gt;");try{return decodeURIComponent(e)}catch(t){return e}},t}(N),$=function(t){this.__jsduckDummyDocProp=null,this.tagBuilder=t.tagBuilder},V=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,Y=V+/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,G=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,J=Y+G,K=Y+G,Q="(?:["+G+"]{1,3}\\.){3}["+G+"]{1,3}",X="["+K+"](?:["+K+"\\-]{0,61}["+K+"])?",tt=function(t){return"(?=("+X+"))\\"+t},et=function(t){return"(?:"+tt(t)+"(?:\\."+tt(t+1)+"){0,126}|"+Q+")"},ut=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,nt=(A=function(t,e){return(A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}A(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),rt=function(n){function t(){var t,e,u=null!==n&&n.apply(this,arguments)||this;return u.matcherRegex=(t=K+"!#$%&'*+\\-\\/=?^_`{|}~",e=new RegExp("(?:["+t+"](?:["+t+']|\\.(?!\\.|@))*|\\"['+(t+'\\s"(),:;<>@\\[\\]')+'.]+\\")@'),new RegExp([e.source,et(1),"\\.",ut.source].join(""),"gi")),u}return nt(t,n),t.prototype.parseMatches=function(t){for(var e,u=this.matcherRegex,n=this.tagBuilder,r=[];null!==(e=u.exec(t));){var o=e[0];r.push(new R({tagBuilder:n,matchedText:o,offset:e.index,email:o}))}return r},t}($),ot=function(){function t(){}return t.isValid=function(t,e){return!(e&&!this.isValidUriScheme(e)||this.urlMatchDoesNotHaveProtocolOrDot(t,e)||this.urlMatchDoesNotHaveAtLeastOneWordChar(t,e)&&!this.isValidIpAddress(t)||this.containsMultipleDots(t))},t.isValidIpAddress=function(t){var e=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==t.match(e)},t.containsMultipleDots=function(t){var e=t;return this.hasFullProtocolRegex.test(t)&&(e=t.split("://")[1]),-1<e.split("/")[0].indexOf("..")},t.isValidUriScheme=function(t){var e=t.match(this.uriSchemeRegex),u=e&&e[0].toLowerCase();return"javascript:"!==u&&"vbscript:"!==u},t.urlMatchDoesNotHaveProtocolOrDot=function(t,e){return!(!t||e&&this.hasFullProtocolRegex.test(e)||-1!==t.indexOf("."))},t.urlMatchDoesNotHaveAtLeastOneWordChar=function(t,e){return!(!t||!e)&&!this.hasWordCharAfterProtocolRegex.test(t)},t.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\/\//,t.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,t.hasWordCharAfterProtocolRegex=new RegExp(":[^\\s]*?["+V+"]"),t.ipRegex=/[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?(:[0-9]*)?\/?$/,t}(),it=(x=function(t,e){return(x=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}x(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),at=function(n){function t(t){var e,u=n.call(this,t)||this;return u.stripPrefix={scheme:!0,www:!0},u.stripTrailingSlash=!0,u.decodePercentEncoding=!0,u.matcherRegex=(e=new RegExp("[/?#](?:["+K+"\\-+&@#/%=~_()|'$*\\[\\]?!:,.;✓]*["+K+"\\-+&@#/%=~_()|'$*\\[\\]✓])?"),new RegExp(["(?:","(",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\/\/)(?!\d+\/?)(?:\/\/)?)/.source,et(2),")","|","(","(//)?",/(?:www\.)/.source,et(6),")","|","(","(//)?",et(10)+"\\.",ut.source,"(?![-"+J+"])",")",")","(?::[0-9]+)?","(?:"+e.source+")?"].join(""),"gi")),u.wordCharRegExp=new RegExp("["+K+"]"),u.openParensRe=/\(/g,u.closeParensRe=/\)/g,u.stripPrefix=t.stripPrefix,u.stripTrailingSlash=t.stripTrailingSlash,u.decodePercentEncoding=t.decodePercentEncoding,u}return it(t,n),t.prototype.parseMatches=function(t){for(var e,u=this.matcherRegex,n=this.stripPrefix,r=this.stripTrailingSlash,o=this.decodePercentEncoding,i=this.tagBuilder,a=[];null!==(e=u.exec(t));){var s=e[0],c=e[1],h=e[4],l=e[5],p=e[9],f=e.index,g=l||p,m=t.charAt(f-1);if(ot.isValid(s,c)&&!(0<f&&"@"===m||0<f&&g&&this.wordCharRegExp.test(m))){if(/\?$/.test(s)&&(s=s.substr(0,s.length-1)),this.matchHasUnbalancedClosingParen(s))s=s.substr(0,s.length-1);else{var d=this.matchHasInvalidCharAfterTld(s,c);-1<d&&(s=s.substr(0,d))}var A=c?"scheme":h?"www":"tld",x=!!c;a.push(new Z({tagBuilder:i,matchedText:s,offset:f,urlMatchType:A,url:s,protocolUrlMatch:x,protocolRelativeMatch:!!g,stripPrefix:n,stripTrailingSlash:r,decodePercentEncoding:o}))}}return a},t.prototype.matchHasUnbalancedClosingParen=function(t){if(")"===t.charAt(t.length-1)){var e=t.match(this.openParensRe),u=t.match(this.closeParensRe);if((e&&e.length||0)<(u&&u.length||0))return!0}return!1},t.prototype.matchHasInvalidCharAfterTld=function(t,e){if(!t)return-1;var u=0;e&&(u=t.indexOf(":"),t=t.slice(u));var n=new RegExp("^((.?//)?[-."+K+"]*[-"+K+"]\\.[-"+K+"]+)").exec(t);return null===n?-1:(u+=n[1].length,t=t.slice(n[1].length),/^[^-.A-Za-z0-9:\/?#]/.test(t)?u:-1)},t}($),st=(y=function(t,e){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}y(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),ct=function(u){function t(t){var e=u.call(this,t)||this;return e.serviceName="twitter",e.matcherRegex=new RegExp("#[_"+K+"]{1,139}","g"),e.nonWordCharRegex=new RegExp("[^"+K+"]"),e.serviceName=t.serviceName,e}return st(t,u),t.prototype.parseMatches=function(t){for(var e,u=this.matcherRegex,n=this.nonWordCharRegex,r=this.serviceName,o=this.tagBuilder,i=[];null!==(e=u.exec(t));){var a=e.index,s=t.charAt(a-1);if(0===a||n.test(s)){var c=e[0],h=e[0].slice(1);i.push(new S({tagBuilder:o,matchedText:c,offset:a,serviceName:r,hashtag:h}))}}return i},t}($),ht=(b=function(t,e){return(b=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}b(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),lt=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matcherRegex=/(?:(?:(?:(\+)?\d{1,3}[-\040.]?)?\(?\d{3}\)?[-\040.]?\d{3}[-\040.]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\040.]?(?:\d[-\040.]?){6,12}\d+))([,;]+[0-9]+#?)*/g,t}return ht(t,e),t.prototype.parseMatches=function(t){for(var e,u=this.matcherRegex,n=this.tagBuilder,r=[];null!==(e=u.exec(t));){var o=e[0],i=o.replace(/[^0-9,;#]/g,""),a=!(!e[1]&&!e[2]),s=0==e.index?"":t.substr(e.index-1,1),c=t.substr(e.index+o.length,1),h=!s.match(/\d/)&&!c.match(/\d/);this.testMatch(e[3])&&this.testMatch(o)&&h&&r.push(new I({tagBuilder:n,matchedText:o,offset:e.index,number:i,plusSign:a}))}return r},t.prototype.testMatch=function(t){return/\D/.test(t)},t}($),pt=(F=function(t,e){return(F=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u])})(t,e)},function(t,e){function u(){this.constructor=t}F(t,e),t.prototype=null===e?Object.create(e):(u.prototype=e.prototype,new u)}),ft=function(u){function t(t){var e=u.call(this,t)||this;return e.serviceName="twitter",e.matcherRegexes={twitter:new RegExp("@[_"+K+"]{1,20}","g"),instagram:new RegExp("@[_."+K+"]{1,50}","g"),soundcloud:new RegExp("@[_."+K+"-]{1,50}","g")},e.nonWordCharRegex=new RegExp("[^"+K+"]"),e.serviceName=t.serviceName,e}return pt(t,u),t.prototype.parseMatches=function(t){var e,u=this.serviceName,n=this.matcherRegexes[this.serviceName],r=this.nonWordCharRegex,o=this.tagBuilder,i=[];if(!n)return i;for(;null!==(e=n.exec(t));){var a=e.index,s=t.charAt(a-1);if(0===a||r.test(s)){var c=e[0].replace(/\.+$/g,""),h=c.slice(1);i.push(new U({tagBuilder:o,matchedText:c,offset:a,serviceName:u,mention:h}))}}return i},t}($);return function(){function n(t){void 0===t&&(t={}),this.version=n.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.htmlParser=new O,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(t.urls),this.email="boolean"==typeof t.email?t.email:this.email,this.phone="boolean"==typeof t.phone?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow="boolean"==typeof t.newWindow?t.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(t.stripPrefix),this.stripTrailingSlash="boolean"==typeof t.stripTrailingSlash?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding="boolean"==typeof t.decodePercentEncoding?t.decodePercentEncoding:this.decodePercentEncoding;var e=this.mention;if(!1!==e&&"twitter"!==e&&"instagram"!==e&&"soundcloud"!==e)throw new Error("invalid `mention` cfg - see docs");var u=this.hashtag;if(!1!==u&&"twitter"!==u&&"facebook"!==u&&"instagram"!==u)throw new Error("invalid `hashtag` cfg - see docs");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return n.link=function(t,e){return new n(e).link(t)},n.parse=function(t,e){return new n(e).parse(t)},n.prototype.normalizeUrlsCfg=function(t){return null==t&&(t=!0),"boolean"==typeof t?{schemeMatches:t,wwwMatches:t,tldMatches:t}:{schemeMatches:"boolean"!=typeof t.schemeMatches||t.schemeMatches,wwwMatches:"boolean"!=typeof t.wwwMatches||t.wwwMatches,tldMatches:"boolean"!=typeof t.tldMatches||t.tldMatches}},n.prototype.normalizeStripPrefixCfg=function(t){return null==t&&(t=!0),"boolean"==typeof t?{scheme:t,www:t}:{scheme:"boolean"!=typeof t.scheme||t.scheme,www:"boolean"!=typeof t.www||t.www}},n.prototype.normalizeTruncateCfg=function(t){return"number"==typeof t?{length:t,location:"end"}:function(t,e){for(var u in e)e.hasOwnProperty(u)&&void 0===t[u]&&(t[u]=e[u]);return t}(t||{},{length:Number.POSITIVE_INFINITY,location:"end"})},n.prototype.parse=function(t){for(var e=this.htmlParser.parse(t),u=["a","style","script"],n=0,r=[],o=0,i=e.length;o<i;o++){var a=e[o],s=a.getType();if("element"===s&&-1!==u.indexOf(a.getTagName()))a.isClosing()?n=Math.max(n-1,0):n++;else if("text"===s&&0===n){var c=this.parseText(a.getText(),a.getOffset());r.push.apply(r,c)}}return r=this.compactMatches(r),r=this.removeUnwantedMatches(r)},n.prototype.compactMatches=function(t){t.sort(function(t,e){return t.getOffset()-e.getOffset()});for(var e=0;e<t.length-1;e++){var u=t[e],n=u.getOffset(),r=u.getMatchedText().length,o=n+r;if(e+1<t.length){if(t[e+1].getOffset()===n){var i=t[e+1].getMatchedText().length>r?e:e+1;t.splice(i,1);continue}t[e+1].getOffset()<o&&t.splice(e+1,1)}}return t},n.prototype.removeUnwantedMatches=function(t){return this.hashtag||e(t,function(t){return"hashtag"===t.getType()}),this.email||e(t,function(t){return"email"===t.getType()}),this.phone||e(t,function(t){return"phone"===t.getType()}),this.mention||e(t,function(t){return"mention"===t.getType()}),this.urls.schemeMatches||e(t,function(t){return"url"===t.getType()&&"scheme"===t.getUrlMatchType()}),this.urls.wwwMatches||e(t,function(t){return"url"===t.getType()&&"www"===t.getUrlMatchType()}),this.urls.tldMatches||e(t,function(t){return"url"===t.getType()&&"tld"===t.getUrlMatchType()}),t},n.prototype.parseText=function(t,e){void 0===e&&(e=0),e=e||0;for(var u=this.getMatchers(),n=[],r=0,o=u.length;r<o;r++){for(var i=u[r].parseMatches(t),a=0,s=i.length;a<s;a++)i[a].setOffset(e+i[a].getOffset());n.push.apply(n,i)}return n},n.prototype.link=function(t){if(!t)return"";for(var e=this.parse(t),u=[],n=0,r=0,o=e.length;r<o;r++){var i=e[r];u.push(t.substring(n,i.getOffset())),u.push(this.createMatchReturnVal(i)),n=i.getOffset()+i.getMatchedText().length}return u.push(t.substring(n)),u.join("")},n.prototype.createMatchReturnVal=function(t){var e;return this.replaceFn&&(e=this.replaceFn.call(this.context,t)),"string"==typeof e?e:!1===e?t.getMatchedText():e instanceof u?e.toAnchorString():t.buildTag().toAnchorString()},n.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var t=this.getTagBuilder(),e=[new ct({tagBuilder:t,serviceName:this.hashtag}),new rt({tagBuilder:t}),new lt({tagBuilder:t}),new ft({tagBuilder:t,serviceName:this.mention}),new at({tagBuilder:t,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=e},n.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new w({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},n.version="2.2.0",n.AnchorTagBuilder=w,n.HtmlTag=u,n.matcher={Email:rt,Hashtag:ct,Matcher:$,Mention:ft,Phone:lt,Url:at},n.match={Email:R,Hashtag:S,Match:N,Mention:U,Phone:I,Url:Z},n}()});
//# sourceMappingURL=Autolinker.min.js.map

@@ -130,3 +130,3 @@ import { AnchorTagBuilder } from "./anchor-tag-builder";

*/
static readonly version = "2.1.0";
static readonly version = "2.2.0";
/**

@@ -228,3 +228,3 @@ * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder

*/
readonly version = "2.1.0";
readonly version = "2.2.0";
/**

@@ -231,0 +231,0 @@ * @cfg {Boolean/Object} [urls]

@@ -832,3 +832,3 @@ "use strict";

*/
Autolinker.version = '2.1.0';
Autolinker.version = '2.2.0';
/**

@@ -835,0 +835,0 @@ * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder

@@ -41,3 +41,3 @@ "use strict";

_this.matcherRegex = (function () {
var alphaNumericChars = regex_lib_1.alphaNumericCharsStr, specialCharacters = '!#$%&\'*+\\-\\/=?^_`{|}~', restrictedSpecialCharacters = '\\s"(),:;<>@\\[\\]', validCharacters = alphaNumericChars + specialCharacters, validRestrictedCharacters = validCharacters + restrictedSpecialCharacters, emailRegex = new RegExp('(?:[' + validCharacters + '](?:[' + validCharacters + ']|\\.(?!\\.|@))*|\\"[' + validRestrictedCharacters + '.]+\\")@');
var specialCharacters = '!#$%&\'*+\\-\\/=?^_`{|}~', restrictedSpecialCharacters = '\\s"(),:;<>@\\[\\]', validCharacters = regex_lib_1.alphaNumericAndMarksCharsStr + specialCharacters, validRestrictedCharacters = validCharacters + restrictedSpecialCharacters, emailRegex = new RegExp('(?:[' + validCharacters + '](?:[' + validCharacters + ']|\\.(?!\\.|@))*|\\"[' + validRestrictedCharacters + '.]+\\")@');
return new RegExp([

@@ -44,0 +44,0 @@ emailRegex.source,

@@ -49,3 +49,3 @@ "use strict";

*/
_this.matcherRegex = new RegExp('#[_' + regex_lib_1.alphaNumericCharsStr + ']{1,139}', 'g');
_this.matcherRegex = new RegExp('#[_' + regex_lib_1.alphaNumericAndMarksCharsStr + ']{1,139}', 'g');
/**

@@ -60,3 +60,3 @@ * The regular expression to use to check the character before a username match to

*/
_this.nonWordCharRegex = new RegExp('[^' + regex_lib_1.alphaNumericCharsStr + ']');
_this.nonWordCharRegex = new RegExp('[^' + regex_lib_1.alphaNumericAndMarksCharsStr + ']');
_this.serviceName = cfg.serviceName;

@@ -63,0 +63,0 @@ return _this;

@@ -51,5 +51,5 @@ "use strict";

_this.matcherRegexes = {
'twitter': new RegExp('@[_' + regex_lib_1.alphaNumericCharsStr + ']{1,20}', 'g'),
'instagram': new RegExp('@[_.' + regex_lib_1.alphaNumericCharsStr + ']{1,50}', 'g'),
'soundcloud': new RegExp('@[_.' + regex_lib_1.alphaNumericCharsStr + "\-" + ']{1,50}', 'g')
'twitter': new RegExp('@[_' + regex_lib_1.alphaNumericAndMarksCharsStr + ']{1,20}', 'g'),
'instagram': new RegExp('@[_.' + regex_lib_1.alphaNumericAndMarksCharsStr + ']{1,50}', 'g'),
'soundcloud': new RegExp('@[_.' + regex_lib_1.alphaNumericAndMarksCharsStr + "\-" + ']{1,50}', 'g')
};

@@ -65,3 +65,3 @@ /**

*/
_this.nonWordCharRegex = new RegExp('[^' + regex_lib_1.alphaNumericCharsStr + ']');
_this.nonWordCharRegex = new RegExp('[^' + regex_lib_1.alphaNumericAndMarksCharsStr + ']');
_this.serviceName = cfg.serviceName;

@@ -68,0 +68,0 @@ return _this;

@@ -93,3 +93,3 @@ "use strict";

// http://blog.codinghorror.com/the-problem-with-urls/
urlSuffixRegex = new RegExp('[/?#](?:[' + regex_lib_1.alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]?!:,.;\u2713]*[' + regex_lib_1.alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]\u2713])?');
urlSuffixRegex = new RegExp('[/?#](?:[' + regex_lib_1.alphaNumericAndMarksCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]?!:,.;\u2713]*[' + regex_lib_1.alphaNumericAndMarksCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]\u2713])?');
return new RegExp([

@@ -132,3 +132,3 @@ '(?:',

*/
_this.wordCharRegExp = new RegExp('[' + regex_lib_1.alphaNumericCharsStr + ']');
_this.wordCharRegExp = new RegExp('[' + regex_lib_1.alphaNumericAndMarksCharsStr + ']');
/**

@@ -271,3 +271,3 @@ * The regular expression to match opening parenthesis in a URL match.

}
var re = new RegExp("^((.?\/\/)?[-." + regex_lib_1.alphaNumericCharsStr + "]*[-" + regex_lib_1.alphaNumericCharsStr + "]\\.[-" + regex_lib_1.alphaNumericCharsStr + "]+)");
var re = new RegExp("^((.?\/\/)?[-." + regex_lib_1.alphaNumericAndMarksCharsStr + "]*[-" + regex_lib_1.alphaNumericAndMarksCharsStr + "]\\.[-" + regex_lib_1.alphaNumericAndMarksCharsStr + "]+)");
var res = re.exec(urlMatch);

@@ -274,0 +274,0 @@ if (res === null) {

@@ -10,3 +10,3 @@ /**

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'

@@ -29,2 +29,36 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* combining mark characters in the unicode character set when placed in a
* RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `\p{M}`
* escape ("all marks").
*
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'
* regex's bmp
*
* VERY IMPORTANT: This set of characters is defined inside of a Regular
* Expression literal rather than a string literal to prevent UglifyJS from
* compressing the unicode escape sequences into their actual unicode
* characters. If Uglify compresses these into the unicode characters
* themselves, this results in the error "Range out of order in character
* class" when these characters are used inside of a Regular Expression
* character class (`[]`). See usages of this const. Alternatively, we can set
* the UglifyJS option `ascii_only` to true for the build, but that doesn't
* help others who are pulling in Autolinker into their own build and running
* UglifyJS themselves.
*/
export declare const marksStr: string;
/**
* The string form of a regular expression that would match all of the
* alphabetic ("letter") chars and combining marks in the unicode character set
* when placed in a RegExp character class (`[]`). This includes all
* international alphabetic characters.
*
* These would be the characters matched by unicode regex engines `\p{L}\p{M}`
* escapes.
*/
export declare const alphaCharsAndMarksStr: string;
/**
* The string form of a regular expression that would match all of the
* decimal number chars in the unicode character set when placed in a RegExp

@@ -36,3 +70,3 @@ * character class (`[]`).

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'

@@ -55,10 +89,20 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* letters and decimal number chars in the unicode character set when placed
* in a RegExp character class (`[]`).
* letters and decimal number chars in the unicode character set when placed in
* a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `[\p{L}\p{Nd}]`
* escape ("all letters and decimal numbers")
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{Nd}]` escape ("all letters and decimal numbers")
*/
export declare const alphaNumericCharsStr: string;
/**
* The string form of a regular expression that would match all of the
* letters, combining marks, and decimal number chars in the unicode character
* set when placed in a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{M}\p{Nd}]` escape ("all letters, combining marks, and decimal
* numbers")
*/
export declare const alphaNumericAndMarksCharsStr: string;
/**
* A function to match domain names of a URL or email address.

@@ -65,0 +109,0 @@ * Ex: 'google', 'yahoo', 'some-other-company', etc.

@@ -19,3 +19,3 @@ "use strict";

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'

@@ -39,2 +39,37 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* combining mark characters in the unicode character set when placed in a
* RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `\p{M}`
* escape ("all marks").
*
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'
* regex's bmp
*
* VERY IMPORTANT: This set of characters is defined inside of a Regular
* Expression literal rather than a string literal to prevent UglifyJS from
* compressing the unicode escape sequences into their actual unicode
* characters. If Uglify compresses these into the unicode characters
* themselves, this results in the error "Range out of order in character
* class" when these characters are used inside of a Regular Expression
* character class (`[]`). See usages of this const. Alternatively, we can set
* the UglifyJS option `ascii_only` to true for the build, but that doesn't
* help others who are pulling in Autolinker into their own build and running
* UglifyJS themselves.
*/
exports.marksStr = /\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/
.source; // see note in above variable description
/**
* The string form of a regular expression that would match all of the
* alphabetic ("letter") chars and combining marks in the unicode character set
* when placed in a RegExp character class (`[]`). This includes all
* international alphabetic characters.
*
* These would be the characters matched by unicode regex engines `\p{L}\p{M}`
* escapes.
*/
exports.alphaCharsAndMarksStr = exports.alphaCharsStr + exports.marksStr;
/**
* The string form of a regular expression that would match all of the
* decimal number chars in the unicode character set when placed in a RegExp

@@ -46,3 +81,3 @@ * character class (`[]`).

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'

@@ -66,13 +101,23 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* letters and decimal number chars in the unicode character set when placed
* in a RegExp character class (`[]`).
* letters and decimal number chars in the unicode character set when placed in
* a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `[\p{L}\p{Nd}]`
* escape ("all letters and decimal numbers")
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{Nd}]` escape ("all letters and decimal numbers")
*/
exports.alphaNumericCharsStr = exports.alphaCharsStr + exports.decimalNumbersStr;
exports.alphaNumericCharsStr = exports.alphaCharsAndMarksStr + exports.decimalNumbersStr;
/**
* The string form of a regular expression that would match all of the
* letters, combining marks, and decimal number chars in the unicode character
* set when placed in a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{M}\p{Nd}]` escape ("all letters, combining marks, and decimal
* numbers")
*/
exports.alphaNumericAndMarksCharsStr = exports.alphaCharsAndMarksStr + exports.decimalNumbersStr;
// Simplified IP regular expression
var ipStr = '(?:[' + exports.decimalNumbersStr + ']{1,3}\\.){3}[' + exports.decimalNumbersStr + ']{1,3}';
// Protected domain label which do not allow "-" character on the beginning and the end of a single label
var domainLabelStr = '[' + exports.alphaNumericCharsStr + '](?:[' + exports.alphaNumericCharsStr + '\\-]{0,61}[' + exports.alphaNumericCharsStr + '])?';
var domainLabelStr = '[' + exports.alphaNumericAndMarksCharsStr + '](?:[' + exports.alphaNumericAndMarksCharsStr + '\\-]{0,61}[' + exports.alphaNumericAndMarksCharsStr + '])?';
var getDomainLabelStr = function (group) {

@@ -92,4 +137,4 @@ return '(?=(' + domainLabelStr + '))\\' + group;

*/
exports.domainNameRegex = new RegExp('[' + exports.alphaNumericCharsStr + '.\\-]*[' + exports.alphaNumericCharsStr + '\\-]');
exports.domainNameRegex = new RegExp('[' + exports.alphaNumericAndMarksCharsStr + '.\\-]*[' + exports.alphaNumericAndMarksCharsStr + '\\-]');
//# sourceMappingURL=regex-lib.js.map

@@ -130,3 +130,3 @@ import { AnchorTagBuilder } from "./anchor-tag-builder";

*/
static readonly version = "2.1.0";
static readonly version = "2.2.0";
/**

@@ -228,3 +228,3 @@ * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder

*/
readonly version = "2.1.0";
readonly version = "2.2.0";
/**

@@ -231,0 +231,0 @@ * @cfg {Boolean/Object} [urls]

@@ -830,3 +830,3 @@ import { defaults, remove } from "./utils";

*/
Autolinker.version = '2.1.0';
Autolinker.version = '2.2.0';
/**

@@ -833,0 +833,0 @@ * For backwards compatibility with Autolinker 1.x, the AnchorTagBuilder

@@ -15,3 +15,3 @@ var __extends = (this && this.__extends) || (function () {

import { Matcher } from "./matcher";
import { alphaNumericCharsStr, getDomainNameStr } from "../regex-lib";
import { alphaNumericAndMarksCharsStr, getDomainNameStr } from "../regex-lib";
import { tldRegex } from "./tld-regex";

@@ -40,3 +40,3 @@ import { EmailMatch } from "../match/email-match";

_this.matcherRegex = (function () {
var alphaNumericChars = alphaNumericCharsStr, specialCharacters = '!#$%&\'*+\\-\\/=?^_`{|}~', restrictedSpecialCharacters = '\\s"(),:;<>@\\[\\]', validCharacters = alphaNumericChars + specialCharacters, validRestrictedCharacters = validCharacters + restrictedSpecialCharacters, emailRegex = new RegExp('(?:[' + validCharacters + '](?:[' + validCharacters + ']|\\.(?!\\.|@))*|\\"[' + validRestrictedCharacters + '.]+\\")@');
var specialCharacters = '!#$%&\'*+\\-\\/=?^_`{|}~', restrictedSpecialCharacters = '\\s"(),:;<>@\\[\\]', validCharacters = alphaNumericAndMarksCharsStr + specialCharacters, validRestrictedCharacters = validCharacters + restrictedSpecialCharacters, emailRegex = new RegExp('(?:[' + validCharacters + '](?:[' + validCharacters + ']|\\.(?!\\.|@))*|\\"[' + validRestrictedCharacters + '.]+\\")@');
return new RegExp([

@@ -43,0 +43,0 @@ emailRegex.source,

@@ -15,3 +15,3 @@ var __extends = (this && this.__extends) || (function () {

import { Matcher } from "./matcher";
import { alphaNumericCharsStr } from "../regex-lib";
import { alphaNumericAndMarksCharsStr } from "../regex-lib";
import { HashtagMatch } from "../match/hashtag-match";

@@ -48,3 +48,3 @@ /**

*/
_this.matcherRegex = new RegExp('#[_' + alphaNumericCharsStr + ']{1,139}', 'g');
_this.matcherRegex = new RegExp('#[_' + alphaNumericAndMarksCharsStr + ']{1,139}', 'g');
/**

@@ -59,3 +59,3 @@ * The regular expression to use to check the character before a username match to

*/
_this.nonWordCharRegex = new RegExp('[^' + alphaNumericCharsStr + ']');
_this.nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');
_this.serviceName = cfg.serviceName;

@@ -62,0 +62,0 @@ return _this;

@@ -15,3 +15,3 @@ var __extends = (this && this.__extends) || (function () {

import { Matcher } from "./matcher";
import { alphaNumericCharsStr } from "../regex-lib";
import { alphaNumericAndMarksCharsStr } from "../regex-lib";
import { MentionMatch } from "../match/mention-match";

@@ -50,5 +50,5 @@ /**

_this.matcherRegexes = {
'twitter': new RegExp('@[_' + alphaNumericCharsStr + ']{1,20}', 'g'),
'instagram': new RegExp('@[_.' + alphaNumericCharsStr + ']{1,50}', 'g'),
'soundcloud': new RegExp('@[_.' + alphaNumericCharsStr + "\-" + ']{1,50}', 'g')
'twitter': new RegExp('@[_' + alphaNumericAndMarksCharsStr + ']{1,20}', 'g'),
'instagram': new RegExp('@[_.' + alphaNumericAndMarksCharsStr + ']{1,50}', 'g'),
'soundcloud': new RegExp('@[_.' + alphaNumericAndMarksCharsStr + "\-" + ']{1,50}', 'g')
};

@@ -64,3 +64,3 @@ /**

*/
_this.nonWordCharRegex = new RegExp('[^' + alphaNumericCharsStr + ']');
_this.nonWordCharRegex = new RegExp('[^' + alphaNumericAndMarksCharsStr + ']');
_this.serviceName = cfg.serviceName;

@@ -67,0 +67,0 @@ return _this;

@@ -15,3 +15,3 @@ var __extends = (this && this.__extends) || (function () {

import { Matcher } from "./matcher";
import { alphaNumericCharsStr, getDomainNameStr } from "../regex-lib";
import { alphaNumericCharsStr, alphaNumericAndMarksCharsStr, getDomainNameStr } from "../regex-lib";
import { tldRegex } from "./tld-regex";

@@ -92,3 +92,3 @@ import { UrlMatch } from "../match/url-match";

// http://blog.codinghorror.com/the-problem-with-urls/
urlSuffixRegex = new RegExp('[/?#](?:[' + alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]?!:,.;\u2713]*[' + alphaNumericCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]\u2713])?');
urlSuffixRegex = new RegExp('[/?#](?:[' + alphaNumericAndMarksCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]?!:,.;\u2713]*[' + alphaNumericAndMarksCharsStr + '\\-+&@#/%=~_()|\'$*\\[\\]\u2713])?');
return new RegExp([

@@ -131,3 +131,3 @@ '(?:',

*/
_this.wordCharRegExp = new RegExp('[' + alphaNumericCharsStr + ']');
_this.wordCharRegExp = new RegExp('[' + alphaNumericAndMarksCharsStr + ']');
/**

@@ -270,3 +270,3 @@ * The regular expression to match opening parenthesis in a URL match.

}
var re = new RegExp("^((.?\/\/)?[-." + alphaNumericCharsStr + "]*[-" + alphaNumericCharsStr + "]\\.[-" + alphaNumericCharsStr + "]+)");
var re = new RegExp("^((.?\/\/)?[-." + alphaNumericAndMarksCharsStr + "]*[-" + alphaNumericAndMarksCharsStr + "]\\.[-" + alphaNumericAndMarksCharsStr + "]+)");
var res = re.exec(urlMatch);

@@ -273,0 +273,0 @@ if (res === null) {

@@ -10,3 +10,3 @@ /**

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'

@@ -29,2 +29,36 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* combining mark characters in the unicode character set when placed in a
* RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `\p{M}`
* escape ("all marks").
*
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'
* regex's bmp
*
* VERY IMPORTANT: This set of characters is defined inside of a Regular
* Expression literal rather than a string literal to prevent UglifyJS from
* compressing the unicode escape sequences into their actual unicode
* characters. If Uglify compresses these into the unicode characters
* themselves, this results in the error "Range out of order in character
* class" when these characters are used inside of a Regular Expression
* character class (`[]`). See usages of this const. Alternatively, we can set
* the UglifyJS option `ascii_only` to true for the build, but that doesn't
* help others who are pulling in Autolinker into their own build and running
* UglifyJS themselves.
*/
export declare const marksStr: string;
/**
* The string form of a regular expression that would match all of the
* alphabetic ("letter") chars and combining marks in the unicode character set
* when placed in a RegExp character class (`[]`). This includes all
* international alphabetic characters.
*
* These would be the characters matched by unicode regex engines `\p{L}\p{M}`
* escapes.
*/
export declare const alphaCharsAndMarksStr: string;
/**
* The string form of a regular expression that would match all of the
* decimal number chars in the unicode character set when placed in a RegExp

@@ -36,3 +70,3 @@ * character class (`[]`).

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'

@@ -55,10 +89,20 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* letters and decimal number chars in the unicode character set when placed
* in a RegExp character class (`[]`).
* letters and decimal number chars in the unicode character set when placed in
* a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `[\p{L}\p{Nd}]`
* escape ("all letters and decimal numbers")
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{Nd}]` escape ("all letters and decimal numbers")
*/
export declare const alphaNumericCharsStr: string;
/**
* The string form of a regular expression that would match all of the
* letters, combining marks, and decimal number chars in the unicode character
* set when placed in a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{M}\p{Nd}]` escape ("all letters, combining marks, and decimal
* numbers")
*/
export declare const alphaNumericAndMarksCharsStr: string;
/**
* A function to match domain names of a URL or email address.

@@ -65,0 +109,0 @@ * Ex: 'google', 'yahoo', 'some-other-company', etc.

@@ -17,3 +17,3 @@ /*

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Letter'

@@ -37,2 +37,37 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* combining mark characters in the unicode character set when placed in a
* RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `\p{M}`
* escape ("all marks").
*
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Mark'
* regex's bmp
*
* VERY IMPORTANT: This set of characters is defined inside of a Regular
* Expression literal rather than a string literal to prevent UglifyJS from
* compressing the unicode escape sequences into their actual unicode
* characters. If Uglify compresses these into the unicode characters
* themselves, this results in the error "Range out of order in character
* class" when these characters are used inside of a Regular Expression
* character class (`[]`). See usages of this const. Alternatively, we can set
* the UglifyJS option `ascii_only` to true for the build, but that doesn't
* help others who are pulling in Autolinker into their own build and running
* UglifyJS themselves.
*/
export var marksStr = /\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/
.source; // see note in above variable description
/**
* The string form of a regular expression that would match all of the
* alphabetic ("letter") chars and combining marks in the unicode character set
* when placed in a RegExp character class (`[]`). This includes all
* international alphabetic characters.
*
* These would be the characters matched by unicode regex engines `\p{L}\p{M}`
* escapes.
*/
export var alphaCharsAndMarksStr = alphaCharsStr + marksStr;
/**
* The string form of a regular expression that would match all of the
* decimal number chars in the unicode character set when placed in a RegExp

@@ -44,3 +79,3 @@ * character class (`[]`).

*
* Taken from the XRegExp library: http://xregexp.com/
* Taken from the XRegExp library: http://xregexp.com/ (thanks @https://github.com/slevithan)
* Specifically: http://xregexp.com/v/3.2.0/xregexp-all.js, the 'Decimal_Number'

@@ -64,13 +99,23 @@ * regex's bmp

* The string form of a regular expression that would match all of the
* letters and decimal number chars in the unicode character set when placed
* in a RegExp character class (`[]`).
* letters and decimal number chars in the unicode character set when placed in
* a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines `[\p{L}\p{Nd}]`
* escape ("all letters and decimal numbers")
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{Nd}]` escape ("all letters and decimal numbers")
*/
export var alphaNumericCharsStr = alphaCharsStr + decimalNumbersStr;
export var alphaNumericCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;
/**
* The string form of a regular expression that would match all of the
* letters, combining marks, and decimal number chars in the unicode character
* set when placed in a RegExp character class (`[]`).
*
* These would be the characters matched by unicode regex engines
* `[\p{L}\p{M}\p{Nd}]` escape ("all letters, combining marks, and decimal
* numbers")
*/
export var alphaNumericAndMarksCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;
// Simplified IP regular expression
var ipStr = '(?:[' + decimalNumbersStr + ']{1,3}\\.){3}[' + decimalNumbersStr + ']{1,3}';
// Protected domain label which do not allow "-" character on the beginning and the end of a single label
var domainLabelStr = '[' + alphaNumericCharsStr + '](?:[' + alphaNumericCharsStr + '\\-]{0,61}[' + alphaNumericCharsStr + '])?';
var domainLabelStr = '[' + alphaNumericAndMarksCharsStr + '](?:[' + alphaNumericAndMarksCharsStr + '\\-]{0,61}[' + alphaNumericAndMarksCharsStr + '])?';
var getDomainLabelStr = function (group) {

@@ -90,4 +135,4 @@ return '(?=(' + domainLabelStr + '))\\' + group;

*/
export var domainNameRegex = new RegExp('[' + alphaNumericCharsStr + '.\\-]*[' + alphaNumericCharsStr + '\\-]');
export var domainNameRegex = new RegExp('[' + alphaNumericAndMarksCharsStr + '.\\-]*[' + alphaNumericAndMarksCharsStr + '\\-]');
//# sourceMappingURL=regex-lib.js.map
{
"name": "autolinker",
"version": "2.1.0",
"version": "2.2.0",
"description": "Utility to automatically link the URLs, email addresses, phone numbers, hashtags, and mentions (Twitter, Instagram) in a given block of text/HTML",

@@ -5,0 +5,0 @@ "main": "./dist/commonjs/index.js",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc