CoreCode
Version vom
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/38751/253181/Core.js
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.linkifyPlusPlusCore = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var _require = require("./lib/url-matcher"),
UrlMatcher = _require.UrlMatcher,
_require2 = require("./lib/linkifier"),
INVALID_TAGS = _require2.INVALID_TAGS,
Linkifier = _require2.Linkifier,
linkify = _require2.linkify;
module.exports = {
UrlMatcher,
Linkifier,
INVALID_TAGS,
linkify
};
},{"./lib/linkifier":2,"./lib/url-matcher":4}],2:[function(require,module,exports){
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/* eslint-env browser */
var Events = require("event-lite");
var INVALID_TAGS = {
A: true,
NOSCRIPT: true,
OPTION: true,
SCRIPT: true,
STYLE: true,
TEXTAREA: true,
SVG: true,
CANVAS: true,
BUTTON: true,
SELECT: true,
TEMPLATE: true,
METER: true,
PROGRESS: true,
MATH: true,
TIME: true
};
var Pos = function () {
function Pos(container, offset) {
var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
_classCallCheck(this, Pos);
this.container = container;
this.offset = offset;
this.i = i;
}
Pos.prototype.add = function add(change) {
var cont = this.container,
offset = this.offset;
this.i += change;
// If the container is #text.parentNode
if (cont.childNodes.length) {
cont = cont.childNodes[offset];
offset = 0;
}
// If the container is #text
while (cont) {
if (cont.nodeType == 3) {
if (!cont.LEN) {
cont.LEN = cont.nodeValue.length;
}
if (offset + change <= cont.LEN) {
this.container = cont;
this.offset = offset + change;
return;
}
change = offset + change - cont.LEN;
offset = 0;
}
cont = cont.nextSibling;
}
};
Pos.prototype.moveTo = function moveTo(offset) {
this.add(offset - this.i);
};
return Pos;
}();
function cloneContents(range) {
if (range.startContainer == range.endContainer) {
return document.createTextNode(range.toString());
}
return range.cloneContents();
}
var DEFAULT_OPTIONS = {
maxRunTime: 100,
timeout: 10000,
newTab: true,
noOpener: true,
embedImage: true
};
var Linkifier = function (_Events) {
_inherits(Linkifier, _Events);
function Linkifier(root) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
_classCallCheck(this, Linkifier);
var _this = _possibleConstructorReturn(this, _Events.call(this));
if (!(root instanceof Node)) {
options = root;
root = options.root;
}
_this.root = root;
_this.options = Object.assign({}, DEFAULT_OPTIONS, options);
_this.aborted = false;
return _this;
}
Linkifier.prototype.start = function start() {
var time = Date.now,
startTime = time(),
chunks = this.generateChunks();
var next = () => {
if (this.aborted) {
this.emit("error", new Error("Aborted"));
return;
}
var chunkStart = time(),
now;
do {
if (chunks.next().done) {
this.emit("complete", time() - startTime);
return;
}
} while ((now = time()) - chunkStart < this.options.maxRunTime);
if (now - startTime > this.options.timeout) {
this.emit("error", new Error(`max execution time exceeded: ${now - startTime}, on ${this.root}`));
return;
}
setTimeout(next);
};
setTimeout(next);
};
Linkifier.prototype.abort = function abort() {
this.aborted = true;
};
Linkifier.prototype.generateRanges = function* generateRanges() {
var validator = this.options.validator;
var filter = {
acceptNode: function (node) {
if (validator && !validator(node)) {
return NodeFilter.FILTER_REJECT;
}
if (INVALID_TAGS[node.nodeName]) {
return NodeFilter.FILTER_REJECT;
}
if (node.nodeName == "WBR") {
return NodeFilter.FILTER_ACCEPT;
}
if (node.nodeType == 3) {
return NodeFilter.FILTER_ACCEPT;
}
return NodeFilter.FILTER_SKIP;
}
};
// Generate linkified ranges.
var walker = document.createTreeWalker(this.root, NodeFilter.SHOW_TEXT + NodeFilter.SHOW_ELEMENT, filter),
start,
end,
current,
range;
end = start = walker.nextNode();
if (!start) {
return;
}
range = document.createRange();
range.setStartBefore(start);
while (current = walker.nextNode()) {
if (end.nextSibling == current) {
end = current;
continue;
}
range.setEndAfter(end);
yield range;
end = start = current;
range.setStartBefore(start);
}
range.setEndAfter(end);
yield range;
};
Linkifier.prototype.generateChunks = function* generateChunks() {
var matcher = this.options.matcher;
for (var range of this.generateRanges()) {
var frag = null,
pos = null,
text = range.toString(),
textRange = null;
for (var result of matcher.match(text)) {
if (!frag) {
frag = document.createDocumentFragment();
pos = new Pos(range.startContainer, range.startOffset);
textRange = range.cloneRange();
}
// clone text
pos.moveTo(result.start);
textRange.setEnd(pos.container, pos.offset);
frag.appendChild(cloneContents(textRange));
// clone link
textRange.collapse();
pos.moveTo(result.end);
textRange.setEnd(pos.container, pos.offset);
var content = cloneContents(textRange),
link = this.buildLink(result, content);
textRange.collapse();
frag.appendChild(link);
this.emit("link", { link, range, result, content });
}
if (pos) {
pos.moveTo(text.length);
textRange.setEnd(pos.container, pos.offset);
frag.appendChild(cloneContents(textRange));
range.deleteContents();
range.insertNode(frag);
}
yield;
}
};
Linkifier.prototype.buildLink = function buildLink(result, content) {
var _options = this.options,
newTab = _options.newTab,
embedImage = _options.embedImage,
noOpener = _options.noOpener;
var link = document.createElement("a");
link.href = result.url;
link.title = "Click me";
link.className = "linkifyplus";
if (newTab) {
link.target = "_blank";
}
if (noOpener) {
link.rel = "noopener";
}
var child;
if (embedImage && /^[^?#]+\.(?:jpg|png|gif|jpeg|svg)(?:$|[?#])/i.test(result.url)) {
child = new Image();
child.src = result.url;
child.alt = result.text;
} else {
child = content;
}
link.appendChild(child);
return link;
};
return Linkifier;
}(Events);
function linkify() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return new Promise((resolve, reject) => {
var linkifier = new Linkifier(...args);
linkifier.on("error", reject);
linkifier.on("complete", resolve);
for (var key of Object.keys(linkifier.options)) {
if (key.startsWith("on")) {
linkifier.on(key.slice(2), linkifier.options[key]);
}
}
linkifier.start();
});
}
module.exports = {
INVALID_TAGS,
Linkifier,
linkify
};
},{"event-lite":5}],3:[function(require,module,exports){
module.exports={
"maxLength": 22,
"chars": "セール佛山à²à²¾à²°à²¤æ…ˆå–„集团在线한êµà¬à¬¾à¬°à¬¤à¦à¦¾à§°à¦¤å…«å¦Ù…وقعবংল公益å¸é¦™æ ¼é‡Œæ‹‰ç½‘ç«™ç§»åŠ¨æˆ‘çˆ±ä½ Ð¼Ð¾Ñквақзнлйтрбгеファッションストア삼성சிஙà¯à®•à®ªà¯‚à®°å•†æ ‡åº—åŸŽÐ´Ð¸ÑŽæ–°é—»å®¶é›»ä¸æ–‡ä¿¡å›½åœ‹å¨±ä¹à°à°¾à°°à°¤à±à¶½à¶‚à¶šà·ã‚¯ãƒ©ã‚¦ãƒ‰à¤à¤¾à¤°à¤¤à¤®à¥à¥‹à¤¸à¤‚गठनé¤åŽ…ç»œÑƒæ¸¯é£Ÿå“é£žåˆ©æµ¦å°æ¹¾ç£æ‰‹æœºØ§Ù„جزئرنیتبپکسديةڀ澳門닷컴شكგე构å¥åº·à¹„ทยфã¿ã‚“ãªÎµÎ»ä¸–界書ç±à´à´¾à´°à´¤à´‚å€ë„·ã‚³ãƒ 游æˆä¼ä¸šæ¯å˜‰å¤§é…’ØµØ·å¹¿ä¸œà®‡à®²à¯ˆà®¨à®¤à®¯à®¾Õ°Õ¡ÕµåŠ å¡Ù政务",
"table": {
"aarp": true,
"abb": true,
"abbott": true,
"abc": true,
"abogado": true,
"abudhabi": true,
"ac": true,
"academy": true,
"accenture": true,
"accountant": true,
"accountants": true,
"aco": true,
"active": true,
"actor": true,
"ad": true,
"adult": true,
"ae": true,
"aeg": true,
"aero": true,
"af": true,
"afamilycompany": true,
"afl": true,
"africa": true,
"ag": true,
"agency": true,
"ai": true,
"aig": true,
"airbus": true,
"airforce": true,
"al": true,
"allstate": true,
"alsace": true,
"am": true,
"amfam": true,
"amica": true,
"amsterdam": true,
"analytics": true,
"ao": true,
"apartments": true,
"aq": true,
"aquarelle": true,
"ar": true,
"archi": true,
"army": true,
"art": true,
"arte": true,
"as": true,
"asia": true,
"associates": true,
"at": true,
"attorney": true,
"au": true,
"auction": true,
"audi": true,
"audio": true,
"auspost": true,
"auto": true,
"autos": true,
"aw": true,
"aws": true,
"ax": true,
"axa": true,
"az": true,
"azure": true,
"ba": true,
"baby": true,
"baidu": true,
"band": true,
"bank": true,
"bar": true,
"barcelona": true,
"barclaycard": true,
"barclays": true,
"bargains": true,
"basketball": true,
"bayern": true,
"bb": true,
"bbva": true,
"bd": true,
"be": true,
"beer": true,
"bentley": true,
"berlin": true,
"best": true,
"bet": true,
"bf": true,
"bg": true,
"bh": true,
"bi": true,
"bible": true,
"bid": true,
"bike": true,
"bing": true,
"bingo": true,
"bio": true,
"biz": true,
"bj": true,
"black": true,
"blackfriday": true,
"blanco": true,
"blog": true,
"bloomberg": true,
"blue": true,
"bm": true,
"bms": true,
"bmw": true,
"bn": true,
"bnpparibas": true,
"bo": true,
"boats": true,
"bosch": true,
"bostik": true,
"boston": true,
"bot": true,
"boutique": true,
"br": true,
"bradesco": true,
"bridgestone": true,
"broadway": true,
"broker": true,
"brother": true,
"brussels": true,
"bs": true,
"bt": true,
"bugatti": true,
"build": true,
"builders": true,
"business": true,
"buzz": true,
"bw": true,
"by": true,
"bz": true,
"bzh": true,
"ca": true,
"cab": true,
"cafe": true,
"cam": true,
"camera": true,
"camp": true,
"cancerresearch": true,
"canon": true,
"capetown": true,
"capital": true,
"car": true,
"cards": true,
"care": true,
"career": true,
"careers": true,
"cars": true,
"casa": true,
"cash": true,
"casino": true,
"cat": true,
"catering": true,
"catholic": true,
"cba": true,
"cc": true,
"cd": true,
"center": true,
"ceo": true,
"cern": true,
"cf": true,
"cfa": true,
"cfd": true,
"cg": true,
"ch": true,
"chanel": true,
"chase": true,
"chat": true,
"cheap": true,
"christmas": true,
"church": true,
"ci": true,
"cisco": true,
"citic": true,
"city": true,
"ck": true,
"cl": true,
"claims": true,
"cleaning": true,
"click": true,
"clinic": true,
"clothing": true,
"cloud": true,
"club": true,
"clubmed": true,
"cm": true,
"cn": true,
"co": true,
"coach": true,
"codes": true,
"coffee": true,
"college": true,
"cologne": true,
"com": true,
"community": true,
"company": true,
"computer": true,
"condos": true,
"construction": true,
"consulting": true,
"contractors": true,
"cooking": true,
"cool": true,
"coop": true,
"corsica": true,
"country": true,
"coupons": true,
"courses": true,
"cr": true,
"credit": true,
"creditcard": true,
"creditunion": true,
"cricket": true,
"crown": true,
"crs": true,
"cruises": true,
"csc": true,
"cu": true,
"cuisinella": true,
"cv": true,
"cw": true,
"cx": true,
"cy": true,
"cymru": true,
"cz": true,
"dabur": true,
"dance": true,
"date": true,
"dating": true,
"de": true,
"deals": true,
"degree": true,
"delivery": true,
"dell": true,
"deloitte": true,
"democrat": true,
"dental": true,
"dentist": true,
"desi": true,
"design": true,
"dhl": true,
"diamonds": true,
"diet": true,
"digital": true,
"direct": true,
"directory": true,
"discount": true,
"dj": true,
"dk": true,
"dm": true,
"dnp": true,
"do": true,
"doctor": true,
"dog": true,
"domains": true,
"download": true,
"dubai": true,
"duck": true,
"durban": true,
"dvag": true,
"dz": true,
"earth": true,
"ec": true,
"eco": true,
"edeka": true,
"edu": true,
"education": true,
"ee": true,
"eg": true,
"email": true,
"emerck": true,
"energy": true,
"engineer": true,
"engineering": true,
"enterprises": true,
"equipment": true,
"er": true,
"ericsson": true,
"erni": true,
"es": true,
"estate": true,
"et": true,
"eu": true,
"eurovision": true,
"eus": true,
"events": true,
"everbank": true,
"exchange": true,
"expert": true,
"exposed": true,
"express": true,
"extraspace": true,
"fage": true,
"fail": true,
"fairwinds": true,
"faith": true,
"family": true,
"fan": true,
"fans": true,
"farm": true,
"fashion": true,
"feedback": true,
"ferrero": true,
"fi": true,
"film": true,
"finance": true,
"financial": true,
"firmdale": true,
"fish": true,
"fishing": true,
"fit": true,
"fitness": true,
"fj": true,
"fk": true,
"flights": true,
"florist": true,
"flowers": true,
"fm": true,
"fo": true,
"foo": true,
"football": true,
"ford": true,
"forex": true,
"forsale": true,
"forum": true,
"foundation": true,
"fox": true,
"fr": true,
"fresenius": true,
"frl": true,
"frogans": true,
"fujitsu": true,
"fujixerox": true,
"fun": true,
"fund": true,
"furniture": true,
"futbol": true,
"fyi": true,
"ga": true,
"gal": true,
"gallery": true,
"game": true,
"games": true,
"garden": true,
"gd": true,
"gdn": true,
"ge": true,
"gea": true,
"gent": true,
"genting": true,
"gf": true,
"gg": true,
"gh": true,
"gi": true,
"gift": true,
"gifts": true,
"gives": true,
"gl": true,
"glade": true,
"glass": true,
"global": true,
"globo": true,
"gm": true,
"gmail": true,
"gmbh": true,
"gmo": true,
"gn": true,
"gold": true,
"golf": true,
"goo": true,
"goog": true,
"google": true,
"gop": true,
"gov": true,
"gp": true,
"gq": true,
"gr": true,
"graphics": true,
"gratis": true,
"green": true,
"gripe": true,
"group": true,
"gs": true,
"gt": true,
"gu": true,
"guardian": true,
"gucci": true,
"guide": true,
"guitars": true,
"guru": true,
"gw": true,
"gy": true,
"hamburg": true,
"haus": true,
"health": true,
"healthcare": true,
"help": true,
"here": true,
"hiphop": true,
"hisamitsu": true,
"hitachi": true,
"hiv": true,
"hk": true,
"hm": true,
"hn": true,
"hockey": true,
"holdings": true,
"holiday": true,
"homes": true,
"honda": true,
"horse": true,
"hospital": true,
"host": true,
"hosting": true,
"hoteles": true,
"hotmail": true,
"house": true,
"how": true,
"hr": true,
"hsbc": true,
"ht": true,
"hu": true,
"ice": true,
"id": true,
"ie": true,
"ifm": true,
"ikano": true,
"il": true,
"im": true,
"immo": true,
"immobilien": true,
"in": true,
"industries": true,
"info": true,
"ink": true,
"institute": true,
"insurance": true,
"insure": true,
"int": true,
"international": true,
"investments": true,
"io": true,
"ipiranga": true,
"iq": true,
"ir": true,
"irish": true,
"is": true,
"iselect": true,
"ismaili": true,
"ist": true,
"istanbul": true,
"it": true,
"itv": true,
"jaguar": true,
"java": true,
"jcb": true,
"je": true,
"jetzt": true,
"jewelry": true,
"jll": true,
"jm": true,
"jmp": true,
"jnj": true,
"jo": true,
"jobs": true,
"joburg": true,
"jp": true,
"jprs": true,
"juegos": true,
"kaufen": true,
"ke": true,
"kerryhotels": true,
"kg": true,
"kh": true,
"ki": true,
"kia": true,
"kim": true,
"kinder": true,
"kitchen": true,
"kiwi": true,
"km": true,
"kn": true,
"koeln": true,
"komatsu": true,
"kp": true,
"kpn": true,
"kr": true,
"krd": true,
"kred": true,
"kw": true,
"ky": true,
"kyoto": true,
"kz": true,
"la": true,
"ladbrokes": true,
"lamborghini": true,
"lancaster": true,
"land": true,
"landrover": true,
"lanxess": true,
"lat": true,
"latrobe": true,
"law": true,
"lawyer": true,
"lb": true,
"lc": true,
"lease": true,
"leclerc": true,
"legal": true,
"lego": true,
"lexus": true,
"lgbt": true,
"li": true,
"liaison": true,
"lidl": true,
"life": true,
"lighting": true,
"lilly": true,
"limited": true,
"limo": true,
"linde": true,
"link": true,
"lipsy": true,
"live": true,
"lixil": true,
"lk": true,
"loan": true,
"loans": true,
"locus": true,
"lol": true,
"london": true,
"lotto": true,
"love": true,
"lr": true,
"ls": true,
"lt": true,
"ltd": true,
"ltda": true,
"lu": true,
"lundbeck": true,
"lupin": true,
"luxury": true,
"lv": true,
"ly": true,
"ma": true,
"maif": true,
"maison": true,
"makeup": true,
"man": true,
"management": true,
"mango": true,
"market": true,
"marketing": true,
"markets": true,
"marriott": true,
"mba": true,
"mc": true,
"md": true,
"me": true,
"med": true,
"media": true,
"meet": true,
"melbourne": true,
"memorial": true,
"men": true,
"menu": true,
"mg": true,
"mh": true,
"miami": true,
"microsoft": true,
"mil": true,
"mini": true,
"mk": true,
"ml": true,
"mlb": true,
"mm": true,
"mma": true,
"mn": true,
"mo": true,
"mobi": true,
"moda": true,
"moe": true,
"moi": true,
"mom": true,
"monash": true,
"money": true,
"mortgage": true,
"moscow": true,
"motorcycles": true,
"movie": true,
"mp": true,
"mq": true,
"mr": true,
"ms": true,
"mt": true,
"mtn": true,
"mtr": true,
"mu": true,
"museum": true,
"mutual": true,
"mv": true,
"mw": true,
"mx": true,
"my": true,
"mz": true,
"na": true,
"nab": true,
"nadex": true,
"nagoya": true,
"name": true,
"nationwide": true,
"natura": true,
"navy": true,
"nc": true,
"ne": true,
"nec": true,
"net": true,
"network": true,
"neustar": true,
"new": true,
"news": true,
"next": true,
"nextdirect": true,
"nf": true,
"ng": true,
"ngo": true,
"ni": true,
"nico": true,
"nikon": true,
"ninja": true,
"nissay": true,
"nl": true,
"no": true,
"nokia": true,
"norton": true,
"np": true,
"nr": true,
"nra": true,
"nrw": true,
"ntt": true,
"nu": true,
"nyc": true,
"nz": true,
"obi": true,
"observer": true,
"off": true,
"okinawa": true,
"om": true,
"omega": true,
"one": true,
"ong": true,
"onl": true,
"online": true,
"onyourside": true,
"ooo": true,
"oracle": true,
"orange": true,
"org": true,
"organic": true,
"osaka": true,
"otsuka": true,
"ovh": true,
"pa": true,
"page": true,
"paris": true,
"partners": true,
"parts": true,
"party": true,
"pe": true,
"pet": true,
"pf": true,
"pg": true,
"ph": true,
"pharmacy": true,
"philips": true,
"photo": true,
"photography": true,
"photos": true,
"physio": true,
"pics": true,
"pictet": true,
"pictures": true,
"pink": true,
"pioneer": true,
"pizza": true,
"pk": true,
"pl": true,
"place": true,
"plumbing": true,
"plus": true,
"pm": true,
"pn": true,
"poker": true,
"porn": true,
"post": true,
"pr": true,
"praxi": true,
"press": true,
"pro": true,
"productions": true,
"promo": true,
"properties": true,
"property": true,
"protection": true,
"pru": true,
"prudential": true,
"ps": true,
"pt": true,
"pub": true,
"pw": true,
"py": true,
"qa": true,
"qpon": true,
"quebec": true,
"racing": true,
"radio": true,
"raid": true,
"re": true,
"realtor": true,
"realty": true,
"recipes": true,
"red": true,
"redstone": true,
"rehab": true,
"reise": true,
"reisen": true,
"reit": true,
"ren": true,
"rent": true,
"rentals": true,
"repair": true,
"report": true,
"republican": true,
"rest": true,
"restaurant": true,
"review": true,
"reviews": true,
"rexroth": true,
"rich": true,
"ricoh": true,
"rio": true,
"rip": true,
"ro": true,
"rocks": true,
"rodeo": true,
"rs": true,
"ru": true,
"ruhr": true,
"run": true,
"rw": true,
"rwe": true,
"ryukyu": true,
"sa": true,
"saarland": true,
"sale": true,
"salon": true,
"samsung": true,
"sandvik": true,
"sandvikcoromant": true,
"sanofi": true,
"sap": true,
"sarl": true,
"saxo": true,
"sb": true,
"sbi": true,
"sbs": true,
"sc": true,
"sca": true,
"scb": true,
"schmidt": true,
"school": true,
"schule": true,
"schwarz": true,
"science": true,
"scjohnson": true,
"scot": true,
"sd": true,
"se": true,
"seat": true,
"security": true,
"sener": true,
"services": true,
"ses": true,
"seven": true,
"sew": true,
"sex": true,
"sexy": true,
"sfr": true,
"sg": true,
"sh": true,
"shangrila": true,
"sharp": true,
"shell": true,
"shiksha": true,
"shoes": true,
"shop": true,
"shopping": true,
"show": true,
"shriram": true,
"si": true,
"singles": true,
"site": true,
"sk": true,
"ski": true,
"skin": true,
"sky": true,
"skype": true,
"sl": true,
"sm": true,
"smart": true,
"sn": true,
"sncf": true,
"so": true,
"soccer": true,
"social": true,
"software": true,
"sohu": true,
"solar": true,
"solutions": true,
"sony": true,
"soy": true,
"space": true,
"spreadbetting": true,
"sr": true,
"srl": true,
"st": true,
"stada": true,
"statefarm": true,
"statoil": true,
"stc": true,
"storage": true,
"store": true,
"stream": true,
"studio": true,
"study": true,
"style": true,
"su": true,
"sucks": true,
"supplies": true,
"supply": true,
"support": true,
"surf": true,
"surgery": true,
"suzuki": true,
"sv": true,
"swatch": true,
"swiss": true,
"sx": true,
"sy": true,
"sydney": true,
"symantec": true,
"systems": true,
"sz": true,
"taipei": true,
"tatamotors": true,
"tatar": true,
"tattoo": true,
"tax": true,
"taxi": true,
"tc": true,
"td": true,
"team": true,
"tech": true,
"technology": true,
"tel": true,
"tennis": true,
"teva": true,
"tf": true,
"tg": true,
"th": true,
"theater": true,
"theatre": true,
"tickets": true,
"tienda": true,
"tiffany": true,
"tips": true,
"tires": true,
"tirol": true,
"tj": true,
"tk": true,
"tl": true,
"tm": true,
"tn": true,
"to": true,
"today": true,
"tokyo": true,
"tools": true,
"top": true,
"toray": true,
"toshiba": true,
"total": true,
"tours": true,
"town": true,
"toyota": true,
"toys": true,
"tr": true,
"trade": true,
"trading": true,
"training": true,
"travel": true,
"travelers": true,
"trust": true,
"tt": true,
"tube": true,
"tv": true,
"tw": true,
"tz": true,
"ua": true,
"ubs": true,
"ug": true,
"uk": true,
"university": true,
"uno": true,
"uol": true,
"us": true,
"uy": true,
"uz": true,
"va": true,
"vacations": true,
"vanguard": true,
"vc": true,
"ve": true,
"vegas": true,
"ventures": true,
"versicherung": true,
"vet": true,
"vg": true,
"vi": true,
"viajes": true,
"video": true,
"vig": true,
"villas": true,
"vin": true,
"vip": true,
"vision": true,
"vistaprint": true,
"vlaanderen": true,
"vn": true,
"vodka": true,
"volkswagen": true,
"volvo": true,
"vote": true,
"voting": true,
"voto": true,
"voyage": true,
"vu": true,
"wales": true,
"walter": true,
"wang": true,
"warman": true,
"watch": true,
"webcam": true,
"weber": true,
"website": true,
"wed": true,
"wedding": true,
"weir": true,
"wf": true,
"whoswho": true,
"wien": true,
"wiki": true,
"williamhill": true,
"win": true,
"windows": true,
"wine": true,
"wme": true,
"woodside": true,
"work": true,
"works": true,
"world": true,
"ws": true,
"wtf": true,
"xbox": true,
"xerox": true,
"xin": true,
"xn--1ck2e1b": true,
"xn--1qqw23a": true,
"xn--2scrj9c": true,
"xn--30rr7y": true,
"xn--3bst00m": true,
"xn--3ds443g": true,
"xn--3e0b707e": true,
"xn--3hcrj9c": true,
"xn--45br5cyl": true,
"xn--45q11c": true,
"xn--4gbrim": true,
"xn--54b7fta0cc": true,
"xn--55qw42g": true,
"xn--55qx5d": true,
"xn--5su34j936bgsg": true,
"xn--5tzm5g": true,
"xn--6frz82g": true,
"xn--6qq986b3xl": true,
"xn--80adxhks": true,
"xn--80ao21a": true,
"xn--80asehdb": true,
"xn--80aswg": true,
"xn--90a3ac": true,
"xn--90ae": true,
"xn--90ais": true,
"xn--bck1b9a5dre4c": true,
"xn--c1avg": true,
"xn--cck2b3b": true,
"xn--cg4bki": true,
"xn--clchc0ea0b2g2a9gcd": true,
"xn--czr694b": true,
"xn--czrs0t": true,
"xn--czru2d": true,
"xn--d1acj3b": true,
"xn--d1alf": true,
"xn--e1a4c": true,
"xn--efvy88h": true,
"xn--fct429k": true,
"xn--fiq228c5hs": true,
"xn--fiq64b": true,
"xn--fiqs8s": true,
"xn--fiqz9s": true,
"xn--fjq720a": true,
"xn--fpcrj9c3d": true,
"xn--fzc2c9e2c": true,
"xn--gckr3f0f": true,
"xn--h2breg3eve": true,
"xn--h2brj9c": true,
"xn--h2brj9c8c": true,
"xn--hxt814e": true,
"xn--i1b6b1a6a2e": true,
"xn--imr513n": true,
"xn--io0a7i": true,
"xn--j1amh": true,
"xn--j6w193g": true,
"xn--jvr189m": true,
"xn--kcrx77d1x4a": true,
"xn--kprw13d": true,
"xn--kpry57d": true,
"xn--kput3i": true,
"xn--l1acc": true,
"xn--lgbbat1ad8j": true,
"xn--mgb9awbf": true,
"xn--mgba3a4f16a": true,
"xn--mgbaam7a8h": true,
"xn--mgbab2bd": true,
"xn--mgbai9azgqp6j": true,
"xn--mgbayh7gpa": true,
"xn--mgbbh1a": true,
"xn--mgberp4a5d4ar": true,
"xn--mgbgu82a": true,
"xn--mgbpl2fh": true,
"xn--mgbtx2b": true,
"xn--mix891f": true,
"xn--mk1bu44c": true,
"xn--ngbc5azd": true,
"xn--node": true,
"xn--nqv7f": true,
"xn--nyqy26a": true,
"xn--o3cw4h": true,
"xn--ogbpf8fl": true,
"xn--p1acf": true,
"xn--p1ai": true,
"xn--pgbs0dh": true,
"xn--q9jyb4c": true,
"xn--qxam": true,
"xn--rhqv96g": true,
"xn--rovu88b": true,
"xn--rvc1e0am3e": true,
"xn--ses554g": true,
"xn--t60b56a": true,
"xn--tckwe": true,
"xn--unup4y": true,
"xn--vhquv": true,
"xn--vuq861b": true,
"xn--w4r85el8fhu5dnra": true,
"xn--wgbh1c": true,
"xn--wgbl6a": true,
"xn--xhq521b": true,
"xn--xkc2al3hye2a": true,
"xn--xkc2dl3a5ee0h": true,
"xn--y9a3aq": true,
"xn--yfro4i67o": true,
"xn--ygbi2ammx": true,
"xn--zfr164b": true,
"xperia": true,
"xxx": true,
"xyz": true,
"yachts": true,
"yandex": true,
"ye": true,
"yoga": true,
"yokohama": true,
"yt": true,
"za": true,
"zm": true,
"zone": true,
"zw": true,
"セール": true,
"佛山": true,
"à²à²¾à²°à²¤": true,
"慈善": true,
"集团": true,
"在线": true,
"한êµ": true,
"à¬à¬¾à¬°à¬¤": true,
"à¦à¦¾à§°à¦¤": true,
"å…«å¦": true,
"موقع": true,
"বাংলা": true,
"公益": true,
"å…¬å¸": true,
"é¦™æ ¼é‡Œæ‹‰": true,
"网站": true,
"移动": true,
"æˆ‘çˆ±ä½ ": true,
"моÑква": true,
"қаз": true,
"онлайн": true,
"Ñайт": true,
"Ñрб": true,
"бг": true,
"бел": true,
"ファッション": true,
"орг": true,
"ストア": true,
"삼성": true,
"சிஙà¯à®•பà¯à®ªà¯‚à®°à¯": true,
"å•†æ ‡": true,
"商店": true,
"商城": true,
"дети": true,
"мкд": true,
"ею": true,
"æ–°é—»": true,
"å®¶é›»": true,
"䏿–‡ç½‘": true,
"ä¸ä¿¡": true,
"ä¸å›½": true,
"ä¸åœ‹": true,
"娱ä¹": true,
"à°à°¾à°°à°¤à±": true,
"ලංකà·": true,
"クラウド": true,
"à¤à¤¾à¤°à¤¤à¤®à¥": true,
"à¤à¤¾à¤°à¤¤": true,
"à¤à¤¾à¤°à¥‹à¤¤": true,
"网店": true,
"संगठन": true,
"é¤åŽ…": true,
"网络": true,
"укр": true,
"香港": true,
"食å“": true,
"飞利浦": true,
"å°æ¹¾": true,
"å°ç£": true,
"手机": true,
"мон": true,
"الجزائر": true,
"عمان": true,
"ایران": true,
"امارات": true,
"بازار": true,
"پاکستان": true,
"الاردن": true,
"بارت": true,
"السعودية": true,
"ڀارت": true,
"سودان": true,
"عراق": true,
"澳門": true,
"ë‹·ì»´": true,
"شبكة": true,
"გე": true,
"机构": true,
"å¥åº·": true,
"ไทย": true,
"سورية": true,
"руÑ": true,
"рф": true,
"تونس": true,
"ã¿ã‚“ãª": true,
"ελ": true,
"世界": true,
"書ç±": true,
"à´à´¾à´°à´¤à´‚": true,
"网å€": true,
"ë‹·ë„·": true,
"コム": true,
"游æˆ": true,
"ä¼ä¸š": true,
"ä¿¡æ¯": true,
"嘉里大酒店": true,
"مصر": true,
"قطر": true,
"广东": true,
"இலஙà¯à®•ை": true,
"இநà¯à®¤à®¿à®¯à®¾": true,
"Õ°Õ¡Õµ": true,
"æ–°åŠ å¡": true,
"Ùلسطين": true,
"政务": true
}
}
},{}],4:[function(require,module,exports){
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var tlds = require("./tlds.json"),
RE = {
PROTOCOL: "([a-z][-a-z*]+://)?",
USER: "(?:([\\w:.+-]+)@)?",
DOMAIN_UNI: `([a-z0-9-.\\u00A0-\\uFFFF]+\\.[a-z0-9-${tlds.chars}]{1,${tlds.maxLength}})`,
DOMAIN: `([a-z0-9-.]+\\.[a-z0-9-]{1,${tlds.maxLength}})`,
PORT: "(:\\d+\\b)?",
PATH_UNI: "([/?#]\\S*)?",
PATH: "([/?#][\\w-.~!$&*+;=:@%/?#(),'\\[\\]]*)?"
},
TLD_TABLE = tlds.table;
function regexEscape(text) {
return text.replace(/[[\]\\^-]/g, "\\$&");
}
function buildRegex(_ref) {
var _ref$unicode = _ref.unicode,
unicode = _ref$unicode === undefined ? false : _ref$unicode,
_ref$customRules = _ref.customRules,
customRules = _ref$customRules === undefined ? [] : _ref$customRules,
_ref$standalone = _ref.standalone,
standalone = _ref$standalone === undefined ? false : _ref$standalone,
boundaryLeft = _ref.boundaryLeft,
boundaryRight = _ref.boundaryRight;
var pattern = RE.PROTOCOL + RE.USER;
if (unicode) {
pattern += RE.DOMAIN_UNI + RE.PORT + RE.PATH_UNI;
} else {
pattern += RE.DOMAIN + RE.PORT + RE.PATH;
}
if (customRules.length) {
pattern = "(?:" + pattern + "|(" + customRules.join("|") + "))";
} else {
pattern += "()";
}
var prefix, suffix, invalidSuffix;
if (standalone) {
if (boundaryLeft) {
prefix = "((?:^|\\s)[" + regexEscape(boundaryLeft) + "]*?)";
} else {
prefix = "(^|\\s)";
}
if (boundaryRight) {
suffix = "([" + regexEscape(boundaryRight) + "]*(?:$|\\s))";
} else {
suffix = "($|\\s)";
}
invalidSuffix = "[^\\s" + regexEscape(boundaryRight) + "]";
} else {
prefix = "(^|\\b|_)";
suffix = "()";
}
pattern = prefix + pattern + suffix;
return {
url: new RegExp(pattern, "igm"),
invalidSuffix: invalidSuffix && new RegExp(invalidSuffix),
mustache: /\{\{[\s\S]+?\}\}/g
};
}
function pathStrip(m, re, repl) {
var s = m.path.replace(re, repl);
if (s == m.path) return;
m.end -= m.path.length - s.length;
m.suffix = m.path.slice(s.length) + m.suffix;
m.path = s;
}
function pathStripQuote(m, c) {
var i = 0,
s = m.path,
end,
pos = 0;
if (!s.endsWith(c)) return;
while ((pos = s.indexOf(c, pos)) >= 0) {
if (i % 2) {
end = null;
} else {
end = pos;
}
pos++;
i++;
}
if (!end) return;
m.end -= s.length - end;
m.path = s.slice(0, end);
m.suffix = s.slice(end) + m.suffix;
}
function pathStripBrace(m, left, right) {
var str = m.path,
re = new RegExp("[\\" + left + "\\" + right + "]", "g"),
match,
count = 0,
end;
// Match loop
while (match = re.exec(str)) {
if (count % 2 == 0) {
end = match.index;
if (match[0] == right) {
break;
}
} else {
if (match[0] == left) {
break;
}
}
count++;
}
if (!match && count % 2 == 0) {
return;
}
m.end -= m.path.length - end;
m.path = str.slice(0, end);
m.suffix = str.slice(end) + m.suffix;
}
function isIP(s) {
var m, i;
if (!(m = s.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/))) {
return false;
}
for (i = 1; i < m.length; i++) {
if (+m[i] > 255 || m[i].length > 1 && m[i][0] == "0") {
return false;
}
}
return true;
}
function isDomain(d) {
return (/^[^.-]/.test(d) && d.indexOf("..") < 0
);
}
function inTLDS(domain) {
var match = domain.match(/\.([^.]+)$/);
if (!match) {
return false;
}
var key = match[1].toLowerCase();
return TLD_TABLE.hasOwnProperty(key);
}
var UrlMatcher = function () {
function UrlMatcher() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, UrlMatcher);
this.options = options;
this.regex = buildRegex(options);
}
UrlMatcher.prototype.match = function* match(text) {
var _options = this.options,
_options$fuzzyIp = _options.fuzzyIp,
fuzzyIp = _options$fuzzyIp === undefined ? true : _options$fuzzyIp,
_options$ignoreMustac = _options.ignoreMustache,
ignoreMustache = _options$ignoreMustac === undefined ? false : _options$ignoreMustac,
_regex = this.regex,
url = _regex.url,
invalidSuffix = _regex.invalidSuffix,
mustache = _regex.mustache,
urlLastIndex,
mustacheLastIndex;
mustache.lastIndex = 0;
url.lastIndex = 0;
var mustacheMatch, mustacheRange;
if (ignoreMustache) {
mustacheMatch = mustache.exec(text);
if (mustacheMatch) {
mustacheRange = {
start: mustacheMatch.index,
end: mustache.lastIndex
};
}
}
var urlMatch;
while (urlMatch = url.exec(text)) {
var result;
if (urlMatch[7]) {
// custom rules
result = {
start: urlMatch.index,
end: url.lastIndex,
text: urlMatch[0],
url: urlMatch[0],
custom: urlMatch[7]
};
} else {
result = {
start: urlMatch.index + urlMatch[1].length,
end: url.lastIndex - urlMatch[8].length,
text: null,
url: null,
prefix: urlMatch[1],
protocol: urlMatch[2],
auth: urlMatch[3] || "",
domain: urlMatch[4],
port: urlMatch[5] || "",
path: urlMatch[6] || "",
custom: urlMatch[7],
suffix: urlMatch[8]
};
}
if (mustacheRange && mustacheRange.end <= result.start) {
mustacheMatch = mustache.exec(text);
if (mustacheMatch) {
mustacheRange.start = mustacheMatch.index;
mustacheRange.end = mustache.lastIndex;
} else {
mustacheRange = null;
}
}
// ignore urls inside mustache pair
if (mustacheRange && result.start < mustacheRange.end && result.end >= mustacheRange.start) {
continue;
}
if (!result.custom) {
// adjust path and suffix
if (result.path) {
// Strip BBCode
pathStrip(result, /\[\/?(b|i|u|url|img|quote|code|size|color)\].*/i, "");
// Strip braces
pathStripBrace(result, "(", ")");
pathStripBrace(result, "[", "]");
pathStripBrace(result, "{", "}");
// Strip quotes
pathStripQuote(result, "'");
pathStripQuote(result, '"');
// Remove trailing ".,?"
pathStrip(result, /(^|[^-_])[.,?]+$/, "$1");
}
// check suffix
if (invalidSuffix && invalidSuffix.test(result.suffix)) {
if (/\s$/.test(result.suffix)) {
url.lastIndex--;
}
continue;
}
// check domain
if (isIP(result.domain)) {
if (!fuzzyIp && !result.protocol && !result.auth && !result.path) {
continue;
}
} else if (isDomain(result.domain)) {
if (!inTLDS(result.domain)) {
continue;
}
} else {
continue;
}
// mailto protocol
if (!result.protocol && result.auth) {
var matchMail = result.auth.match(/^mailto:(.+)/);
if (matchMail) {
result.protocol = "mailto:";
result.auth = matchMail[1];
}
}
// http alias
if (result.protocol && result.protocol.match(/^(hxxp|h\*\*p|ttp)/)) {
result.protocol = "http://";
}
// guess protocol
if (!result.protocol) {
var domainMatch;
if (domainMatch = result.domain.match(/^(ftp|irc)/)) {
result.protocol = domainMatch[0] + "://";
} else if (result.domain.match(/^(www|web)/)) {
result.protocol = "http://";
} else if (result.auth && result.auth.indexOf(":") < 0 && !result.path) {
result.protocol = "mailto:";
} else {
result.protocol = "http://";
}
}
// Create URL
result.url = result.protocol + (result.auth && result.auth + "@") + result.domain + result.port + result.path;
result.text = text.slice(result.start, result.end);
}
// since regex is shared with other parse generators, cache lastIndex position and restore later
mustacheLastIndex = mustache.lastIndex;
urlLastIndex = url.lastIndex;
yield result;
url.lastIndex = urlLastIndex;
mustache.lastIndex = mustacheLastIndex;
}
};
return UrlMatcher;
}();
module.exports = {
UrlMatcher
};
},{"./tlds.json":3}],5:[function(require,module,exports){
/**
* event-lite.js - Light-weight EventEmitter (less than 1KB when gzipped)
*
* @copyright Yusuke Kawasaki
* @license MIT
* @constructor
* @see https://github.com/kawanet/event-lite
* @see http://kawanet.github.io/event-lite/EventLite.html
* @example
* var EventLite = require("event-lite");
*
* function MyClass() {...} // your class
*
* EventLite.mixin(MyClass.prototype); // import event methods
*
* var obj = new MyClass();
* obj.on("foo", function() {...}); // add event listener
* obj.once("bar", function() {...}); // add one-time event listener
* obj.emit("foo"); // dispatch event
* obj.emit("bar"); // dispatch another event
* obj.off("foo"); // remove event listener
*/
function EventLite() {
if (!(this instanceof EventLite)) return new EventLite();
}
(function(EventLite) {
// export the class for node.js
if ("undefined" !== typeof module) module.exports = EventLite;
// property name to hold listeners
var LISTENERS = "listeners";
// methods to export
var methods = {
on: on,
once: once,
off: off,
emit: emit
};
// mixin to self
mixin(EventLite.prototype);
// export mixin function
EventLite.mixin = mixin;
/**
* Import on(), once(), off() and emit() methods into target object.
*
* @function EventLite.mixin
* @param target {Prototype}
*/
function mixin(target) {
for (var key in methods) {
target[key] = methods[key];
}
return target;
}
/**
* Add an event listener.
*
* @function EventLite.prototype.on
* @param type {string}
* @param func {Function}
* @returns {EventLite} Self for method chaining
*/
function on(type, func) {
getListeners(this, type).push(func);
return this;
}
/**
* Add one-time event listener.
*
* @function EventLite.prototype.once
* @param type {string}
* @param func {Function}
* @returns {EventLite} Self for method chaining
*/
function once(type, func) {
var that = this;
wrap.originalListener = func;
getListeners(that, type).push(wrap);
return that;
function wrap() {
off.call(that, type, wrap);
func.apply(this, arguments);
}
}
/**
* Remove an event listener.
*
* @function EventLite.prototype.off
* @param [type] {string}
* @param [func] {Function}
* @returns {EventLite} Self for method chaining
*/
function off(type, func) {
var that = this;
var listners;
if (!arguments.length) {
delete that[LISTENERS];
} else if (!func) {
listners = that[LISTENERS];
if (listners) {
delete listners[type];
if (!Object.keys(listners).length) return off.call(that);
}
} else {
listners = getListeners(that, type, true);
if (listners) {
listners = listners.filter(ne);
if (!listners.length) return off.call(that, type);
that[LISTENERS][type] = listners;
}
}
return that;
function ne(test) {
return test !== func && test.originalListener !== func;
}
}
/**
* Dispatch (trigger) an event.
*
* @function EventLite.prototype.emit
* @param type {string}
* @param [value] {*}
* @returns {boolean} True when a listener received the event
*/
function emit(type, value) {
var that = this;
var listeners = getListeners(that, type, true);
if (!listeners) return false;
var arglen = arguments.length;
if (arglen === 1) {
listeners.forEach(zeroarg);
} else if (arglen === 2) {
listeners.forEach(onearg);
} else {
var args = Array.prototype.slice.call(arguments, 1);
listeners.forEach(moreargs);
}
return !!listeners.length;
function zeroarg(func) {
func.call(that);
}
function onearg(func) {
func.call(that, value);
}
function moreargs(func) {
func.apply(that, args);
}
}
/**
* @ignore
*/
function getListeners(that, type, readonly) {
if (readonly && !that[LISTENERS]) return;
var listeners = that[LISTENERS] || (that[LISTENERS] = {});
return listeners[type] || (listeners[type] = []);
}
})(EventLite);
},{}]},{},[1])(1)
});