Created
June 23, 2016 12:36
-
-
Save emaV/193f0d61f7583eeace921be44abfe995 to your computer and use it in GitHub Desktop.
speedtest from sourceforge
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!function(e) { | |
if ("object" == typeof exports && "undefined" != typeof module) | |
module.exports = e(); | |
else if ("function" == typeof define && define.amd) | |
define([], e); | |
else { | |
var f; | |
"undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof self && (f = self), | |
f.io = e() | |
} | |
}(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); | |
throw new Error("Cannot find module '" + o + "'") | |
} | |
var f = n[o] = { | |
exports: {} | |
}; | |
t[o][0].call(f.exports, function(e) { | |
var n = t[o][1][e]; | |
return s(n ? n : e) | |
}, f, f.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(_dereq_, module, exports) { | |
module.exports = _dereq_("./lib/") | |
} | |
, { | |
"./lib/": 2 | |
}], | |
2: [function(_dereq_, module, exports) { | |
var url = _dereq_("./url"); | |
var parser = _dereq_("socket.io-parser"); | |
var Manager = _dereq_("./manager"); | |
var debug = _dereq_("debug")("socket.io-client"); | |
module.exports = exports = lookup; | |
var cache = exports.managers = {}; | |
function lookup(uri, opts) { | |
if (typeof uri == "object") { | |
opts = uri; | |
uri = undefined | |
} | |
opts = opts || {}; | |
var parsed = url(uri); | |
var source = parsed.source; | |
var id = parsed.id; | |
var io; | |
if (opts.forceNew || opts["force new connection"] || false === opts.multiplex) { | |
debug("ignoring socket cache for %s", source); | |
io = Manager(source, opts) | |
} else { | |
if (!cache[id]) { | |
debug("new io instance for %s", source); | |
cache[id] = Manager(source, opts) | |
} | |
io = cache[id] | |
} | |
return io.socket(parsed.path) | |
} | |
exports.protocol = parser.protocol; | |
exports.connect = lookup; | |
exports.Manager = _dereq_("./manager"); | |
exports.Socket = _dereq_("./socket") | |
} | |
, { | |
"./manager": 3, | |
"./socket": 5, | |
"./url": 6, | |
debug: 10, | |
"socket.io-parser": 46 | |
}], | |
3: [function(_dereq_, module, exports) { | |
var url = _dereq_("./url"); | |
var eio = _dereq_("engine.io-client"); | |
var Socket = _dereq_("./socket"); | |
var Emitter = _dereq_("component-emitter"); | |
var parser = _dereq_("socket.io-parser"); | |
var on = _dereq_("./on"); | |
var bind = _dereq_("component-bind"); | |
var object = _dereq_("object-component"); | |
var debug = _dereq_("debug")("socket.io-client:manager"); | |
var indexOf = _dereq_("indexof"); | |
var Backoff = _dereq_("backo2"); | |
module.exports = Manager; | |
function Manager(uri, opts) { | |
if (!(this instanceof Manager)) | |
return new Manager(uri,opts); | |
if (uri && "object" == typeof uri) { | |
opts = uri; | |
uri = undefined | |
} | |
opts = opts || {}; | |
opts.path = opts.path || "/socket.io"; | |
this.nsps = {}; | |
this.subs = []; | |
this.opts = opts; | |
this.reconnection(opts.reconnection !== false); | |
this.reconnectionAttempts(opts.reconnectionAttempts || Infinity); | |
this.reconnectionDelay(opts.reconnectionDelay || 1e3); | |
this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3); | |
this.randomizationFactor(opts.randomizationFactor || .5); | |
this.backoff = new Backoff({ | |
min: this.reconnectionDelay(), | |
max: this.reconnectionDelayMax(), | |
jitter: this.randomizationFactor() | |
}); | |
this.timeout(null == opts.timeout ? 2e4 : opts.timeout); | |
this.readyState = "closed"; | |
this.uri = uri; | |
this.connected = []; | |
this.encoding = false; | |
this.packetBuffer = []; | |
this.encoder = new parser.Encoder; | |
this.decoder = new parser.Decoder; | |
this.autoConnect = opts.autoConnect !== false; | |
if (this.autoConnect) | |
this.open() | |
} | |
Manager.prototype.emitAll = function() { | |
this.emit.apply(this, arguments); | |
for (var nsp in this.nsps) { | |
this.nsps[nsp].emit.apply(this.nsps[nsp], arguments) | |
} | |
} | |
; | |
Manager.prototype.updateSocketIds = function() { | |
for (var nsp in this.nsps) { | |
this.nsps[nsp].id = this.engine.id | |
} | |
} | |
; | |
Emitter(Manager.prototype); | |
Manager.prototype.reconnection = function(v) { | |
if (!arguments.length) | |
return this._reconnection; | |
this._reconnection = !!v; | |
return this | |
} | |
; | |
Manager.prototype.reconnectionAttempts = function(v) { | |
if (!arguments.length) | |
return this._reconnectionAttempts; | |
this._reconnectionAttempts = v; | |
return this | |
} | |
; | |
Manager.prototype.reconnectionDelay = function(v) { | |
if (!arguments.length) | |
return this._reconnectionDelay; | |
this._reconnectionDelay = v; | |
this.backoff && this.backoff.setMin(v); | |
return this | |
} | |
; | |
Manager.prototype.randomizationFactor = function(v) { | |
if (!arguments.length) | |
return this._randomizationFactor; | |
this._randomizationFactor = v; | |
this.backoff && this.backoff.setJitter(v); | |
return this | |
} | |
; | |
Manager.prototype.reconnectionDelayMax = function(v) { | |
if (!arguments.length) | |
return this._reconnectionDelayMax; | |
this._reconnectionDelayMax = v; | |
this.backoff && this.backoff.setMax(v); | |
return this | |
} | |
; | |
Manager.prototype.timeout = function(v) { | |
if (!arguments.length) | |
return this._timeout; | |
this._timeout = v; | |
return this | |
} | |
; | |
Manager.prototype.maybeReconnectOnOpen = function() { | |
if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) { | |
this.reconnect() | |
} | |
} | |
; | |
Manager.prototype.open = Manager.prototype.connect = function(fn) { | |
debug("readyState %s", this.readyState); | |
if (~this.readyState.indexOf("open")) | |
return this; | |
debug("opening %s", this.uri); | |
this.engine = eio(this.uri, this.opts); | |
var socket = this.engine; | |
var self = this; | |
this.readyState = "opening"; | |
this.skipReconnect = false; | |
var openSub = on(socket, "open", function() { | |
self.onopen(); | |
fn && fn() | |
}); | |
var errorSub = on(socket, "error", function(data) { | |
debug("connect_error"); | |
self.cleanup(); | |
self.readyState = "closed"; | |
self.emitAll("connect_error", data); | |
if (fn) { | |
var err = new Error("Connection error"); | |
err.data = data; | |
fn(err) | |
} else { | |
self.maybeReconnectOnOpen() | |
} | |
}); | |
if (false !== this._timeout) { | |
var timeout = this._timeout; | |
debug("connect attempt will timeout after %d", timeout); | |
var timer = setTimeout(function() { | |
debug("connect attempt timed out after %d", timeout); | |
openSub.destroy(); | |
socket.close(); | |
socket.emit("error", "timeout"); | |
self.emitAll("connect_timeout", timeout) | |
}, timeout); | |
this.subs.push({ | |
destroy: function() { | |
clearTimeout(timer) | |
} | |
}) | |
} | |
this.subs.push(openSub); | |
this.subs.push(errorSub); | |
return this | |
} | |
; | |
Manager.prototype.onopen = function() { | |
debug("open"); | |
this.cleanup(); | |
this.readyState = "open"; | |
this.emit("open"); | |
var socket = this.engine; | |
this.subs.push(on(socket, "data", bind(this, "ondata"))); | |
this.subs.push(on(this.decoder, "decoded", bind(this, "ondecoded"))); | |
this.subs.push(on(socket, "error", bind(this, "onerror"))); | |
this.subs.push(on(socket, "close", bind(this, "onclose"))) | |
} | |
; | |
Manager.prototype.ondata = function(data) { | |
this.decoder.add(data) | |
} | |
; | |
Manager.prototype.ondecoded = function(packet) { | |
this.emit("packet", packet) | |
} | |
; | |
Manager.prototype.onerror = function(err) { | |
debug("error", err); | |
this.emitAll("error", err) | |
} | |
; | |
Manager.prototype.socket = function(nsp) { | |
var socket = this.nsps[nsp]; | |
if (!socket) { | |
socket = new Socket(this,nsp); | |
this.nsps[nsp] = socket; | |
var self = this; | |
socket.on("connect", function() { | |
socket.id = self.engine.id; | |
if (!~indexOf(self.connected, socket)) { | |
self.connected.push(socket) | |
} | |
}) | |
} | |
return socket | |
} | |
; | |
Manager.prototype.destroy = function(socket) { | |
var index = indexOf(this.connected, socket); | |
if (~index) | |
this.connected.splice(index, 1); | |
if (this.connected.length) | |
return; | |
this.close() | |
} | |
; | |
Manager.prototype.packet = function(packet) { | |
debug("writing packet %j", packet); | |
var self = this; | |
if (!self.encoding) { | |
self.encoding = true; | |
this.encoder.encode(packet, function(encodedPackets) { | |
for (var i = 0; i < encodedPackets.length; i++) { | |
self.engine.write(encodedPackets[i]) | |
} | |
self.encoding = false; | |
self.processPacketQueue() | |
}) | |
} else { | |
self.packetBuffer.push(packet) | |
} | |
} | |
; | |
Manager.prototype.processPacketQueue = function() { | |
if (this.packetBuffer.length > 0 && !this.encoding) { | |
var pack = this.packetBuffer.shift(); | |
this.packet(pack) | |
} | |
} | |
; | |
Manager.prototype.cleanup = function() { | |
var sub; | |
while (sub = this.subs.shift()) | |
sub.destroy(); | |
this.packetBuffer = []; | |
this.encoding = false; | |
this.decoder.destroy() | |
} | |
; | |
Manager.prototype.close = Manager.prototype.disconnect = function() { | |
this.skipReconnect = true; | |
this.backoff.reset(); | |
this.readyState = "closed"; | |
this.engine && this.engine.close() | |
} | |
; | |
Manager.prototype.onclose = function(reason) { | |
debug("close"); | |
this.cleanup(); | |
this.backoff.reset(); | |
this.readyState = "closed"; | |
this.emit("close", reason); | |
if (this._reconnection && !this.skipReconnect) { | |
this.reconnect() | |
} | |
} | |
; | |
Manager.prototype.reconnect = function() { | |
if (this.reconnecting || this.skipReconnect) | |
return this; | |
var self = this; | |
if (this.backoff.attempts >= this._reconnectionAttempts) { | |
debug("reconnect failed"); | |
this.backoff.reset(); | |
this.emitAll("reconnect_failed"); | |
this.reconnecting = false | |
} else { | |
var delay = this.backoff.duration(); | |
debug("will wait %dms before reconnect attempt", delay); | |
this.reconnecting = true; | |
var timer = setTimeout(function() { | |
if (self.skipReconnect) | |
return; | |
debug("attempting reconnect"); | |
self.emitAll("reconnect_attempt", self.backoff.attempts); | |
self.emitAll("reconnecting", self.backoff.attempts); | |
if (self.skipReconnect) | |
return; | |
self.open(function(err) { | |
if (err) { | |
debug("reconnect attempt error"); | |
self.reconnecting = false; | |
self.reconnect(); | |
self.emitAll("reconnect_error", err.data) | |
} else { | |
debug("reconnect success"); | |
self.onreconnect() | |
} | |
}) | |
}, delay); | |
this.subs.push({ | |
destroy: function() { | |
clearTimeout(timer) | |
} | |
}) | |
} | |
} | |
; | |
Manager.prototype.onreconnect = function() { | |
var attempt = this.backoff.attempts; | |
this.reconnecting = false; | |
this.backoff.reset(); | |
this.updateSocketIds(); | |
this.emitAll("reconnect", attempt) | |
} | |
} | |
, { | |
"./on": 4, | |
"./socket": 5, | |
"./url": 6, | |
backo2: 7, | |
"component-bind": 8, | |
"component-emitter": 9, | |
debug: 10, | |
"engine.io-client": 11, | |
indexof: 42, | |
"object-component": 43, | |
"socket.io-parser": 46 | |
}], | |
4: [function(_dereq_, module, exports) { | |
module.exports = on; | |
function on(obj, ev, fn) { | |
obj.on(ev, fn); | |
return { | |
destroy: function() { | |
obj.removeListener(ev, fn) | |
} | |
} | |
} | |
} | |
, {}], | |
5: [function(_dereq_, module, exports) { | |
var parser = _dereq_("socket.io-parser"); | |
var Emitter = _dereq_("component-emitter"); | |
var toArray = _dereq_("to-array"); | |
var on = _dereq_("./on"); | |
var bind = _dereq_("component-bind"); | |
var debug = _dereq_("debug")("socket.io-client:socket"); | |
var hasBin = _dereq_("has-binary"); | |
module.exports = exports = Socket; | |
var events = { | |
connect: 1, | |
connect_error: 1, | |
connect_timeout: 1, | |
disconnect: 1, | |
error: 1, | |
reconnect: 1, | |
reconnect_attempt: 1, | |
reconnect_failed: 1, | |
reconnect_error: 1, | |
reconnecting: 1 | |
}; | |
var emit = Emitter.prototype.emit; | |
function Socket(io, nsp) { | |
this.io = io; | |
this.nsp = nsp; | |
this.json = this; | |
this.ids = 0; | |
this.acks = {}; | |
if (this.io.autoConnect) | |
this.open(); | |
this.receiveBuffer = []; | |
this.sendBuffer = []; | |
this.connected = false; | |
this.disconnected = true | |
} | |
Emitter(Socket.prototype); | |
Socket.prototype.subEvents = function() { | |
if (this.subs) | |
return; | |
var io = this.io; | |
this.subs = [on(io, "open", bind(this, "onopen")), on(io, "packet", bind(this, "onpacket")), on(io, "close", bind(this, "onclose"))] | |
} | |
; | |
Socket.prototype.open = Socket.prototype.connect = function() { | |
if (this.connected) | |
return this; | |
this.subEvents(); | |
this.io.open(); | |
if ("open" == this.io.readyState) | |
this.onopen(); | |
return this | |
} | |
; | |
Socket.prototype.send = function() { | |
var args = toArray(arguments); | |
args.unshift("message"); | |
this.emit.apply(this, args); | |
return this | |
} | |
; | |
Socket.prototype.emit = function(ev) { | |
if (events.hasOwnProperty(ev)) { | |
emit.apply(this, arguments); | |
return this | |
} | |
var args = toArray(arguments); | |
var parserType = parser.EVENT; | |
if (hasBin(args)) { | |
parserType = parser.BINARY_EVENT | |
} | |
var packet = { | |
type: parserType, | |
data: args | |
}; | |
if ("function" == typeof args[args.length - 1]) { | |
debug("emitting packet with ack id %d", this.ids); | |
this.acks[this.ids] = args.pop(); | |
packet.id = this.ids++ | |
} | |
if (this.connected) { | |
this.packet(packet) | |
} else { | |
this.sendBuffer.push(packet) | |
} | |
return this | |
} | |
; | |
Socket.prototype.packet = function(packet) { | |
packet.nsp = this.nsp; | |
this.io.packet(packet) | |
} | |
; | |
Socket.prototype.onopen = function() { | |
debug("transport is open - connecting"); | |
if ("/" != this.nsp) { | |
this.packet({ | |
type: parser.CONNECT | |
}) | |
} | |
} | |
; | |
Socket.prototype.onclose = function(reason) { | |
debug("close (%s)", reason); | |
this.connected = false; | |
this.disconnected = true; | |
delete this.id; | |
this.emit("disconnect", reason) | |
} | |
; | |
Socket.prototype.onpacket = function(packet) { | |
if (packet.nsp != this.nsp) | |
return; | |
switch (packet.type) { | |
case parser.CONNECT: | |
this.onconnect(); | |
break; | |
case parser.EVENT: | |
this.onevent(packet); | |
break; | |
case parser.BINARY_EVENT: | |
this.onevent(packet); | |
break; | |
case parser.ACK: | |
this.onack(packet); | |
break; | |
case parser.BINARY_ACK: | |
this.onack(packet); | |
break; | |
case parser.DISCONNECT: | |
this.ondisconnect(); | |
break; | |
case parser.ERROR: | |
this.emit("error", packet.data); | |
break | |
} | |
} | |
; | |
Socket.prototype.onevent = function(packet) { | |
var args = packet.data || []; | |
debug("emitting event %j", args); | |
if (null != packet.id) { | |
debug("attaching ack callback to event"); | |
args.push(this.ack(packet.id)) | |
} | |
if (this.connected) { | |
emit.apply(this, args) | |
} else { | |
this.receiveBuffer.push(args) | |
} | |
} | |
; | |
Socket.prototype.ack = function(id) { | |
var self = this; | |
var sent = false; | |
return function() { | |
if (sent) | |
return; | |
sent = true; | |
var args = toArray(arguments); | |
debug("sending ack %j", args); | |
var type = hasBin(args) ? parser.BINARY_ACK : parser.ACK; | |
self.packet({ | |
type: type, | |
id: id, | |
data: args | |
}) | |
} | |
} | |
; | |
Socket.prototype.onack = function(packet) { | |
debug("calling ack %s with %j", packet.id, packet.data); | |
var fn = this.acks[packet.id]; | |
fn.apply(this, packet.data); | |
delete this.acks[packet.id] | |
} | |
; | |
Socket.prototype.onconnect = function() { | |
this.connected = true; | |
this.disconnected = false; | |
this.emit("connect"); | |
this.emitBuffered() | |
} | |
; | |
Socket.prototype.emitBuffered = function() { | |
var i; | |
for (i = 0; i < this.receiveBuffer.length; i++) { | |
emit.apply(this, this.receiveBuffer[i]) | |
} | |
this.receiveBuffer = []; | |
for (i = 0; i < this.sendBuffer.length; i++) { | |
this.packet(this.sendBuffer[i]) | |
} | |
this.sendBuffer = [] | |
} | |
; | |
Socket.prototype.ondisconnect = function() { | |
debug("server disconnect (%s)", this.nsp); | |
this.destroy(); | |
this.onclose("io server disconnect") | |
} | |
; | |
Socket.prototype.destroy = function() { | |
if (this.subs) { | |
for (var i = 0; i < this.subs.length; i++) { | |
this.subs[i].destroy() | |
} | |
this.subs = null | |
} | |
this.io.destroy(this) | |
} | |
; | |
Socket.prototype.close = Socket.prototype.disconnect = function() { | |
if (this.connected) { | |
debug("performing disconnect (%s)", this.nsp); | |
this.packet({ | |
type: parser.DISCONNECT | |
}) | |
} | |
this.destroy(); | |
if (this.connected) { | |
this.onclose("io client disconnect") | |
} | |
return this | |
} | |
} | |
, { | |
"./on": 4, | |
"component-bind": 8, | |
"component-emitter": 9, | |
debug: 10, | |
"has-binary": 38, | |
"socket.io-parser": 46, | |
"to-array": 50 | |
}], | |
6: [function(_dereq_, module, exports) { | |
(function(global) { | |
var parseuri = _dereq_("parseuri"); | |
var debug = _dereq_("debug")("socket.io-client:url"); | |
module.exports = url; | |
function url(uri, loc) { | |
var obj = uri; | |
var loc = loc || global.location; | |
if (null == uri) | |
uri = loc.protocol + "//" + loc.host; | |
if ("string" == typeof uri) { | |
if ("/" == uri.charAt(0)) { | |
if ("/" == uri.charAt(1)) { | |
uri = loc.protocol + uri | |
} else { | |
uri = loc.hostname + uri | |
} | |
} | |
if (!/^(https?|wss?):\/\//.test(uri)) { | |
debug("protocol-less url %s", uri); | |
if ("undefined" != typeof loc) { | |
uri = loc.protocol + "//" + uri | |
} else { | |
uri = "https://" + uri | |
} | |
} | |
debug("parse %s", uri); | |
obj = parseuri(uri) | |
} | |
if (!obj.port) { | |
if (/^(http|ws)$/.test(obj.protocol)) { | |
obj.port = "80" | |
} else if (/^(http|ws)s$/.test(obj.protocol)) { | |
obj.port = "443" | |
} | |
} | |
obj.path = obj.path || "/"; | |
obj.id = obj.protocol + "://" + obj.host + ":" + obj.port; | |
obj.href = obj.protocol + "://" + obj.host + (loc && loc.port == obj.port ? "" : ":" + obj.port); | |
return obj | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
debug: 10, | |
parseuri: 44 | |
}], | |
7: [function(_dereq_, module, exports) { | |
module.exports = Backoff; | |
function Backoff(opts) { | |
opts = opts || {}; | |
this.ms = opts.min || 100; | |
this.max = opts.max || 1e4; | |
this.factor = opts.factor || 2; | |
this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0; | |
this.attempts = 0 | |
} | |
Backoff.prototype.duration = function() { | |
var ms = this.ms * Math.pow(this.factor, this.attempts++); | |
if (this.jitter) { | |
var rand = Math.random(); | |
var deviation = Math.floor(rand * this.jitter * ms); | |
ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation | |
} | |
return Math.min(ms, this.max) | 0 | |
} | |
; | |
Backoff.prototype.reset = function() { | |
this.attempts = 0 | |
} | |
; | |
Backoff.prototype.setMin = function(min) { | |
this.ms = min | |
} | |
; | |
Backoff.prototype.setMax = function(max) { | |
this.max = max | |
} | |
; | |
Backoff.prototype.setJitter = function(jitter) { | |
this.jitter = jitter | |
} | |
} | |
, {}], | |
8: [function(_dereq_, module, exports) { | |
var slice = [].slice; | |
module.exports = function(obj, fn) { | |
if ("string" == typeof fn) | |
fn = obj[fn]; | |
if ("function" != typeof fn) | |
throw new Error("bind() requires a function"); | |
var args = slice.call(arguments, 2); | |
return function() { | |
return fn.apply(obj, args.concat(slice.call(arguments))) | |
} | |
} | |
} | |
, {}], | |
9: [function(_dereq_, module, exports) { | |
module.exports = Emitter; | |
function Emitter(obj) { | |
if (obj) | |
return mixin(obj) | |
} | |
function mixin(obj) { | |
for (var key in Emitter.prototype) { | |
obj[key] = Emitter.prototype[key] | |
} | |
return obj | |
} | |
Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) { | |
this._callbacks = this._callbacks || {}; | |
(this._callbacks[event] = this._callbacks[event] || []).push(fn); | |
return this | |
} | |
; | |
Emitter.prototype.once = function(event, fn) { | |
var self = this; | |
this._callbacks = this._callbacks || {}; | |
function on() { | |
self.off(event, on); | |
fn.apply(this, arguments) | |
} | |
on.fn = fn; | |
this.on(event, on); | |
return this | |
} | |
; | |
Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) { | |
this._callbacks = this._callbacks || {}; | |
if (0 == arguments.length) { | |
this._callbacks = {}; | |
return this | |
} | |
var callbacks = this._callbacks[event]; | |
if (!callbacks) | |
return this; | |
if (1 == arguments.length) { | |
delete this._callbacks[event]; | |
return this | |
} | |
var cb; | |
for (var i = 0; i < callbacks.length; i++) { | |
cb = callbacks[i]; | |
if (cb === fn || cb.fn === fn) { | |
callbacks.splice(i, 1); | |
break | |
} | |
} | |
return this | |
} | |
; | |
Emitter.prototype.emit = function(event) { | |
this._callbacks = this._callbacks || {}; | |
var args = [].slice.call(arguments, 1) | |
, callbacks = this._callbacks[event]; | |
if (callbacks) { | |
callbacks = callbacks.slice(0); | |
for (var i = 0, len = callbacks.length; i < len; ++i) { | |
callbacks[i].apply(this, args) | |
} | |
} | |
return this | |
} | |
; | |
Emitter.prototype.listeners = function(event) { | |
this._callbacks = this._callbacks || {}; | |
return this._callbacks[event] || [] | |
} | |
; | |
Emitter.prototype.hasListeners = function(event) { | |
return !!this.listeners(event).length | |
} | |
} | |
, {}], | |
10: [function(_dereq_, module, exports) { | |
module.exports = debug; | |
function debug(name) { | |
if (!debug.enabled(name)) | |
return function() {} | |
; | |
return function(fmt) { | |
fmt = coerce(fmt); | |
var curr = new Date; | |
var ms = curr - (debug[name] || curr); | |
debug[name] = curr; | |
fmt = name + " " + fmt + " +" + debug.humanize(ms); | |
window.console && console.log && Function.prototype.apply.call(console.log, console, arguments) | |
} | |
} | |
debug.names = []; | |
debug.skips = []; | |
debug.enable = function(name) { | |
try { | |
localStorage.debug = name | |
} catch (e) {} | |
var split = (name || "").split(/[\s,]+/) | |
, len = split.length; | |
for (var i = 0; i < len; i++) { | |
name = split[i].replace("*", ".*?"); | |
if (name[0] === "-") { | |
debug.skips.push(new RegExp("^" + name.substr(1) + "$")) | |
} else { | |
debug.names.push(new RegExp("^" + name + "$")) | |
} | |
} | |
} | |
; | |
debug.disable = function() { | |
debug.enable("") | |
} | |
; | |
debug.humanize = function(ms) { | |
var sec = 1e3 | |
, min = 60 * 1e3 | |
, hour = 60 * min; | |
if (ms >= hour) | |
return (ms / hour).toFixed(1) + "h"; | |
if (ms >= min) | |
return (ms / min).toFixed(1) + "m"; | |
if (ms >= sec) | |
return (ms / sec | 0) + "s"; | |
return ms + "ms" | |
} | |
; | |
debug.enabled = function(name) { | |
for (var i = 0, len = debug.skips.length; i < len; i++) { | |
if (debug.skips[i].test(name)) { | |
return false | |
} | |
} | |
for (var i = 0, len = debug.names.length; i < len; i++) { | |
if (debug.names[i].test(name)) { | |
return true | |
} | |
} | |
return false | |
} | |
; | |
function coerce(val) { | |
if (val instanceof Error) | |
return val.stack || val.message; | |
return val | |
} | |
try { | |
if (window.localStorage) | |
debug.enable(localStorage.debug) | |
} catch (e) {} | |
} | |
, {}], | |
11: [function(_dereq_, module, exports) { | |
module.exports = _dereq_("./lib/") | |
} | |
, { | |
"./lib/": 12 | |
}], | |
12: [function(_dereq_, module, exports) { | |
module.exports = _dereq_("./socket"); | |
module.exports.parser = _dereq_("engine.io-parser") | |
} | |
, { | |
"./socket": 13, | |
"engine.io-parser": 25 | |
}], | |
13: [function(_dereq_, module, exports) { | |
(function(global) { | |
var transports = _dereq_("./transports"); | |
var Emitter = _dereq_("component-emitter"); | |
var debug = _dereq_("debug")("engine.io-client:socket"); | |
var index = _dereq_("indexof"); | |
var parser = _dereq_("engine.io-parser"); | |
var parseuri = _dereq_("parseuri"); | |
var parsejson = _dereq_("parsejson"); | |
var parseqs = _dereq_("parseqs"); | |
module.exports = Socket; | |
function noop() {} | |
function Socket(uri, opts) { | |
if (!(this instanceof Socket)) | |
return new Socket(uri,opts); | |
opts = opts || {}; | |
if (uri && "object" == typeof uri) { | |
opts = uri; | |
uri = null | |
} | |
if (uri) { | |
uri = parseuri(uri); | |
opts.host = uri.host; | |
opts.secure = uri.protocol == "https" || uri.protocol == "wss"; | |
opts.port = uri.port; | |
if (uri.query) | |
opts.query = uri.query | |
} | |
this.secure = null != opts.secure ? opts.secure : global.location && "https:" == location.protocol; | |
if (opts.host) { | |
var pieces = opts.host.split(":"); | |
opts.hostname = pieces.shift(); | |
if (pieces.length) { | |
opts.port = pieces.pop() | |
} else if (!opts.port) { | |
opts.port = this.secure ? "443" : "80" | |
} | |
} | |
this.agent = opts.agent || false; | |
this.hostname = opts.hostname || (global.location ? location.hostname : "localhost"); | |
this.port = opts.port || (global.location && location.port ? location.port : this.secure ? 443 : 80); | |
this.query = opts.query || {}; | |
if ("string" == typeof this.query) | |
this.query = parseqs.decode(this.query); | |
this.upgrade = false !== opts.upgrade; | |
this.path = (opts.path || "/engine.io").replace(/\/$/, "") + "/"; | |
this.forceJSONP = !!opts.forceJSONP; | |
this.jsonp = false !== opts.jsonp; | |
this.forceBase64 = !!opts.forceBase64; | |
this.enablesXDR = !!opts.enablesXDR; | |
this.timestampParam = opts.timestampParam || "t"; | |
this.timestampRequests = opts.timestampRequests; | |
this.transports = opts.transports || ["polling", "websocket"]; | |
this.readyState = ""; | |
this.writeBuffer = []; | |
this.callbackBuffer = []; | |
this.policyPort = opts.policyPort || 843; | |
this.rememberUpgrade = opts.rememberUpgrade || false; | |
this.binaryType = null ; | |
this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades; | |
this.pfx = opts.pfx || null ; | |
this.key = opts.key || null ; | |
this.passphrase = opts.passphrase || null ; | |
this.cert = opts.cert || null ; | |
this.ca = opts.ca || null ; | |
this.ciphers = opts.ciphers || null ; | |
this.rejectUnauthorized = opts.rejectUnauthorized || null ; | |
this.open() | |
} | |
Socket.priorWebsocketSuccess = false; | |
Emitter(Socket.prototype); | |
Socket.protocol = parser.protocol; | |
Socket.Socket = Socket; | |
Socket.Transport = _dereq_("./transport"); | |
Socket.transports = _dereq_("./transports"); | |
Socket.parser = _dereq_("engine.io-parser"); | |
Socket.prototype.createTransport = function(name) { | |
debug('creating transport "%s"', name); | |
var query = clone(this.query); | |
query.EIO = parser.protocol; | |
query.transport = name; | |
if (this.id) | |
query.sid = this.id; | |
var transport = new transports[name]({ | |
agent: this.agent, | |
hostname: this.hostname, | |
port: this.port, | |
secure: this.secure, | |
path: this.path, | |
query: query, | |
forceJSONP: this.forceJSONP, | |
jsonp: this.jsonp, | |
forceBase64: this.forceBase64, | |
enablesXDR: this.enablesXDR, | |
timestampRequests: this.timestampRequests, | |
timestampParam: this.timestampParam, | |
policyPort: this.policyPort, | |
socket: this, | |
pfx: this.pfx, | |
key: this.key, | |
passphrase: this.passphrase, | |
cert: this.cert, | |
ca: this.ca, | |
ciphers: this.ciphers, | |
rejectUnauthorized: this.rejectUnauthorized | |
}); | |
return transport | |
} | |
; | |
function clone(obj) { | |
var o = {}; | |
for (var i in obj) { | |
if (obj.hasOwnProperty(i)) { | |
o[i] = obj[i] | |
} | |
} | |
return o | |
} | |
Socket.prototype.open = function() { | |
var transport; | |
if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") != -1) { | |
transport = "websocket" | |
} else if (0 == this.transports.length) { | |
var self = this; | |
setTimeout(function() { | |
self.emit("error", "No transports available") | |
}, 0); | |
return | |
} else { | |
transport = this.transports[0] | |
} | |
this.readyState = "opening"; | |
var transport; | |
try { | |
transport = this.createTransport(transport) | |
} catch (e) { | |
this.transports.shift(); | |
this.open(); | |
return | |
} | |
transport.open(); | |
this.setTransport(transport) | |
} | |
; | |
Socket.prototype.setTransport = function(transport) { | |
debug("setting transport %s", transport.name); | |
var self = this; | |
if (this.transport) { | |
debug("clearing existing transport %s", this.transport.name); | |
this.transport.removeAllListeners() | |
} | |
this.transport = transport; | |
transport.on("drain", function() { | |
self.onDrain() | |
}).on("packet", function(packet) { | |
self.onPacket(packet) | |
}).on("error", function(e) { | |
self.onError(e) | |
}).on("close", function() { | |
self.onClose("transport close") | |
}) | |
} | |
; | |
Socket.prototype.probe = function(name) { | |
debug('probing transport "%s"', name); | |
var transport = this.createTransport(name, { | |
probe: 1 | |
}) | |
, failed = false | |
, self = this; | |
Socket.priorWebsocketSuccess = false; | |
function onTransportOpen() { | |
if (self.onlyBinaryUpgrades) { | |
var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary; | |
failed = failed || upgradeLosesBinary | |
} | |
if (failed) | |
return; | |
debug('probe transport "%s" opened', name); | |
transport.send([{ | |
type: "ping", | |
data: "probe" | |
}]); | |
transport.once("packet", function(msg) { | |
if (failed) | |
return; | |
if ("pong" == msg.type && "probe" == msg.data) { | |
debug('probe transport "%s" pong', name); | |
self.upgrading = true; | |
self.emit("upgrading", transport); | |
if (!transport) | |
return; | |
Socket.priorWebsocketSuccess = "websocket" == transport.name; | |
debug('pausing current transport "%s"', self.transport.name); | |
self.transport.pause(function() { | |
if (failed) | |
return; | |
if ("closed" == self.readyState) | |
return; | |
debug("changing transport and sending upgrade packet"); | |
cleanup(); | |
self.setTransport(transport); | |
transport.send([{ | |
type: "upgrade" | |
}]); | |
self.emit("upgrade", transport); | |
transport = null ; | |
self.upgrading = false; | |
self.flush() | |
}) | |
} else { | |
debug('probe transport "%s" failed', name); | |
var err = new Error("probe error"); | |
err.transport = transport.name; | |
self.emit("upgradeError", err) | |
} | |
}) | |
} | |
function freezeTransport() { | |
if (failed) | |
return; | |
failed = true; | |
cleanup(); | |
transport.close(); | |
transport = null | |
} | |
function onerror(err) { | |
var error = new Error("probe error: " + err); | |
error.transport = transport.name; | |
freezeTransport(); | |
debug('probe transport "%s" failed because of error: %s', name, err); | |
self.emit("upgradeError", error) | |
} | |
function onTransportClose() { | |
onerror("transport closed") | |
} | |
function onclose() { | |
onerror("socket closed") | |
} | |
function onupgrade(to) { | |
if (transport && to.name != transport.name) { | |
debug('"%s" works - aborting "%s"', to.name, transport.name); | |
freezeTransport() | |
} | |
} | |
function cleanup() { | |
transport.removeListener("open", onTransportOpen); | |
transport.removeListener("error", onerror); | |
transport.removeListener("close", onTransportClose); | |
self.removeListener("close", onclose); | |
self.removeListener("upgrading", onupgrade) | |
} | |
transport.once("open", onTransportOpen); | |
transport.once("error", onerror); | |
transport.once("close", onTransportClose); | |
this.once("close", onclose); | |
this.once("upgrading", onupgrade); | |
transport.open() | |
} | |
; | |
Socket.prototype.onOpen = function() { | |
debug("socket open"); | |
this.readyState = "open"; | |
Socket.priorWebsocketSuccess = "websocket" == this.transport.name; | |
this.emit("open"); | |
this.flush(); | |
if ("open" == this.readyState && this.upgrade && this.transport.pause) { | |
debug("starting upgrade probes"); | |
for (var i = 0, l = this.upgrades.length; i < l; i++) { | |
this.probe(this.upgrades[i]) | |
} | |
} | |
} | |
; | |
Socket.prototype.onPacket = function(packet) { | |
if ("opening" == this.readyState || "open" == this.readyState) { | |
debug('socket receive: type "%s", data "%s"', packet.type, packet.data); | |
this.emit("packet", packet); | |
this.emit("heartbeat"); | |
switch (packet.type) { | |
case "open": | |
this.onHandshake(parsejson(packet.data)); | |
break; | |
case "pong": | |
this.setPing(); | |
break; | |
case "error": | |
var err = new Error("server error"); | |
err.code = packet.data; | |
this.emit("error", err); | |
break; | |
case "message": | |
this.emit("data", packet.data); | |
this.emit("message", packet.data); | |
break | |
} | |
} else { | |
debug('packet received with socket readyState "%s"', this.readyState) | |
} | |
} | |
; | |
Socket.prototype.onHandshake = function(data) { | |
this.emit("handshake", data); | |
this.id = data.sid; | |
this.transport.query.sid = data.sid; | |
this.upgrades = this.filterUpgrades(data.upgrades); | |
this.pingInterval = data.pingInterval; | |
this.pingTimeout = data.pingTimeout; | |
this.onOpen(); | |
if ("closed" == this.readyState) | |
return; | |
this.setPing(); | |
this.removeListener("heartbeat", this.onHeartbeat); | |
this.on("heartbeat", this.onHeartbeat) | |
} | |
; | |
Socket.prototype.onHeartbeat = function(timeout) { | |
clearTimeout(this.pingTimeoutTimer); | |
var self = this; | |
self.pingTimeoutTimer = setTimeout(function() { | |
if ("closed" == self.readyState) | |
return; | |
self.onClose("ping timeout") | |
}, timeout || self.pingInterval + self.pingTimeout) | |
} | |
; | |
Socket.prototype.setPing = function() { | |
var self = this; | |
clearTimeout(self.pingIntervalTimer); | |
self.pingIntervalTimer = setTimeout(function() { | |
debug("writing ping packet - expecting pong within %sms", self.pingTimeout); | |
self.ping(); | |
self.onHeartbeat(self.pingTimeout) | |
}, self.pingInterval) | |
} | |
; | |
Socket.prototype.ping = function() { | |
this.sendPacket("ping") | |
} | |
; | |
Socket.prototype.onDrain = function() { | |
for (var i = 0; i < this.prevBufferLen; i++) { | |
if (this.callbackBuffer[i]) { | |
this.callbackBuffer[i]() | |
} | |
} | |
this.writeBuffer.splice(0, this.prevBufferLen); | |
this.callbackBuffer.splice(0, this.prevBufferLen); | |
this.prevBufferLen = 0; | |
if (this.writeBuffer.length == 0) { | |
this.emit("drain") | |
} else { | |
this.flush() | |
} | |
} | |
; | |
Socket.prototype.flush = function() { | |
if ("closed" != this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) { | |
debug("flushing %d packets in socket", this.writeBuffer.length); | |
this.transport.send(this.writeBuffer); | |
this.prevBufferLen = this.writeBuffer.length; | |
this.emit("flush") | |
} | |
} | |
; | |
Socket.prototype.write = Socket.prototype.send = function(msg, fn) { | |
this.sendPacket("message", msg, fn); | |
return this | |
} | |
; | |
Socket.prototype.sendPacket = function(type, data, fn) { | |
if ("closing" == this.readyState || "closed" == this.readyState) { | |
return | |
} | |
var packet = { | |
type: type, | |
data: data | |
}; | |
this.emit("packetCreate", packet); | |
this.writeBuffer.push(packet); | |
this.callbackBuffer.push(fn); | |
this.flush() | |
} | |
; | |
Socket.prototype.close = function() { | |
if ("opening" == this.readyState || "open" == this.readyState) { | |
this.readyState = "closing"; | |
var self = this; | |
function close() { | |
self.onClose("forced close"); | |
debug("socket closing - telling transport to close"); | |
self.transport.close() | |
} | |
function cleanupAndClose() { | |
self.removeListener("upgrade", cleanupAndClose); | |
self.removeListener("upgradeError", cleanupAndClose); | |
close() | |
} | |
function waitForUpgrade() { | |
self.once("upgrade", cleanupAndClose); | |
self.once("upgradeError", cleanupAndClose) | |
} | |
if (this.writeBuffer.length) { | |
this.once("drain", function() { | |
if (this.upgrading) { | |
waitForUpgrade() | |
} else { | |
close() | |
} | |
}) | |
} else if (this.upgrading) { | |
waitForUpgrade() | |
} else { | |
close() | |
} | |
} | |
return this | |
} | |
; | |
Socket.prototype.onError = function(err) { | |
debug("socket error %j", err); | |
Socket.priorWebsocketSuccess = false; | |
this.emit("error", err); | |
this.onClose("transport error", err) | |
} | |
; | |
Socket.prototype.onClose = function(reason, desc) { | |
if ("opening" == this.readyState || "open" == this.readyState || "closing" == this.readyState) { | |
debug('socket close with reason: "%s"', reason); | |
var self = this; | |
clearTimeout(this.pingIntervalTimer); | |
clearTimeout(this.pingTimeoutTimer); | |
setTimeout(function() { | |
self.writeBuffer = []; | |
self.callbackBuffer = []; | |
self.prevBufferLen = 0 | |
}, 0); | |
this.transport.removeAllListeners("close"); | |
this.transport.close(); | |
this.transport.removeAllListeners(); | |
this.readyState = "closed"; | |
this.id = null ; | |
this.emit("close", reason, desc) | |
} | |
} | |
; | |
Socket.prototype.filterUpgrades = function(upgrades) { | |
var filteredUpgrades = []; | |
for (var i = 0, j = upgrades.length; i < j; i++) { | |
if (~index(this.transports, upgrades[i])) | |
filteredUpgrades.push(upgrades[i]) | |
} | |
return filteredUpgrades | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
"./transport": 14, | |
"./transports": 15, | |
"component-emitter": 9, | |
debug: 22, | |
"engine.io-parser": 25, | |
indexof: 42, | |
parsejson: 34, | |
parseqs: 35, | |
parseuri: 36 | |
}], | |
14: [function(_dereq_, module, exports) { | |
var parser = _dereq_("engine.io-parser"); | |
var Emitter = _dereq_("component-emitter"); | |
module.exports = Transport; | |
function Transport(opts) { | |
this.path = opts.path; | |
this.hostname = opts.hostname; | |
this.port = opts.port; | |
this.secure = opts.secure; | |
this.query = opts.query; | |
this.timestampParam = opts.timestampParam; | |
this.timestampRequests = opts.timestampRequests; | |
this.readyState = ""; | |
this.agent = opts.agent || false; | |
this.socket = opts.socket; | |
this.enablesXDR = opts.enablesXDR; | |
this.pfx = opts.pfx; | |
this.key = opts.key; | |
this.passphrase = opts.passphrase; | |
this.cert = opts.cert; | |
this.ca = opts.ca; | |
this.ciphers = opts.ciphers; | |
this.rejectUnauthorized = opts.rejectUnauthorized | |
} | |
Emitter(Transport.prototype); | |
Transport.timestamps = 0; | |
Transport.prototype.onError = function(msg, desc) { | |
var err = new Error(msg); | |
err.type = "TransportError"; | |
err.description = desc; | |
this.emit("error", err); | |
return this | |
} | |
; | |
Transport.prototype.open = function() { | |
if ("closed" == this.readyState || "" == this.readyState) { | |
this.readyState = "opening"; | |
this.doOpen() | |
} | |
return this | |
} | |
; | |
Transport.prototype.close = function() { | |
if ("opening" == this.readyState || "open" == this.readyState) { | |
this.doClose(); | |
this.onClose() | |
} | |
return this | |
} | |
; | |
Transport.prototype.send = function(packets) { | |
if ("open" == this.readyState) { | |
this.write(packets) | |
} else { | |
throw new Error("Transport not open") | |
} | |
} | |
; | |
Transport.prototype.onOpen = function() { | |
this.readyState = "open"; | |
this.writable = true; | |
this.emit("open") | |
} | |
; | |
Transport.prototype.onData = function(data) { | |
var packet = parser.decodePacket(data, this.socket.binaryType); | |
this.onPacket(packet) | |
} | |
; | |
Transport.prototype.onPacket = function(packet) { | |
this.emit("packet", packet) | |
} | |
; | |
Transport.prototype.onClose = function() { | |
this.readyState = "closed"; | |
this.emit("close") | |
} | |
} | |
, { | |
"component-emitter": 9, | |
"engine.io-parser": 25 | |
}], | |
15: [function(_dereq_, module, exports) { | |
(function(global) { | |
var XMLHttpRequest = _dereq_("xmlhttprequest"); | |
var XHR = _dereq_("./polling-xhr"); | |
var JSONP = _dereq_("./polling-jsonp"); | |
var websocket = _dereq_("./websocket"); | |
exports.polling = polling; | |
exports.websocket = websocket; | |
function polling(opts) { | |
var xhr; | |
var xd = false; | |
var xs = false; | |
var jsonp = false !== opts.jsonp; | |
if (global.location) { | |
var isSSL = "https:" == location.protocol; | |
var port = location.port; | |
if (!port) { | |
port = isSSL ? 443 : 80 | |
} | |
xd = opts.hostname != location.hostname || port != opts.port; | |
xs = opts.secure != isSSL | |
} | |
opts.xdomain = xd; | |
opts.xscheme = xs; | |
xhr = new XMLHttpRequest(opts); | |
if ("open" in xhr && !opts.forceJSONP) { | |
return new XHR(opts) | |
} else { | |
if (!jsonp) | |
throw new Error("JSONP disabled"); | |
return new JSONP(opts) | |
} | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
"./polling-jsonp": 16, | |
"./polling-xhr": 17, | |
"./websocket": 19, | |
xmlhttprequest: 20 | |
}], | |
16: [function(_dereq_, module, exports) { | |
(function(global) { | |
var Polling = _dereq_("./polling"); | |
var inherit = _dereq_("component-inherit"); | |
module.exports = JSONPPolling; | |
var rNewline = /\n/g; | |
var rEscapedNewline = /\\n/g; | |
var callbacks; | |
var index = 0; | |
function empty() {} | |
function JSONPPolling(opts) { | |
Polling.call(this, opts); | |
this.query = this.query || {}; | |
if (!callbacks) { | |
if (!global.___eio) | |
global.___eio = []; | |
callbacks = global.___eio | |
} | |
this.index = callbacks.length; | |
var self = this; | |
callbacks.push(function(msg) { | |
self.onData(msg) | |
}); | |
this.query.j = this.index; | |
if (global.document && global.addEventListener) { | |
global.addEventListener("beforeunload", function() { | |
if (self.script) | |
self.script.onerror = empty | |
}, false) | |
} | |
} | |
inherit(JSONPPolling, Polling); | |
JSONPPolling.prototype.supportsBinary = false; | |
JSONPPolling.prototype.doClose = function() { | |
if (this.script) { | |
this.script.parentNode.removeChild(this.script); | |
this.script = null | |
} | |
if (this.form) { | |
this.form.parentNode.removeChild(this.form); | |
this.form = null ; | |
this.iframe = null | |
} | |
Polling.prototype.doClose.call(this) | |
} | |
; | |
JSONPPolling.prototype.doPoll = function() { | |
var self = this; | |
var script = document.createElement("script"); | |
if (this.script) { | |
this.script.parentNode.removeChild(this.script); | |
this.script = null | |
} | |
script.async = true; | |
script.src = this.uri(); | |
script.onerror = function(e) { | |
self.onError("jsonp poll error", e) | |
} | |
; | |
var insertAt = document.getElementsByTagName("script")[0]; | |
insertAt.parentNode.insertBefore(script, insertAt); | |
this.script = script; | |
var isUAgecko = "undefined" != typeof navigator && /gecko/i.test(navigator.userAgent); | |
if (isUAgecko) { | |
setTimeout(function() { | |
var iframe = document.createElement("iframe"); | |
document.body.appendChild(iframe); | |
document.body.removeChild(iframe) | |
}, 100) | |
} | |
} | |
; | |
JSONPPolling.prototype.doWrite = function(data, fn) { | |
var self = this; | |
if (!this.form) { | |
var form = document.createElement("form"); | |
var area = document.createElement("textarea"); | |
var id = this.iframeId = "eio_iframe_" + this.index; | |
var iframe; | |
form.className = "socketio"; | |
form.style.position = "absolute"; | |
form.style.top = "-1000px"; | |
form.style.left = "-1000px"; | |
form.target = id; | |
form.method = "POST"; | |
form.setAttribute("accept-charset", "utf-8"); | |
area.name = "d"; | |
form.appendChild(area); | |
document.body.appendChild(form); | |
this.form = form; | |
this.area = area | |
} | |
this.form.action = this.uri(); | |
function complete() { | |
initIframe(); | |
fn() | |
} | |
function initIframe() { | |
if (self.iframe) { | |
try { | |
self.form.removeChild(self.iframe) | |
} catch (e) { | |
self.onError("jsonp polling iframe removal error", e) | |
} | |
} | |
try { | |
var html = '<iframe src="javascript:0" name="' + self.iframeId + '">'; | |
iframe = document.createElement(html) | |
} catch (e) { | |
iframe = document.createElement("iframe"); | |
iframe.name = self.iframeId; | |
iframe.src = "javascript:0" | |
} | |
iframe.id = self.iframeId; | |
self.form.appendChild(iframe); | |
self.iframe = iframe | |
} | |
initIframe(); | |
data = data.replace(rEscapedNewline, "\\\n"); | |
this.area.value = data.replace(rNewline, "\\n"); | |
try { | |
this.form.submit() | |
} catch (e) {} | |
if (this.iframe.attachEvent) { | |
this.iframe.onreadystatechange = function() { | |
if (self.iframe.readyState == "complete") { | |
complete() | |
} | |
} | |
} else { | |
this.iframe.onload = complete | |
} | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
"./polling": 18, | |
"component-inherit": 21 | |
}], | |
17: [function(_dereq_, module, exports) { | |
(function(global) { | |
var XMLHttpRequest = _dereq_("xmlhttprequest"); | |
var Polling = _dereq_("./polling"); | |
var Emitter = _dereq_("component-emitter"); | |
var inherit = _dereq_("component-inherit"); | |
var debug = _dereq_("debug")("engine.io-client:polling-xhr"); | |
module.exports = XHR; | |
module.exports.Request = Request; | |
function empty() {} | |
function XHR(opts) { | |
Polling.call(this, opts); | |
if (global.location) { | |
var isSSL = "https:" == location.protocol; | |
var port = location.port; | |
if (!port) { | |
port = isSSL ? 443 : 80 | |
} | |
this.xd = opts.hostname != global.location.hostname || port != opts.port; | |
this.xs = opts.secure != isSSL | |
} | |
} | |
inherit(XHR, Polling); | |
XHR.prototype.supportsBinary = true; | |
XHR.prototype.request = function(opts) { | |
opts = opts || {}; | |
opts.uri = this.uri(); | |
opts.xd = this.xd; | |
opts.xs = this.xs; | |
opts.agent = this.agent || false; | |
opts.supportsBinary = this.supportsBinary; | |
opts.enablesXDR = this.enablesXDR; | |
opts.pfx = this.pfx; | |
opts.key = this.key; | |
opts.passphrase = this.passphrase; | |
opts.cert = this.cert; | |
opts.ca = this.ca; | |
opts.ciphers = this.ciphers; | |
opts.rejectUnauthorized = this.rejectUnauthorized; | |
return new Request(opts) | |
} | |
; | |
XHR.prototype.doWrite = function(data, fn) { | |
var isBinary = typeof data !== "string" && data !== undefined; | |
var req = this.request({ | |
method: "POST", | |
data: data, | |
isBinary: isBinary | |
}); | |
var self = this; | |
req.on("success", fn); | |
req.on("error", function(err) { | |
self.onError("xhr post error", err) | |
}); | |
this.sendXhr = req | |
} | |
; | |
XHR.prototype.doPoll = function() { | |
debug("xhr poll"); | |
var req = this.request(); | |
var self = this; | |
req.on("data", function(data) { | |
self.onData(data) | |
}); | |
req.on("error", function(err) { | |
self.onError("xhr poll error", err) | |
}); | |
this.pollXhr = req | |
} | |
; | |
function Request(opts) { | |
this.method = opts.method || "GET"; | |
this.uri = opts.uri; | |
this.xd = !!opts.xd; | |
this.xs = !!opts.xs; | |
this.async = false !== opts.async; | |
this.data = undefined != opts.data ? opts.data : null ; | |
this.agent = opts.agent; | |
this.isBinary = opts.isBinary; | |
this.supportsBinary = opts.supportsBinary; | |
this.enablesXDR = opts.enablesXDR; | |
this.pfx = opts.pfx; | |
this.key = opts.key; | |
this.passphrase = opts.passphrase; | |
this.cert = opts.cert; | |
this.ca = opts.ca; | |
this.ciphers = opts.ciphers; | |
this.rejectUnauthorized = opts.rejectUnauthorized; | |
this.create() | |
} | |
Emitter(Request.prototype); | |
Request.prototype.create = function() { | |
var opts = { | |
agent: this.agent, | |
xdomain: this.xd, | |
xscheme: this.xs, | |
enablesXDR: this.enablesXDR | |
}; | |
opts.pfx = this.pfx; | |
opts.key = this.key; | |
opts.passphrase = this.passphrase; | |
opts.cert = this.cert; | |
opts.ca = this.ca; | |
opts.ciphers = this.ciphers; | |
opts.rejectUnauthorized = this.rejectUnauthorized; | |
var xhr = this.xhr = new XMLHttpRequest(opts); | |
var self = this; | |
try { | |
debug("xhr open %s: %s", this.method, this.uri); | |
xhr.open(this.method, this.uri, this.async); | |
if (this.supportsBinary) { | |
xhr.responseType = "arraybuffer" | |
} | |
if ("POST" == this.method) { | |
try { | |
if (this.isBinary) { | |
xhr.setRequestHeader("Content-type", "application/octet-stream") | |
} else { | |
xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8") | |
} | |
} catch (e) {} | |
} | |
if ("withCredentials" in xhr) { | |
xhr.withCredentials = true | |
} | |
if (this.hasXDR()) { | |
xhr.onload = function() { | |
self.onLoad() | |
} | |
; | |
xhr.onerror = function() { | |
self.onError(xhr.responseText) | |
} | |
} else { | |
xhr.onreadystatechange = function() { | |
if (4 != xhr.readyState) | |
return; | |
if (200 == xhr.status || 1223 == xhr.status) { | |
self.onLoad() | |
} else { | |
setTimeout(function() { | |
self.onError(xhr.status) | |
}, 0) | |
} | |
} | |
} | |
debug("xhr data %s", this.data); | |
xhr.send(this.data) | |
} catch (e) { | |
setTimeout(function() { | |
self.onError(e) | |
}, 0); | |
return | |
} | |
if (global.document) { | |
this.index = Request.requestsCount++; | |
Request.requests[this.index] = this | |
} | |
} | |
; | |
Request.prototype.onSuccess = function() { | |
this.emit("success"); | |
this.cleanup() | |
} | |
; | |
Request.prototype.onData = function(data) { | |
this.emit("data", data); | |
this.onSuccess() | |
} | |
; | |
Request.prototype.onError = function(err) { | |
this.emit("error", err); | |
this.cleanup(true) | |
} | |
; | |
Request.prototype.cleanup = function(fromError) { | |
if ("undefined" == typeof this.xhr || null === this.xhr) { | |
return | |
} | |
if (this.hasXDR()) { | |
this.xhr.onload = this.xhr.onerror = empty | |
} else { | |
this.xhr.onreadystatechange = empty | |
} | |
if (fromError) { | |
try { | |
this.xhr.abort() | |
} catch (e) {} | |
} | |
if (global.document) { | |
delete Request.requests[this.index] | |
} | |
this.xhr = null | |
} | |
; | |
Request.prototype.onLoad = function() { | |
var data; | |
try { | |
var contentType; | |
try { | |
contentType = this.xhr.getResponseHeader("Content-Type").split(";")[0] | |
} catch (e) {} | |
if (contentType === "application/octet-stream") { | |
data = this.xhr.response | |
} else { | |
if (!this.supportsBinary) { | |
data = this.xhr.responseText | |
} else { | |
data = "ok" | |
} | |
} | |
} catch (e) { | |
this.onError(e) | |
} | |
if (null != data) { | |
this.onData(data) | |
} | |
} | |
; | |
Request.prototype.hasXDR = function() { | |
return "undefined" !== typeof global.XDomainRequest && !this.xs && this.enablesXDR | |
} | |
; | |
Request.prototype.abort = function() { | |
this.cleanup() | |
} | |
; | |
if (global.document) { | |
Request.requestsCount = 0; | |
Request.requests = {}; | |
if (global.attachEvent) { | |
global.attachEvent("onunload", unloadHandler) | |
} else if (global.addEventListener) { | |
global.addEventListener("beforeunload", unloadHandler, false) | |
} | |
} | |
function unloadHandler() { | |
for (var i in Request.requests) { | |
if (Request.requests.hasOwnProperty(i)) { | |
Request.requests[i].abort() | |
} | |
} | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
"./polling": 18, | |
"component-emitter": 9, | |
"component-inherit": 21, | |
debug: 22, | |
xmlhttprequest: 20 | |
}], | |
18: [function(_dereq_, module, exports) { | |
var Transport = _dereq_("../transport"); | |
var parseqs = _dereq_("parseqs"); | |
var parser = _dereq_("engine.io-parser"); | |
var inherit = _dereq_("component-inherit"); | |
var debug = _dereq_("debug")("engine.io-client:polling"); | |
module.exports = Polling; | |
var hasXHR2 = function() { | |
var XMLHttpRequest = _dereq_("xmlhttprequest"); | |
var xhr = new XMLHttpRequest({ | |
xdomain: false | |
}); | |
return null != xhr.responseType | |
}(); | |
function Polling(opts) { | |
var forceBase64 = opts && opts.forceBase64; | |
if (!hasXHR2 || forceBase64) { | |
this.supportsBinary = false | |
} | |
Transport.call(this, opts) | |
} | |
inherit(Polling, Transport); | |
Polling.prototype.name = "polling"; | |
Polling.prototype.doOpen = function() { | |
this.poll() | |
} | |
; | |
Polling.prototype.pause = function(onPause) { | |
var pending = 0; | |
var self = this; | |
this.readyState = "pausing"; | |
function pause() { | |
debug("paused"); | |
self.readyState = "paused"; | |
onPause() | |
} | |
if (this.polling || !this.writable) { | |
var total = 0; | |
if (this.polling) { | |
debug("we are currently polling - waiting to pause"); | |
total++; | |
this.once("pollComplete", function() { | |
debug("pre-pause polling complete"); | |
--total || pause() | |
}) | |
} | |
if (!this.writable) { | |
debug("we are currently writing - waiting to pause"); | |
total++; | |
this.once("drain", function() { | |
debug("pre-pause writing complete"); | |
--total || pause() | |
}) | |
} | |
} else { | |
pause() | |
} | |
} | |
; | |
Polling.prototype.poll = function() { | |
debug("polling"); | |
this.polling = true; | |
this.doPoll(); | |
this.emit("poll") | |
} | |
; | |
Polling.prototype.onData = function(data) { | |
var self = this; | |
debug("polling got data %s", data); | |
var callback = function(packet, index, total) { | |
if ("opening" == self.readyState) { | |
self.onOpen() | |
} | |
if ("close" == packet.type) { | |
self.onClose(); | |
return false | |
} | |
self.onPacket(packet) | |
} | |
; | |
parser.decodePayload(data, this.socket.binaryType, callback); | |
if ("closed" != this.readyState) { | |
this.polling = false; | |
this.emit("pollComplete"); | |
if ("open" == this.readyState) { | |
this.poll() | |
} else { | |
debug('ignoring poll - transport state "%s"', this.readyState) | |
} | |
} | |
} | |
; | |
Polling.prototype.doClose = function() { | |
var self = this; | |
function close() { | |
debug("writing close packet"); | |
self.write([{ | |
type: "close" | |
}]) | |
} | |
if ("open" == this.readyState) { | |
debug("transport open - closing"); | |
close() | |
} else { | |
debug("transport not open - deferring close"); | |
this.once("open", close) | |
} | |
} | |
; | |
Polling.prototype.write = function(packets) { | |
var self = this; | |
this.writable = false; | |
var callbackfn = function() { | |
self.writable = true; | |
self.emit("drain") | |
} | |
; | |
var self = this; | |
parser.encodePayload(packets, this.supportsBinary, function(data) { | |
self.doWrite(data, callbackfn) | |
}) | |
} | |
; | |
Polling.prototype.uri = function() { | |
var query = this.query || {}; | |
var schema = this.secure ? "https" : "http"; | |
var port = ""; | |
if (false !== this.timestampRequests) { | |
query[this.timestampParam] = +new Date + "-" + Transport.timestamps++ | |
} | |
if (!this.supportsBinary && !query.sid) { | |
query.b64 = 1 | |
} | |
query = parseqs.encode(query); | |
if (this.port && ("https" == schema && this.port != 443 || "http" == schema && this.port != 80)) { | |
port = ":" + this.port | |
} | |
if (query.length) { | |
query = "?" + query | |
} | |
return schema + "://" + this.hostname + port + this.path + query | |
} | |
} | |
, { | |
"../transport": 14, | |
"component-inherit": 21, | |
debug: 22, | |
"engine.io-parser": 25, | |
parseqs: 35, | |
xmlhttprequest: 20 | |
}], | |
19: [function(_dereq_, module, exports) { | |
var Transport = _dereq_("../transport"); | |
var parser = _dereq_("engine.io-parser"); | |
var parseqs = _dereq_("parseqs"); | |
var inherit = _dereq_("component-inherit"); | |
var debug = _dereq_("debug")("engine.io-client:websocket"); | |
var WebSocket = _dereq_("ws"); | |
module.exports = WS; | |
function WS(opts) { | |
var forceBase64 = opts && opts.forceBase64; | |
if (forceBase64) { | |
this.supportsBinary = false | |
} | |
Transport.call(this, opts) | |
} | |
inherit(WS, Transport); | |
WS.prototype.name = "websocket"; | |
WS.prototype.supportsBinary = true; | |
WS.prototype.doOpen = function() { | |
if (!this.check()) { | |
return | |
} | |
var self = this; | |
var uri = this.uri(); | |
var protocols = void 0; | |
var opts = { | |
agent: this.agent | |
}; | |
opts.pfx = this.pfx; | |
opts.key = this.key; | |
opts.passphrase = this.passphrase; | |
opts.cert = this.cert; | |
opts.ca = this.ca; | |
opts.ciphers = this.ciphers; | |
opts.rejectUnauthorized = this.rejectUnauthorized; | |
this.ws = new WebSocket(uri,protocols,opts); | |
if (this.ws.binaryType === undefined) { | |
this.supportsBinary = false | |
} | |
this.ws.binaryType = "arraybuffer"; | |
this.addEventListeners() | |
} | |
; | |
WS.prototype.addEventListeners = function() { | |
var self = this; | |
this.ws.onopen = function() { | |
self.onOpen() | |
} | |
; | |
this.ws.onclose = function() { | |
self.onClose() | |
} | |
; | |
this.ws.onmessage = function(ev) { | |
self.onData(ev.data) | |
} | |
; | |
this.ws.onerror = function(e) { | |
self.onError("websocket error", e) | |
} | |
} | |
; | |
if ("undefined" != typeof navigator && /iPad|iPhone|iPod/i.test(navigator.userAgent)) { | |
WS.prototype.onData = function(data) { | |
var self = this; | |
setTimeout(function() { | |
Transport.prototype.onData.call(self, data) | |
}, 0) | |
} | |
} | |
WS.prototype.write = function(packets) { | |
var self = this; | |
this.writable = false; | |
for (var i = 0, l = packets.length; i < l; i++) { | |
parser.encodePacket(packets[i], this.supportsBinary, function(data) { | |
try { | |
self.ws.send(data) | |
} catch (e) { | |
debug("websocket closed before onclose event") | |
} | |
}) | |
} | |
function ondrain() { | |
self.writable = true; | |
self.emit("drain") | |
} | |
setTimeout(ondrain, 0) | |
} | |
; | |
WS.prototype.onClose = function() { | |
Transport.prototype.onClose.call(this) | |
} | |
; | |
WS.prototype.doClose = function() { | |
if (typeof this.ws !== "undefined") { | |
this.ws.close() | |
} | |
} | |
; | |
WS.prototype.uri = function() { | |
var query = this.query || {}; | |
var schema = this.secure ? "wss" : "ws"; | |
var port = ""; | |
if (this.port && ("wss" == schema && this.port != 443 || "ws" == schema && this.port != 80)) { | |
port = ":" + this.port | |
} | |
if (this.timestampRequests) { | |
query[this.timestampParam] = +new Date | |
} | |
if (!this.supportsBinary) { | |
query.b64 = 1 | |
} | |
query = parseqs.encode(query); | |
if (query.length) { | |
query = "?" + query | |
} | |
return schema + "://" + this.hostname + port + this.path + query | |
} | |
; | |
WS.prototype.check = function() { | |
return !!WebSocket && !("__initialize" in WebSocket && this.name === WS.prototype.name) | |
} | |
} | |
, { | |
"../transport": 14, | |
"component-inherit": 21, | |
debug: 22, | |
"engine.io-parser": 25, | |
parseqs: 35, | |
ws: 37 | |
}], | |
20: [function(_dereq_, module, exports) { | |
var hasCORS = _dereq_("has-cors"); | |
module.exports = function(opts) { | |
var xdomain = opts.xdomain; | |
var xscheme = opts.xscheme; | |
var enablesXDR = opts.enablesXDR; | |
try { | |
if ("undefined" != typeof XMLHttpRequest && (!xdomain || hasCORS)) { | |
return new XMLHttpRequest | |
} | |
} catch (e) {} | |
try { | |
if ("undefined" != typeof XDomainRequest && !xscheme && enablesXDR) { | |
return new XDomainRequest | |
} | |
} catch (e) {} | |
if (!xdomain) { | |
try { | |
return new ActiveXObject("Microsoft.XMLHTTP") | |
} catch (e) {} | |
} | |
} | |
} | |
, { | |
"has-cors": 40 | |
}], | |
21: [function(_dereq_, module, exports) { | |
module.exports = function(a, b) { | |
var fn = function() {} | |
; | |
fn.prototype = b.prototype; | |
a.prototype = new fn; | |
a.prototype.constructor = a | |
} | |
} | |
, {}], | |
22: [function(_dereq_, module, exports) { | |
exports = module.exports = _dereq_("./debug"); | |
exports.log = log; | |
exports.formatArgs = formatArgs; | |
exports.save = save; | |
exports.load = load; | |
exports.useColors = useColors; | |
exports.colors = ["lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson"]; | |
function useColors() { | |
return "WebkitAppearance" in document.documentElement.style || window.console && (console.firebug || console.exception && console.table) || navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 | |
} | |
exports.formatters.j = function(v) { | |
return JSON.stringify(v) | |
} | |
; | |
function formatArgs() { | |
var args = arguments; | |
var useColors = this.useColors; | |
args[0] = (useColors ? "%c" : "") + this.namespace + (useColors ? " %c" : " ") + args[0] + (useColors ? "%c " : " ") + "+" + exports.humanize(this.diff); | |
if (!useColors) | |
return args; | |
var c = "color: " + this.color; | |
args = [args[0], c, "color: inherit"].concat(Array.prototype.slice.call(args, 1)); | |
var index = 0; | |
var lastC = 0; | |
args[0].replace(/%[a-z%]/g, function(match) { | |
if ("%" === match) | |
return; | |
index++; | |
if ("%c" === match) { | |
lastC = index | |
} | |
}); | |
args.splice(lastC, 0, c); | |
return args | |
} | |
function log() { | |
return "object" == typeof console && "function" == typeof console.log && Function.prototype.apply.call(console.log, console, arguments) | |
} | |
function save(namespaces) { | |
try { | |
if (null == namespaces) { | |
localStorage.removeItem("debug") | |
} else { | |
localStorage.debug = namespaces | |
} | |
} catch (e) {} | |
} | |
function load() { | |
var r; | |
try { | |
r = localStorage.debug | |
} catch (e) {} | |
return r | |
} | |
exports.enable(load()) | |
} | |
, { | |
"./debug": 23 | |
}], | |
23: [function(_dereq_, module, exports) { | |
exports = module.exports = debug; | |
exports.coerce = coerce; | |
exports.disable = disable; | |
exports.enable = enable; | |
exports.enabled = enabled; | |
exports.humanize = _dereq_("ms"); | |
exports.names = []; | |
exports.skips = []; | |
exports.formatters = {}; | |
var prevColor = 0; | |
var prevTime; | |
function selectColor() { | |
return exports.colors[prevColor++ % exports.colors.length] | |
} | |
function debug(namespace) { | |
function disabled() {} | |
disabled.enabled = false; | |
function enabled() { | |
var self = enabled; | |
var curr = +new Date; | |
var ms = curr - (prevTime || curr); | |
self.diff = ms; | |
self.prev = prevTime; | |
self.curr = curr; | |
prevTime = curr; | |
if (null == self.useColors) | |
self.useColors = exports.useColors(); | |
if (null == self.color && self.useColors) | |
self.color = selectColor(); | |
var args = Array.prototype.slice.call(arguments); | |
args[0] = exports.coerce(args[0]); | |
if ("string" !== typeof args[0]) { | |
args = ["%o"].concat(args) | |
} | |
var index = 0; | |
args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { | |
if (match === "%") | |
return match; | |
index++; | |
var formatter = exports.formatters[format]; | |
if ("function" === typeof formatter) { | |
var val = args[index]; | |
match = formatter.call(self, val); | |
args.splice(index, 1); | |
index-- | |
} | |
return match | |
}); | |
if ("function" === typeof exports.formatArgs) { | |
args = exports.formatArgs.apply(self, args) | |
} | |
var logFn = enabled.log || exports.log || console.log.bind(console); | |
logFn.apply(self, args) | |
} | |
enabled.enabled = true; | |
var fn = exports.enabled(namespace) ? enabled : disabled; | |
fn.namespace = namespace; | |
return fn | |
} | |
function enable(namespaces) { | |
exports.save(namespaces); | |
var split = (namespaces || "").split(/[\s,]+/); | |
var len = split.length; | |
for (var i = 0; i < len; i++) { | |
if (!split[i]) | |
continue;namespaces = split[i].replace(/\*/g, ".*?"); | |
if (namespaces[0] === "-") { | |
exports.skips.push(new RegExp("^" + namespaces.substr(1) + "$")) | |
} else { | |
exports.names.push(new RegExp("^" + namespaces + "$")) | |
} | |
} | |
} | |
function disable() { | |
exports.enable("") | |
} | |
function enabled(name) { | |
var i, len; | |
for (i = 0, | |
len = exports.skips.length; i < len; i++) { | |
if (exports.skips[i].test(name)) { | |
return false | |
} | |
} | |
for (i = 0, | |
len = exports.names.length; i < len; i++) { | |
if (exports.names[i].test(name)) { | |
return true | |
} | |
} | |
return false | |
} | |
function coerce(val) { | |
if (val instanceof Error) | |
return val.stack || val.message; | |
return val | |
} | |
} | |
, { | |
ms: 24 | |
}], | |
24: [function(_dereq_, module, exports) { | |
var s = 1e3; | |
var m = s * 60; | |
var h = m * 60; | |
var d = h * 24; | |
var y = d * 365.25; | |
module.exports = function(val, options) { | |
options = options || {}; | |
if ("string" == typeof val) | |
return parse(val); | |
return options.long ? long(val) : short(val) | |
} | |
; | |
function parse(str) { | |
var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec(str); | |
if (!match) | |
return; | |
var n = parseFloat(match[1]); | |
var type = (match[2] || "ms").toLowerCase(); | |
switch (type) { | |
case "years": | |
case "year": | |
case "y": | |
return n * y; | |
case "days": | |
case "day": | |
case "d": | |
return n * d; | |
case "hours": | |
case "hour": | |
case "h": | |
return n * h; | |
case "minutes": | |
case "minute": | |
case "m": | |
return n * m; | |
case "seconds": | |
case "second": | |
case "s": | |
return n * s; | |
case "ms": | |
return n | |
} | |
} | |
function short(ms) { | |
if (ms >= d) | |
return Math.round(ms / d) + "d"; | |
if (ms >= h) | |
return Math.round(ms / h) + "h"; | |
if (ms >= m) | |
return Math.round(ms / m) + "m"; | |
if (ms >= s) | |
return Math.round(ms / s) + "s"; | |
return ms + "ms" | |
} | |
function long(ms) { | |
return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms" | |
} | |
function plural(ms, n, name) { | |
if (ms < n) | |
return; | |
if (ms < n * 1.5) | |
return Math.floor(ms / n) + " " + name; | |
return Math.ceil(ms / n) + " " + name + "s" | |
} | |
} | |
, {}], | |
25: [function(_dereq_, module, exports) { | |
(function(global) { | |
var keys = _dereq_("./keys"); | |
var hasBinary = _dereq_("has-binary"); | |
var sliceBuffer = _dereq_("arraybuffer.slice"); | |
var base64encoder = _dereq_("base64-arraybuffer"); | |
var after = _dereq_("after"); | |
var utf8 = _dereq_("utf8"); | |
var isAndroid = navigator.userAgent.match(/Android/i); | |
var isPhantomJS = /PhantomJS/i.test(navigator.userAgent); | |
var dontSendBlobs = isAndroid || isPhantomJS; | |
exports.protocol = 3; | |
var packets = exports.packets = { | |
open: 0, | |
close: 1, | |
ping: 2, | |
pong: 3, | |
message: 4, | |
upgrade: 5, | |
noop: 6 | |
}; | |
var packetslist = keys(packets); | |
var err = { | |
type: "error", | |
data: "parser error" | |
}; | |
var Blob = _dereq_("blob"); | |
exports.encodePacket = function(packet, supportsBinary, utf8encode, callback) { | |
if ("function" == typeof supportsBinary) { | |
callback = supportsBinary; | |
supportsBinary = false | |
} | |
if ("function" == typeof utf8encode) { | |
callback = utf8encode; | |
utf8encode = null | |
} | |
var data = packet.data === undefined ? undefined : packet.data.buffer || packet.data; | |
if (global.ArrayBuffer && data instanceof ArrayBuffer) { | |
return encodeArrayBuffer(packet, supportsBinary, callback) | |
} else if (Blob && data instanceof global.Blob) { | |
return encodeBlob(packet, supportsBinary, callback) | |
} | |
if (data && data.base64) { | |
return encodeBase64Object(packet, callback) | |
} | |
var encoded = packets[packet.type]; | |
if (undefined !== packet.data) { | |
encoded += utf8encode ? utf8.encode(String(packet.data)) : String(packet.data) | |
} | |
return callback("" + encoded) | |
} | |
; | |
function encodeBase64Object(packet, callback) { | |
var message = "b" + exports.packets[packet.type] + packet.data.data; | |
return callback(message) | |
} | |
function encodeArrayBuffer(packet, supportsBinary, callback) { | |
if (!supportsBinary) { | |
return exports.encodeBase64Packet(packet, callback) | |
} | |
var data = packet.data; | |
var contentArray = new Uint8Array(data); | |
var resultBuffer = new Uint8Array(1 + data.byteLength); | |
resultBuffer[0] = packets[packet.type]; | |
for (var i = 0; i < contentArray.length; i++) { | |
resultBuffer[i + 1] = contentArray[i] | |
} | |
return callback(resultBuffer.buffer) | |
} | |
function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) { | |
if (!supportsBinary) { | |
return exports.encodeBase64Packet(packet, callback) | |
} | |
var fr = new FileReader; | |
fr.onload = function() { | |
packet.data = fr.result; | |
exports.encodePacket(packet, supportsBinary, true, callback) | |
} | |
; | |
return fr.readAsArrayBuffer(packet.data) | |
} | |
function encodeBlob(packet, supportsBinary, callback) { | |
if (!supportsBinary) { | |
return exports.encodeBase64Packet(packet, callback) | |
} | |
if (dontSendBlobs) { | |
return encodeBlobAsArrayBuffer(packet, supportsBinary, callback) | |
} | |
var length = new Uint8Array(1); | |
length[0] = packets[packet.type]; | |
var blob = new Blob([length.buffer, packet.data]); | |
return callback(blob) | |
} | |
exports.encodeBase64Packet = function(packet, callback) { | |
var message = "b" + exports.packets[packet.type]; | |
if (Blob && packet.data instanceof Blob) { | |
var fr = new FileReader; | |
fr.onload = function() { | |
var b64 = fr.result.split(",")[1]; | |
callback(message + b64) | |
} | |
; | |
return fr.readAsDataURL(packet.data) | |
} | |
var b64data; | |
try { | |
b64data = String.fromCharCode.apply(null , new Uint8Array(packet.data)) | |
} catch (e) { | |
var typed = new Uint8Array(packet.data); | |
var basic = new Array(typed.length); | |
for (var i = 0; i < typed.length; i++) { | |
basic[i] = typed[i] | |
} | |
b64data = String.fromCharCode.apply(null , basic) | |
} | |
message += global.btoa(b64data); | |
return callback(message) | |
} | |
; | |
exports.decodePacket = function(data, binaryType, utf8decode) { | |
if (typeof data == "string" || data === undefined) { | |
if (data.charAt(0) == "b") { | |
return exports.decodeBase64Packet(data.substr(1), binaryType) | |
} | |
if (utf8decode) { | |
try { | |
data = utf8.decode(data) | |
} catch (e) { | |
return err | |
} | |
} | |
var type = data.charAt(0); | |
if (Number(type) != type || !packetslist[type]) { | |
return err | |
} | |
if (data.length > 1) { | |
return { | |
type: packetslist[type], | |
data: data.substring(1) | |
} | |
} else { | |
return { | |
type: packetslist[type] | |
} | |
} | |
} | |
var asArray = new Uint8Array(data); | |
var type = asArray[0]; | |
var rest = sliceBuffer(data, 1); | |
if (Blob && binaryType === "blob") { | |
rest = new Blob([rest]) | |
} | |
return { | |
type: packetslist[type], | |
data: rest | |
} | |
} | |
; | |
exports.decodeBase64Packet = function(msg, binaryType) { | |
var type = packetslist[msg.charAt(0)]; | |
if (!global.ArrayBuffer) { | |
return { | |
type: type, | |
data: { | |
base64: true, | |
data: msg.substr(1) | |
} | |
} | |
} | |
var data = base64encoder.decode(msg.substr(1)); | |
if (binaryType === "blob" && Blob) { | |
data = new Blob([data]) | |
} | |
return { | |
type: type, | |
data: data | |
} | |
} | |
; | |
exports.encodePayload = function(packets, supportsBinary, callback) { | |
if (typeof supportsBinary == "function") { | |
callback = supportsBinary; | |
supportsBinary = null | |
} | |
var isBinary = hasBinary(packets); | |
if (supportsBinary && isBinary) { | |
if (Blob && !dontSendBlobs) { | |
return exports.encodePayloadAsBlob(packets, callback) | |
} | |
return exports.encodePayloadAsArrayBuffer(packets, callback) | |
} | |
if (!packets.length) { | |
return callback("0:") | |
} | |
function setLengthHeader(message) { | |
return message.length + ":" + message | |
} | |
function encodeOne(packet, doneCallback) { | |
exports.encodePacket(packet, !isBinary ? false : supportsBinary, true, function(message) { | |
doneCallback(null , setLengthHeader(message)) | |
}) | |
} | |
map(packets, encodeOne, function(err, results) { | |
return callback(results.join("")) | |
}) | |
} | |
; | |
function map(ary, each, done) { | |
var result = new Array(ary.length); | |
var next = after(ary.length, done); | |
var eachWithIndex = function(i, el, cb) { | |
each(el, function(error, msg) { | |
result[i] = msg; | |
cb(error, result) | |
}) | |
} | |
; | |
for (var i = 0; i < ary.length; i++) { | |
eachWithIndex(i, ary[i], next) | |
} | |
} | |
exports.decodePayload = function(data, binaryType, callback) { | |
if (typeof data != "string") { | |
return exports.decodePayloadAsBinary(data, binaryType, callback) | |
} | |
if (typeof binaryType === "function") { | |
callback = binaryType; | |
binaryType = null | |
} | |
var packet; | |
if (data == "") { | |
return callback(err, 0, 1) | |
} | |
var length = "", n, msg; | |
for (var i = 0, l = data.length; i < l; i++) { | |
var chr = data.charAt(i); | |
if (":" != chr) { | |
length += chr | |
} else { | |
if ("" == length || length != (n = Number(length))) { | |
return callback(err, 0, 1) | |
} | |
msg = data.substr(i + 1, n); | |
if (length != msg.length) { | |
return callback(err, 0, 1) | |
} | |
if (msg.length) { | |
packet = exports.decodePacket(msg, binaryType, true); | |
if (err.type == packet.type && err.data == packet.data) { | |
return callback(err, 0, 1) | |
} | |
var ret = callback(packet, i + n, l); | |
if (false === ret) | |
return | |
} | |
i += n; | |
length = "" | |
} | |
} | |
if (length != "") { | |
return callback(err, 0, 1) | |
} | |
} | |
; | |
exports.encodePayloadAsArrayBuffer = function(packets, callback) { | |
if (!packets.length) { | |
return callback(new ArrayBuffer(0)) | |
} | |
function encodeOne(packet, doneCallback) { | |
exports.encodePacket(packet, true, true, function(data) { | |
return doneCallback(null , data) | |
}) | |
} | |
map(packets, encodeOne, function(err, encodedPackets) { | |
var totalLength = encodedPackets.reduce(function(acc, p) { | |
var len; | |
if (typeof p === "string") { | |
len = p.length | |
} else { | |
len = p.byteLength | |
} | |
return acc + len.toString().length + len + 2 | |
}, 0); | |
var resultArray = new Uint8Array(totalLength); | |
var bufferIndex = 0; | |
encodedPackets.forEach(function(p) { | |
var isString = typeof p === "string"; | |
var ab = p; | |
if (isString) { | |
var view = new Uint8Array(p.length); | |
for (var i = 0; i < p.length; i++) { | |
view[i] = p.charCodeAt(i) | |
} | |
ab = view.buffer | |
} | |
if (isString) { | |
resultArray[bufferIndex++] = 0 | |
} else { | |
resultArray[bufferIndex++] = 1 | |
} | |
var lenStr = ab.byteLength.toString(); | |
for (var i = 0; i < lenStr.length; i++) { | |
resultArray[bufferIndex++] = parseInt(lenStr[i]) | |
} | |
resultArray[bufferIndex++] = 255; | |
var view = new Uint8Array(ab); | |
for (var i = 0; i < view.length; i++) { | |
resultArray[bufferIndex++] = view[i] | |
} | |
}); | |
return callback(resultArray.buffer) | |
}) | |
} | |
; | |
exports.encodePayloadAsBlob = function(packets, callback) { | |
function encodeOne(packet, doneCallback) { | |
exports.encodePacket(packet, true, true, function(encoded) { | |
var binaryIdentifier = new Uint8Array(1); | |
binaryIdentifier[0] = 1; | |
if (typeof encoded === "string") { | |
var view = new Uint8Array(encoded.length); | |
for (var i = 0; i < encoded.length; i++) { | |
view[i] = encoded.charCodeAt(i) | |
} | |
encoded = view.buffer; | |
binaryIdentifier[0] = 0 | |
} | |
var len = encoded instanceof ArrayBuffer ? encoded.byteLength : encoded.size; | |
var lenStr = len.toString(); | |
var lengthAry = new Uint8Array(lenStr.length + 1); | |
for (var i = 0; i < lenStr.length; i++) { | |
lengthAry[i] = parseInt(lenStr[i]) | |
} | |
lengthAry[lenStr.length] = 255; | |
if (Blob) { | |
var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]); | |
doneCallback(null , blob) | |
} | |
}) | |
} | |
map(packets, encodeOne, function(err, results) { | |
return callback(new Blob(results)) | |
}) | |
} | |
; | |
exports.decodePayloadAsBinary = function(data, binaryType, callback) { | |
if (typeof binaryType === "function") { | |
callback = binaryType; | |
binaryType = null | |
} | |
var bufferTail = data; | |
var buffers = []; | |
var numberTooLong = false; | |
while (bufferTail.byteLength > 0) { | |
var tailArray = new Uint8Array(bufferTail); | |
var isString = tailArray[0] === 0; | |
var msgLength = ""; | |
for (var i = 1; ; i++) { | |
if (tailArray[i] == 255) | |
break; | |
if (msgLength.length > 310) { | |
numberTooLong = true; | |
break | |
} | |
msgLength += tailArray[i] | |
} | |
if (numberTooLong) | |
return callback(err, 0, 1); | |
bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length); | |
msgLength = parseInt(msgLength); | |
var msg = sliceBuffer(bufferTail, 0, msgLength); | |
if (isString) { | |
try { | |
msg = String.fromCharCode.apply(null , new Uint8Array(msg)) | |
} catch (e) { | |
var typed = new Uint8Array(msg); | |
msg = ""; | |
for (var i = 0; i < typed.length; i++) { | |
msg += String.fromCharCode(typed[i]) | |
} | |
} | |
} | |
buffers.push(msg); | |
bufferTail = sliceBuffer(bufferTail, msgLength) | |
} | |
var total = buffers.length; | |
buffers.forEach(function(buffer, i) { | |
callback(exports.decodePacket(buffer, binaryType, true), i, total) | |
}) | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
"./keys": 26, | |
after: 27, | |
"arraybuffer.slice": 28, | |
"base64-arraybuffer": 29, | |
blob: 30, | |
"has-binary": 31, | |
utf8: 33 | |
}], | |
26: [function(_dereq_, module, exports) { | |
module.exports = Object.keys || function keys(obj) { | |
var arr = []; | |
var has = Object.prototype.hasOwnProperty; | |
for (var i in obj) { | |
if (has.call(obj, i)) { | |
arr.push(i) | |
} | |
} | |
return arr | |
} | |
} | |
, {}], | |
27: [function(_dereq_, module, exports) { | |
module.exports = after; | |
function after(count, callback, err_cb) { | |
var bail = false; | |
err_cb = err_cb || noop; | |
proxy.count = count; | |
return count === 0 ? callback() : proxy; | |
function proxy(err, result) { | |
if (proxy.count <= 0) { | |
throw new Error("after called too many times") | |
} | |
--proxy.count; | |
if (err) { | |
bail = true; | |
callback(err); | |
callback = err_cb | |
} else if (proxy.count === 0 && !bail) { | |
callback(null , result) | |
} | |
} | |
} | |
function noop() {} | |
} | |
, {}], | |
28: [function(_dereq_, module, exports) { | |
module.exports = function(arraybuffer, start, end) { | |
var bytes = arraybuffer.byteLength; | |
start = start || 0; | |
end = end || bytes; | |
if (arraybuffer.slice) { | |
return arraybuffer.slice(start, end) | |
} | |
if (start < 0) { | |
start += bytes | |
} | |
if (end < 0) { | |
end += bytes | |
} | |
if (end > bytes) { | |
end = bytes | |
} | |
if (start >= bytes || start >= end || bytes === 0) { | |
return new ArrayBuffer(0) | |
} | |
var abv = new Uint8Array(arraybuffer); | |
var result = new Uint8Array(end - start); | |
for (var i = start, ii = 0; i < end; i++, | |
ii++) { | |
result[ii] = abv[i] | |
} | |
return result.buffer | |
} | |
} | |
, {}], | |
29: [function(_dereq_, module, exports) { | |
(function(chars) { | |
"use strict"; | |
exports.encode = function(arraybuffer) { | |
var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = ""; | |
for (i = 0; i < len; i += 3) { | |
base64 += chars[bytes[i] >> 2]; | |
base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; | |
base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; | |
base64 += chars[bytes[i + 2] & 63] | |
} | |
if (len % 3 === 2) { | |
base64 = base64.substring(0, base64.length - 1) + "=" | |
} else if (len % 3 === 1) { | |
base64 = base64.substring(0, base64.length - 2) + "==" | |
} | |
return base64 | |
} | |
; | |
exports.decode = function(base64) { | |
var bufferLength = base64.length * .75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4; | |
if (base64[base64.length - 1] === "=") { | |
bufferLength--; | |
if (base64[base64.length - 2] === "=") { | |
bufferLength-- | |
} | |
} | |
var arraybuffer = new ArrayBuffer(bufferLength) | |
, bytes = new Uint8Array(arraybuffer); | |
for (i = 0; i < len; i += 4) { | |
encoded1 = chars.indexOf(base64[i]); | |
encoded2 = chars.indexOf(base64[i + 1]); | |
encoded3 = chars.indexOf(base64[i + 2]); | |
encoded4 = chars.indexOf(base64[i + 3]); | |
bytes[p++] = encoded1 << 2 | encoded2 >> 4; | |
bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; | |
bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63 | |
} | |
return arraybuffer | |
} | |
})("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") | |
} | |
, {}], | |
30: [function(_dereq_, module, exports) { | |
(function(global) { | |
var BlobBuilder = global.BlobBuilder || global.WebKitBlobBuilder || global.MSBlobBuilder || global.MozBlobBuilder; | |
var blobSupported = function() { | |
try { | |
var b = new Blob(["hi"]); | |
return b.size == 2 | |
} catch (e) { | |
return false | |
} | |
}(); | |
var blobBuilderSupported = BlobBuilder && BlobBuilder.prototype.append && BlobBuilder.prototype.getBlob; | |
function BlobBuilderConstructor(ary, options) { | |
options = options || {}; | |
var bb = new BlobBuilder; | |
for (var i = 0; i < ary.length; i++) { | |
bb.append(ary[i]) | |
} | |
return options.type ? bb.getBlob(options.type) : bb.getBlob() | |
} | |
module.exports = function() { | |
if (blobSupported) { | |
return global.Blob | |
} else if (blobBuilderSupported) { | |
return BlobBuilderConstructor | |
} else { | |
return undefined | |
} | |
}() | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, {}], | |
31: [function(_dereq_, module, exports) { | |
(function(global) { | |
var isArray = _dereq_("isarray"); | |
module.exports = hasBinary; | |
function hasBinary(data) { | |
function _hasBinary(obj) { | |
if (!obj) | |
return false; | |
if (global.Buffer && global.Buffer.isBuffer(obj) || global.ArrayBuffer && obj instanceof ArrayBuffer || global.Blob && obj instanceof Blob || global.File && obj instanceof File) { | |
return true | |
} | |
if (isArray(obj)) { | |
for (var i = 0; i < obj.length; i++) { | |
if (_hasBinary(obj[i])) { | |
return true | |
} | |
} | |
} else if (obj && "object" == typeof obj) { | |
if (obj.toJSON) { | |
obj = obj.toJSON() | |
} | |
for (var key in obj) { | |
if (obj.hasOwnProperty(key) && _hasBinary(obj[key])) { | |
return true | |
} | |
} | |
} | |
return false | |
} | |
return _hasBinary(data) | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
isarray: 32 | |
}], | |
32: [function(_dereq_, module, exports) { | |
module.exports = Array.isArray || function(arr) { | |
return Object.prototype.toString.call(arr) == "[object Array]" | |
} | |
} | |
, {}], | |
33: [function(_dereq_, module, exports) { | |
(function(global) { | |
(function(root) { | |
var freeExports = typeof exports == "object" && exports; | |
var freeModule = typeof module == "object" && module && module.exports == freeExports && module; | |
var freeGlobal = typeof global == "object" && global; | |
if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { | |
root = freeGlobal | |
} | |
var stringFromCharCode = String.fromCharCode; | |
function ucs2decode(string) { | |
var output = []; | |
var counter = 0; | |
var length = string.length; | |
var value; | |
var extra; | |
while (counter < length) { | |
value = string.charCodeAt(counter++); | |
if (value >= 55296 && value <= 56319 && counter < length) { | |
extra = string.charCodeAt(counter++); | |
if ((extra & 64512) == 56320) { | |
output.push(((value & 1023) << 10) + (extra & 1023) + 65536) | |
} else { | |
output.push(value); | |
counter-- | |
} | |
} else { | |
output.push(value) | |
} | |
} | |
return output | |
} | |
function ucs2encode(array) { | |
var length = array.length; | |
var index = -1; | |
var value; | |
var output = ""; | |
while (++index < length) { | |
value = array[index]; | |
if (value > 65535) { | |
value -= 65536; | |
output += stringFromCharCode(value >>> 10 & 1023 | 55296); | |
value = 56320 | value & 1023 | |
} | |
output += stringFromCharCode(value) | |
} | |
return output | |
} | |
function createByte(codePoint, shift) { | |
return stringFromCharCode(codePoint >> shift & 63 | 128) | |
} | |
function encodeCodePoint(codePoint) { | |
if ((codePoint & 4294967168) == 0) { | |
return stringFromCharCode(codePoint) | |
} | |
var symbol = ""; | |
if ((codePoint & 4294965248) == 0) { | |
symbol = stringFromCharCode(codePoint >> 6 & 31 | 192) | |
} else if ((codePoint & 4294901760) == 0) { | |
symbol = stringFromCharCode(codePoint >> 12 & 15 | 224); | |
symbol += createByte(codePoint, 6) | |
} else if ((codePoint & 4292870144) == 0) { | |
symbol = stringFromCharCode(codePoint >> 18 & 7 | 240); | |
symbol += createByte(codePoint, 12); | |
symbol += createByte(codePoint, 6) | |
} | |
symbol += stringFromCharCode(codePoint & 63 | 128); | |
return symbol | |
} | |
function utf8encode(string) { | |
var codePoints = ucs2decode(string); | |
var length = codePoints.length; | |
var index = -1; | |
var codePoint; | |
var byteString = ""; | |
while (++index < length) { | |
codePoint = codePoints[index]; | |
byteString += encodeCodePoint(codePoint) | |
} | |
return byteString | |
} | |
function readContinuationByte() { | |
if (byteIndex >= byteCount) { | |
throw Error("Invalid byte index") | |
} | |
var continuationByte = byteArray[byteIndex] & 255; | |
byteIndex++; | |
if ((continuationByte & 192) == 128) { | |
return continuationByte & 63 | |
} | |
throw Error("Invalid continuation byte") | |
} | |
function decodeSymbol() { | |
var byte1; | |
var byte2; | |
var byte3; | |
var byte4; | |
var codePoint; | |
if (byteIndex > byteCount) { | |
throw Error("Invalid byte index") | |
} | |
if (byteIndex == byteCount) { | |
return false | |
} | |
byte1 = byteArray[byteIndex] & 255; | |
byteIndex++; | |
if ((byte1 & 128) == 0) { | |
return byte1 | |
} | |
if ((byte1 & 224) == 192) { | |
var byte2 = readContinuationByte(); | |
codePoint = (byte1 & 31) << 6 | byte2; | |
if (codePoint >= 128) { | |
return codePoint | |
} else { | |
throw Error("Invalid continuation byte") | |
} | |
} | |
if ((byte1 & 240) == 224) { | |
byte2 = readContinuationByte(); | |
byte3 = readContinuationByte(); | |
codePoint = (byte1 & 15) << 12 | byte2 << 6 | byte3; | |
if (codePoint >= 2048) { | |
return codePoint | |
} else { | |
throw Error("Invalid continuation byte") | |
} | |
} | |
if ((byte1 & 248) == 240) { | |
byte2 = readContinuationByte(); | |
byte3 = readContinuationByte(); | |
byte4 = readContinuationByte(); | |
codePoint = (byte1 & 15) << 18 | byte2 << 12 | byte3 << 6 | byte4; | |
if (codePoint >= 65536 && codePoint <= 1114111) { | |
return codePoint | |
} | |
} | |
throw Error("Invalid UTF-8 detected") | |
} | |
var byteArray; | |
var byteCount; | |
var byteIndex; | |
function utf8decode(byteString) { | |
byteArray = ucs2decode(byteString); | |
byteCount = byteArray.length; | |
byteIndex = 0; | |
var codePoints = []; | |
var tmp; | |
while ((tmp = decodeSymbol()) !== false) { | |
codePoints.push(tmp) | |
} | |
return ucs2encode(codePoints) | |
} | |
var utf8 = { | |
version: "2.0.0", | |
encode: utf8encode, | |
decode: utf8decode | |
}; | |
if (typeof define == "function" && typeof define.amd == "object" && define.amd) { | |
define(function() { | |
return utf8 | |
}) | |
} else if (freeExports && !freeExports.nodeType) { | |
if (freeModule) { | |
freeModule.exports = utf8 | |
} else { | |
var object = {}; | |
var hasOwnProperty = object.hasOwnProperty; | |
for (var key in utf8) { | |
hasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]) | |
} | |
} | |
} else { | |
root.utf8 = utf8 | |
} | |
})(this) | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, {}], | |
34: [function(_dereq_, module, exports) { | |
(function(global) { | |
var rvalidchars = /^[\],:{}\s]*$/; | |
var rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g; | |
var rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; | |
var rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g; | |
var rtrimLeft = /^\s+/; | |
var rtrimRight = /\s+$/; | |
module.exports = function parsejson(data) { | |
if ("string" != typeof data || !data) { | |
return null | |
} | |
data = data.replace(rtrimLeft, "").replace(rtrimRight, ""); | |
if (global.JSON && JSON.parse) { | |
return JSON.parse(data) | |
} | |
if (rvalidchars.test(data.replace(rvalidescape, "@").replace(rvalidtokens, "]").replace(rvalidbraces, ""))) { | |
return new Function("return " + data)() | |
} | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, {}], | |
35: [function(_dereq_, module, exports) { | |
exports.encode = function(obj) { | |
var str = ""; | |
for (var i in obj) { | |
if (obj.hasOwnProperty(i)) { | |
if (str.length) | |
str += "&"; | |
str += encodeURIComponent(i) + "=" + encodeURIComponent(obj[i]) | |
} | |
} | |
return str | |
} | |
; | |
exports.decode = function(qs) { | |
var qry = {}; | |
var pairs = qs.split("&"); | |
for (var i = 0, l = pairs.length; i < l; i++) { | |
var pair = pairs[i].split("="); | |
qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]) | |
} | |
return qry | |
} | |
} | |
, {}], | |
36: [function(_dereq_, module, exports) { | |
var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; | |
var parts = ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"]; | |
module.exports = function parseuri(str) { | |
var src = str | |
, b = str.indexOf("[") | |
, e = str.indexOf("]"); | |
if (b != -1 && e != -1) { | |
str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ";") + str.substring(e, str.length) | |
} | |
var m = re.exec(str || "") | |
, uri = {} | |
, i = 14; | |
while (i--) { | |
uri[parts[i]] = m[i] || "" | |
} | |
if (b != -1 && e != -1) { | |
uri.source = src; | |
uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ":"); | |
uri.authority = uri.authority.replace("[", "").replace("]", "").replace(/;/g, ":"); | |
uri.ipv6uri = true | |
} | |
return uri | |
} | |
} | |
, {}], | |
37: [function(_dereq_, module, exports) { | |
var global = function() { | |
return this | |
}(); | |
var WebSocket = global.WebSocket || global.MozWebSocket; | |
module.exports = WebSocket ? ws : null ; | |
function ws(uri, protocols, opts) { | |
var instance; | |
if (protocols) { | |
instance = new WebSocket(uri,protocols) | |
} else { | |
instance = new WebSocket(uri) | |
} | |
return instance | |
} | |
if (WebSocket) | |
ws.prototype = WebSocket.prototype | |
} | |
, {}], | |
38: [function(_dereq_, module, exports) { | |
(function(global) { | |
var isArray = _dereq_("isarray"); | |
module.exports = hasBinary; | |
function hasBinary(data) { | |
function _hasBinary(obj) { | |
if (!obj) | |
return false; | |
if (global.Buffer && global.Buffer.isBuffer(obj) || global.ArrayBuffer && obj instanceof ArrayBuffer || global.Blob && obj instanceof Blob || global.File && obj instanceof File) { | |
return true | |
} | |
if (isArray(obj)) { | |
for (var i = 0; i < obj.length; i++) { | |
if (_hasBinary(obj[i])) { | |
return true | |
} | |
} | |
} else if (obj && "object" == typeof obj) { | |
if (obj.toJSON) { | |
obj = obj.toJSON() | |
} | |
for (var key in obj) { | |
if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) { | |
return true | |
} | |
} | |
} | |
return false | |
} | |
return _hasBinary(data) | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
isarray: 39 | |
}], | |
39: [function(_dereq_, module, exports) { | |
module.exports = _dereq_(32) | |
} | |
, {}], | |
40: [function(_dereq_, module, exports) { | |
var global = _dereq_("global"); | |
try { | |
module.exports = "XMLHttpRequest" in global && "withCredentials" in new global.XMLHttpRequest | |
} catch (err) { | |
module.exports = false | |
} | |
} | |
, { | |
global: 41 | |
}], | |
41: [function(_dereq_, module, exports) { | |
module.exports = function() { | |
return this | |
}() | |
} | |
, {}], | |
42: [function(_dereq_, module, exports) { | |
var indexOf = [].indexOf; | |
module.exports = function(arr, obj) { | |
if (indexOf) | |
return arr.indexOf(obj); | |
for (var i = 0; i < arr.length; ++i) { | |
if (arr[i] === obj) | |
return i | |
} | |
return -1 | |
} | |
} | |
, {}], | |
43: [function(_dereq_, module, exports) { | |
var has = Object.prototype.hasOwnProperty; | |
exports.keys = Object.keys || function(obj) { | |
var keys = []; | |
for (var key in obj) { | |
if (has.call(obj, key)) { | |
keys.push(key) | |
} | |
} | |
return keys | |
} | |
; | |
exports.values = function(obj) { | |
var vals = []; | |
for (var key in obj) { | |
if (has.call(obj, key)) { | |
vals.push(obj[key]) | |
} | |
} | |
return vals | |
} | |
; | |
exports.merge = function(a, b) { | |
for (var key in b) { | |
if (has.call(b, key)) { | |
a[key] = b[key] | |
} | |
} | |
return a | |
} | |
; | |
exports.length = function(obj) { | |
return exports.keys(obj).length | |
} | |
; | |
exports.isEmpty = function(obj) { | |
return 0 == exports.length(obj) | |
} | |
} | |
, {}], | |
44: [function(_dereq_, module, exports) { | |
var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; | |
var parts = ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"]; | |
module.exports = function parseuri(str) { | |
var m = re.exec(str || "") | |
, uri = {} | |
, i = 14; | |
while (i--) { | |
uri[parts[i]] = m[i] || "" | |
} | |
return uri | |
} | |
} | |
, {}], | |
45: [function(_dereq_, module, exports) { | |
(function(global) { | |
var isArray = _dereq_("isarray"); | |
var isBuf = _dereq_("./is-buffer"); | |
exports.deconstructPacket = function(packet) { | |
var buffers = []; | |
var packetData = packet.data; | |
function _deconstructPacket(data) { | |
if (!data) | |
return data; | |
if (isBuf(data)) { | |
var placeholder = { | |
_placeholder: true, | |
num: buffers.length | |
}; | |
buffers.push(data); | |
return placeholder | |
} else if (isArray(data)) { | |
var newData = new Array(data.length); | |
for (var i = 0; i < data.length; i++) { | |
newData[i] = _deconstructPacket(data[i]) | |
} | |
return newData | |
} else if ("object" == typeof data && !(data instanceof Date)) { | |
var newData = {}; | |
for (var key in data) { | |
newData[key] = _deconstructPacket(data[key]) | |
} | |
return newData | |
} | |
return data | |
} | |
var pack = packet; | |
pack.data = _deconstructPacket(packetData); | |
pack.attachments = buffers.length; | |
return { | |
packet: pack, | |
buffers: buffers | |
} | |
} | |
; | |
exports.reconstructPacket = function(packet, buffers) { | |
var curPlaceHolder = 0; | |
function _reconstructPacket(data) { | |
if (data && data._placeholder) { | |
var buf = buffers[data.num]; | |
return buf | |
} else if (isArray(data)) { | |
for (var i = 0; i < data.length; i++) { | |
data[i] = _reconstructPacket(data[i]) | |
} | |
return data | |
} else if (data && "object" == typeof data) { | |
for (var key in data) { | |
data[key] = _reconstructPacket(data[key]) | |
} | |
return data | |
} | |
return data | |
} | |
packet.data = _reconstructPacket(packet.data); | |
packet.attachments = undefined; | |
return packet | |
} | |
; | |
exports.removeBlobs = function(data, callback) { | |
function _removeBlobs(obj, curKey, containingObject) { | |
if (!obj) | |
return obj; | |
if (global.Blob && obj instanceof Blob || global.File && obj instanceof File) { | |
pendingBlobs++; | |
var fileReader = new FileReader; | |
fileReader.onload = function() { | |
if (containingObject) { | |
containingObject[curKey] = this.result | |
} else { | |
bloblessData = this.result | |
} | |
if (!--pendingBlobs) { | |
callback(bloblessData) | |
} | |
} | |
; | |
fileReader.readAsArrayBuffer(obj) | |
} else if (isArray(obj)) { | |
for (var i = 0; i < obj.length; i++) { | |
_removeBlobs(obj[i], i, obj) | |
} | |
} else if (obj && "object" == typeof obj && !isBuf(obj)) { | |
for (var key in obj) { | |
_removeBlobs(obj[key], key, obj) | |
} | |
} | |
} | |
var pendingBlobs = 0; | |
var bloblessData = data; | |
_removeBlobs(bloblessData); | |
if (!pendingBlobs) { | |
callback(bloblessData) | |
} | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, { | |
"./is-buffer": 47, | |
isarray: 48 | |
}], | |
46: [function(_dereq_, module, exports) { | |
var debug = _dereq_("debug")("socket.io-parser"); | |
var json = _dereq_("json3"); | |
var isArray = _dereq_("isarray"); | |
var Emitter = _dereq_("component-emitter"); | |
var binary = _dereq_("./binary"); | |
var isBuf = _dereq_("./is-buffer"); | |
exports.protocol = 4; | |
exports.types = ["CONNECT", "DISCONNECT", "EVENT", "BINARY_EVENT", "ACK", "BINARY_ACK", "ERROR"]; | |
exports.CONNECT = 0; | |
exports.DISCONNECT = 1; | |
exports.EVENT = 2; | |
exports.ACK = 3; | |
exports.ERROR = 4; | |
exports.BINARY_EVENT = 5; | |
exports.BINARY_ACK = 6; | |
exports.Encoder = Encoder; | |
exports.Decoder = Decoder; | |
function Encoder() {} | |
Encoder.prototype.encode = function(obj, callback) { | |
debug("encoding packet %j", obj); | |
if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) { | |
encodeAsBinary(obj, callback) | |
} else { | |
var encoding = encodeAsString(obj); | |
callback([encoding]) | |
} | |
} | |
; | |
function encodeAsString(obj) { | |
var str = ""; | |
var nsp = false; | |
str += obj.type; | |
if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) { | |
str += obj.attachments; | |
str += "-" | |
} | |
if (obj.nsp && "/" != obj.nsp) { | |
nsp = true; | |
str += obj.nsp | |
} | |
if (null != obj.id) { | |
if (nsp) { | |
str += ","; | |
nsp = false | |
} | |
str += obj.id | |
} | |
if (null != obj.data) { | |
if (nsp) | |
str += ","; | |
str += json.stringify(obj.data) | |
} | |
debug("encoded %j as %s", obj, str); | |
return str | |
} | |
function encodeAsBinary(obj, callback) { | |
function writeEncoding(bloblessData) { | |
var deconstruction = binary.deconstructPacket(bloblessData); | |
var pack = encodeAsString(deconstruction.packet); | |
var buffers = deconstruction.buffers; | |
buffers.unshift(pack); | |
callback(buffers) | |
} | |
binary.removeBlobs(obj, writeEncoding) | |
} | |
function Decoder() { | |
this.reconstructor = null | |
} | |
Emitter(Decoder.prototype); | |
Decoder.prototype.add = function(obj) { | |
var packet; | |
if ("string" == typeof obj) { | |
packet = decodeString(obj); | |
if (exports.BINARY_EVENT == packet.type || exports.BINARY_ACK == packet.type) { | |
this.reconstructor = new BinaryReconstructor(packet); | |
if (this.reconstructor.reconPack.attachments === 0) { | |
this.emit("decoded", packet) | |
} | |
} else { | |
this.emit("decoded", packet) | |
} | |
} else if (isBuf(obj) || obj.base64) { | |
if (!this.reconstructor) { | |
throw new Error("got binary data when not reconstructing a packet") | |
} else { | |
packet = this.reconstructor.takeBinaryData(obj); | |
if (packet) { | |
this.reconstructor = null ; | |
this.emit("decoded", packet) | |
} | |
} | |
} else { | |
throw new Error("Unknown type: " + obj) | |
} | |
} | |
; | |
function decodeString(str) { | |
var p = {}; | |
var i = 0; | |
p.type = Number(str.charAt(0)); | |
if (null == exports.types[p.type]) | |
return error(); | |
if (exports.BINARY_EVENT == p.type || exports.BINARY_ACK == p.type) { | |
var buf = ""; | |
while (str.charAt(++i) != "-") { | |
buf += str.charAt(i); | |
if (i == str.length) | |
break | |
} | |
if (buf != Number(buf) || str.charAt(i) != "-") { | |
throw new Error("Illegal attachments") | |
} | |
p.attachments = Number(buf) | |
} | |
if ("/" == str.charAt(i + 1)) { | |
p.nsp = ""; | |
while (++i) { | |
var c = str.charAt(i); | |
if ("," == c) | |
break; | |
p.nsp += c; | |
if (i == str.length) | |
break | |
} | |
} else { | |
p.nsp = "/" | |
} | |
var next = str.charAt(i + 1); | |
if ("" !== next && Number(next) == next) { | |
p.id = ""; | |
while (++i) { | |
var c = str.charAt(i); | |
if (null == c || Number(c) != c) { | |
--i; | |
break | |
} | |
p.id += str.charAt(i); | |
if (i == str.length) | |
break | |
} | |
p.id = Number(p.id) | |
} | |
if (str.charAt(++i)) { | |
try { | |
p.data = json.parse(str.substr(i)) | |
} catch (e) { | |
return error() | |
} | |
} | |
debug("decoded %s as %j", str, p); | |
return p | |
} | |
Decoder.prototype.destroy = function() { | |
if (this.reconstructor) { | |
this.reconstructor.finishedReconstruction() | |
} | |
} | |
; | |
function BinaryReconstructor(packet) { | |
this.reconPack = packet; | |
this.buffers = [] | |
} | |
BinaryReconstructor.prototype.takeBinaryData = function(binData) { | |
this.buffers.push(binData); | |
if (this.buffers.length == this.reconPack.attachments) { | |
var packet = binary.reconstructPacket(this.reconPack, this.buffers); | |
this.finishedReconstruction(); | |
return packet | |
} | |
return null | |
} | |
; | |
BinaryReconstructor.prototype.finishedReconstruction = function() { | |
this.reconPack = null ; | |
this.buffers = [] | |
} | |
; | |
function error(data) { | |
return { | |
type: exports.ERROR, | |
data: "parser error" | |
} | |
} | |
} | |
, { | |
"./binary": 45, | |
"./is-buffer": 47, | |
"component-emitter": 9, | |
debug: 10, | |
isarray: 48, | |
json3: 49 | |
}], | |
47: [function(_dereq_, module, exports) { | |
(function(global) { | |
module.exports = isBuf; | |
function isBuf(obj) { | |
return global.Buffer && global.Buffer.isBuffer(obj) || global.ArrayBuffer && obj instanceof ArrayBuffer | |
} | |
} | |
).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) | |
} | |
, {}], | |
48: [function(_dereq_, module, exports) { | |
module.exports = _dereq_(32) | |
} | |
, {}], | |
49: [function(_dereq_, module, exports) { | |
(function(window) { | |
var getClass = {}.toString, isProperty, forEach, undef; | |
var isLoader = typeof define === "function" && define.amd; | |
var nativeJSON = typeof JSON == "object" && JSON; | |
var JSON3 = typeof exports == "object" && exports && !exports.nodeType && exports; | |
if (JSON3 && nativeJSON) { | |
JSON3.stringify = nativeJSON.stringify; | |
JSON3.parse = nativeJSON.parse | |
} else { | |
JSON3 = window.JSON = nativeJSON || {} | |
} | |
var isExtended = new Date(-0xc782b5b800cec); | |
try { | |
isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 && isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708 | |
} catch (exception) {} | |
function has(name) { | |
if (has[name] !== undef) { | |
return has[name] | |
} | |
var isSupported; | |
if (name == "bug-string-char-index") { | |
isSupported = "a"[0] != "a" | |
} else if (name == "json") { | |
isSupported = has("json-stringify") && has("json-parse") | |
} else { | |
var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'; | |
if (name == "json-stringify") { | |
var stringify = JSON3.stringify | |
, stringifySupported = typeof stringify == "function" && isExtended; | |
if (stringifySupported) { | |
(value = function() { | |
return 1 | |
} | |
).toJSON = value; | |
try { | |
stringifySupported = stringify(0) === "0" && stringify(new Number) === "0" && stringify(new String) == '""' && stringify(getClass) === undef && stringify(undef) === undef && stringify() === undef && stringify(value) === "1" && stringify([value]) == "[1]" && stringify([undef]) == "[null]" && stringify(null ) == "null" && stringify([undef, getClass, null ]) == "[null,null,null]" && stringify({ | |
a: [value, true, false, null , "\x00\b\n\f\r "] | |
}) == serialized && stringify(null , value) === "1" && stringify([1, 2], null , 1) == "[\n 1,\n 2\n]" && stringify(new Date(-864e13)) == '"-271821-04-20T00:00:00.000Z"' && stringify(new Date(864e13)) == '"+275760-09-13T00:00:00.000Z"' && stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' && stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"' | |
} catch (exception) { | |
stringifySupported = false | |
} | |
} | |
isSupported = stringifySupported | |
} | |
if (name == "json-parse") { | |
var parse = JSON3.parse; | |
if (typeof parse == "function") { | |
try { | |
if (parse("0") === 0 && !parse(false)) { | |
value = parse(serialized); | |
var parseSupported = value["a"].length == 5 && value["a"][0] === 1; | |
if (parseSupported) { | |
try { | |
parseSupported = !parse('" "') | |
} catch (exception) {} | |
if (parseSupported) { | |
try { | |
parseSupported = parse("01") !== 1 | |
} catch (exception) {} | |
} | |
if (parseSupported) { | |
try { | |
parseSupported = parse("1.") !== 1 | |
} catch (exception) {} | |
} | |
} | |
} | |
} catch (exception) { | |
parseSupported = false | |
} | |
} | |
isSupported = parseSupported | |
} | |
} | |
return has[name] = !!isSupported | |
} | |
if (!has("json")) { | |
var functionClass = "[object Function]"; | |
var dateClass = "[object Date]"; | |
var numberClass = "[object Number]"; | |
var stringClass = "[object String]"; | |
var arrayClass = "[object Array]"; | |
var booleanClass = "[object Boolean]"; | |
var charIndexBuggy = has("bug-string-char-index"); | |
if (!isExtended) { | |
var floor = Math.floor; | |
var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; | |
var getDay = function(year, month) { | |
return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400) | |
} | |
} | |
if (!(isProperty = {}.hasOwnProperty)) { | |
isProperty = function(property) { | |
var members = {}, constructor; | |
if ((members.__proto__ = null , | |
members.__proto__ = { | |
toString: 1 | |
}, | |
members).toString != getClass) { | |
isProperty = function(property) { | |
var original = this.__proto__ | |
, result = property in (this.__proto__ = null , | |
this); | |
this.__proto__ = original; | |
return result | |
} | |
} else { | |
constructor = members.constructor; | |
isProperty = function(property) { | |
var parent = (this.constructor || constructor).prototype; | |
return property in this && !(property in parent && this[property] === parent[property]) | |
} | |
} | |
members = null ; | |
return isProperty.call(this, property) | |
} | |
} | |
var PrimitiveTypes = { | |
"boolean": 1, | |
number: 1, | |
string: 1, | |
undefined: 1 | |
}; | |
var isHostType = function(object, property) { | |
var type = typeof object[property]; | |
return type == "object" ? !!object[property] : !PrimitiveTypes[type] | |
} | |
; | |
forEach = function(object, callback) { | |
var size = 0, Properties, members, property; | |
(Properties = function() { | |
this.valueOf = 0 | |
} | |
).prototype.valueOf = 0; | |
members = new Properties; | |
for (property in members) { | |
if (isProperty.call(members, property)) { | |
size++ | |
} | |
} | |
Properties = members = null ; | |
if (!size) { | |
members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"]; | |
forEach = function(object, callback) { | |
var isFunction = getClass.call(object) == functionClass, property, length; | |
var hasProperty = !isFunction && typeof object.constructor != "function" && isHostType(object, "hasOwnProperty") ? object.hasOwnProperty : isProperty; | |
for (property in object) { | |
if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) { | |
callback(property) | |
} | |
} | |
for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property)) | |
; | |
} | |
} else if (size == 2) { | |
forEach = function(object, callback) { | |
var members = {}, isFunction = getClass.call(object) == functionClass, property; | |
for (property in object) { | |
if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) { | |
callback(property) | |
} | |
} | |
} | |
} else { | |
forEach = function(object, callback) { | |
var isFunction = getClass.call(object) == functionClass, property, isConstructor; | |
for (property in object) { | |
if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) { | |
callback(property) | |
} | |
} | |
if (isConstructor || isProperty.call(object, property = "constructor")) { | |
callback(property) | |
} | |
} | |
} | |
return forEach(object, callback) | |
} | |
; | |
if (!has("json-stringify")) { | |
var Escapes = { | |
92: "\\\\", | |
34: '\\"', | |
8: "\\b", | |
12: "\\f", | |
10: "\\n", | |
13: "\\r", | |
9: "\\t" | |
}; | |
var leadingZeroes = "000000"; | |
var toPaddedString = function(width, value) { | |
return (leadingZeroes + (value || 0)).slice(-width) | |
} | |
; | |
var unicodePrefix = "\\u00"; | |
var quote = function(value) { | |
var result = '"', index = 0, length = value.length, isLarge = length > 10 && charIndexBuggy, symbols; | |
if (isLarge) { | |
symbols = value.split("") | |
} | |
for (; index < length; index++) { | |
var charCode = value.charCodeAt(index); | |
switch (charCode) { | |
case 8: | |
case 9: | |
case 10: | |
case 12: | |
case 13: | |
case 34: | |
case 92: | |
result += Escapes[charCode]; | |
break; | |
default: | |
if (charCode < 32) { | |
result += unicodePrefix + toPaddedString(2, charCode.toString(16)); | |
break | |
} | |
result += isLarge ? symbols[index] : charIndexBuggy ? value.charAt(index) : value[index] | |
} | |
} | |
return result + '"' | |
} | |
; | |
var serialize = function(property, object, callback, properties, whitespace, indentation, stack) { | |
var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result; | |
try { | |
value = object[property] | |
} catch (exception) {} | |
if (typeof value == "object" && value) { | |
className = getClass.call(value); | |
if (className == dateClass && !isProperty.call(value, "toJSON")) { | |
if (value > -1 / 0 && value < 1 / 0) { | |
if (getDay) { | |
date = floor(value / 864e5); | |
for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++) | |
; | |
for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++) | |
; | |
date = 1 + date - getDay(year, month); | |
time = (value % 864e5 + 864e5) % 864e5; | |
hours = floor(time / 36e5) % 24; | |
minutes = floor(time / 6e4) % 60; | |
seconds = floor(time / 1e3) % 60; | |
milliseconds = time % 1e3 | |
} else { | |
year = value.getUTCFullYear(); | |
month = value.getUTCMonth(); | |
date = value.getUTCDate(); | |
hours = value.getUTCHours(); | |
minutes = value.getUTCMinutes(); | |
seconds = value.getUTCSeconds(); | |
milliseconds = value.getUTCMilliseconds() | |
} | |
value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) + "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) + "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) + "." + toPaddedString(3, milliseconds) + "Z" | |
} else { | |
value = null | |
} | |
} else if (typeof value.toJSON == "function" && (className != numberClass && className != stringClass && className != arrayClass || isProperty.call(value, "toJSON"))) { | |
value = value.toJSON(property) | |
} | |
} | |
if (callback) { | |
value = callback.call(object, property, value) | |
} | |
if (value === null ) { | |
return "null" | |
} | |
className = getClass.call(value); | |
if (className == booleanClass) { | |
return "" + value | |
} else if (className == numberClass) { | |
return value > -1 / 0 && value < 1 / 0 ? "" + value : "null" | |
} else if (className == stringClass) { | |
return quote("" + value) | |
} | |
if (typeof value == "object") { | |
for (length = stack.length; length--; ) { | |
if (stack[length] === value) { | |
throw TypeError() | |
} | |
} | |
stack.push(value); | |
results = []; | |
prefix = indentation; | |
indentation += whitespace; | |
if (className == arrayClass) { | |
for (index = 0, | |
length = value.length; index < length; index++) { | |
element = serialize(index, value, callback, properties, whitespace, indentation, stack); | |
results.push(element === undef ? "null" : element) | |
} | |
result = results.length ? whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : "[" + results.join(",") + "]" : "[]" | |
} else { | |
forEach(properties || value, function(property) { | |
var element = serialize(property, value, callback, properties, whitespace, indentation, stack); | |
if (element !== undef) { | |
results.push(quote(property) + ":" + (whitespace ? " " : "") + element) | |
} | |
}); | |
result = results.length ? whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : "{" + results.join(",") + "}" : "{}" | |
} | |
stack.pop(); | |
return result | |
} | |
} | |
; | |
JSON3.stringify = function(source, filter, width) { | |
var whitespace, callback, properties, className; | |
if (typeof filter == "function" || typeof filter == "object" && filter) { | |
if ((className = getClass.call(filter)) == functionClass) { | |
callback = filter | |
} else if (className == arrayClass) { | |
properties = {}; | |
for (var index = 0, length = filter.length, value; index < length; value = filter[index++], | |
(className = getClass.call(value), | |
className == stringClass || className == numberClass) && (properties[value] = 1)) | |
; | |
} | |
} | |
if (width) { | |
if ((className = getClass.call(width)) == numberClass) { | |
if ((width -= width % 1) > 0) { | |
for (whitespace = "", | |
width > 10 && (width = 10); whitespace.length < width; whitespace += " ") | |
; | |
} | |
} else if (className == stringClass) { | |
whitespace = width.length <= 10 ? width : width.slice(0, 10) | |
} | |
} | |
return serialize("", (value = {}, | |
value[""] = source, | |
value), callback, properties, whitespace, "", []) | |
} | |
} | |
if (!has("json-parse")) { | |
var fromCharCode = String.fromCharCode; | |
var Unescapes = { | |
92: "\\", | |
34: '"', | |
47: "/", | |
98: "\b", | |
116: " ", | |
110: "\n", | |
102: "\f", | |
114: "\r" | |
}; | |
var Index, Source; | |
var abort = function() { | |
Index = Source = null ; | |
throw SyntaxError() | |
} | |
; | |
var lex = function() { | |
var source = Source, length = source.length, value, begin, position, isSigned, charCode; | |
while (Index < length) { | |
charCode = source.charCodeAt(Index); | |
switch (charCode) { | |
case 9: | |
case 10: | |
case 13: | |
case 32: | |
Index++; | |
break; | |
case 123: | |
case 125: | |
case 91: | |
case 93: | |
case 58: | |
case 44: | |
value = charIndexBuggy ? source.charAt(Index) : source[Index]; | |
Index++; | |
return value; | |
case 34: | |
for (value = "@", | |
Index++; Index < length; ) { | |
charCode = source.charCodeAt(Index); | |
if (charCode < 32) { | |
abort() | |
} else if (charCode == 92) { | |
charCode = source.charCodeAt(++Index); | |
switch (charCode) { | |
case 92: | |
case 34: | |
case 47: | |
case 98: | |
case 116: | |
case 110: | |
case 102: | |
case 114: | |
value += Unescapes[charCode]; | |
Index++; | |
break; | |
case 117: | |
begin = ++Index; | |
for (position = Index + 4; Index < position; Index++) { | |
charCode = source.charCodeAt(Index); | |
if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) { | |
abort() | |
} | |
} | |
value += fromCharCode("0x" + source.slice(begin, Index)); | |
break; | |
default: | |
abort() | |
} | |
} else { | |
if (charCode == 34) { | |
break | |
} | |
charCode = source.charCodeAt(Index); | |
begin = Index; | |
while (charCode >= 32 && charCode != 92 && charCode != 34) { | |
charCode = source.charCodeAt(++Index) | |
} | |
value += source.slice(begin, Index) | |
} | |
} | |
if (source.charCodeAt(Index) == 34) { | |
Index++; | |
return value | |
} | |
abort(); | |
default: | |
begin = Index; | |
if (charCode == 45) { | |
isSigned = true; | |
charCode = source.charCodeAt(++Index) | |
} | |
if (charCode >= 48 && charCode <= 57) { | |
if (charCode == 48 && (charCode = source.charCodeAt(Index + 1), | |
charCode >= 48 && charCode <= 57)) { | |
abort() | |
} | |
isSigned = false; | |
for (; Index < length && (charCode = source.charCodeAt(Index), | |
charCode >= 48 && charCode <= 57); Index++) | |
; | |
if (source.charCodeAt(Index) == 46) { | |
position = ++Index; | |
for (; position < length && (charCode = source.charCodeAt(position), | |
charCode >= 48 && charCode <= 57); position++) | |
; | |
if (position == Index) { | |
abort() | |
} | |
Index = position | |
} | |
charCode = source.charCodeAt(Index); | |
if (charCode == 101 || charCode == 69) { | |
charCode = source.charCodeAt(++Index); | |
if (charCode == 43 || charCode == 45) { | |
Index++ | |
} | |
for (position = Index; position < length && (charCode = source.charCodeAt(position), | |
charCode >= 48 && charCode <= 57); position++) | |
; | |
if (position == Index) { | |
abort() | |
} | |
Index = position | |
} | |
return +source.slice(begin, Index) | |
} | |
if (isSigned) { | |
abort() | |
} | |
if (source.slice(Index, Index + 4) == "true") { | |
Index += 4; | |
return true | |
} else if (source.slice(Index, Index + 5) == "false") { | |
Index += 5; | |
return false | |
} else if (source.slice(Index, Index + 4) == "null") { | |
Index += 4; | |
return null | |
} | |
abort() | |
} | |
} | |
return "$" | |
} | |
; | |
var get = function(value) { | |
var results, hasMembers; | |
if (value == "$") { | |
abort() | |
} | |
if (typeof value == "string") { | |
if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") { | |
return value.slice(1) | |
} | |
if (value == "[") { | |
results = []; | |
for (; ; hasMembers || (hasMembers = true)) { | |
value = lex(); | |
if (value == "]") { | |
break | |
} | |
if (hasMembers) { | |
if (value == ",") { | |
value = lex(); | |
if (value == "]") { | |
abort() | |
} | |
} else { | |
abort() | |
} | |
} | |
if (value == ",") { | |
abort() | |
} | |
results.push(get(value)) | |
} | |
return results | |
} else if (value == "{") { | |
results = {}; | |
for (; ; hasMembers || (hasMembers = true)) { | |
value = lex(); | |
if (value == "}") { | |
break | |
} | |
if (hasMembers) { | |
if (value == ",") { | |
value = lex(); | |
if (value == "}") { | |
abort() | |
} | |
} else { | |
abort() | |
} | |
} | |
if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") { | |
abort() | |
} | |
results[value.slice(1)] = get(lex()) | |
} | |
return results | |
} | |
abort() | |
} | |
return value | |
} | |
; | |
var update = function(source, property, callback) { | |
var element = walk(source, property, callback); | |
if (element === undef) { | |
delete source[property] | |
} else { | |
source[property] = element | |
} | |
} | |
; | |
var walk = function(source, property, callback) { | |
var value = source[property], length; | |
if (typeof value == "object" && value) { | |
if (getClass.call(value) == arrayClass) { | |
for (length = value.length; length--; ) { | |
update(value, length, callback) | |
} | |
} else { | |
forEach(value, function(property) { | |
update(value, property, callback) | |
}) | |
} | |
} | |
return callback.call(source, property, value) | |
} | |
; | |
JSON3.parse = function(source, callback) { | |
var result, value; | |
Index = 0; | |
Source = "" + source; | |
result = get(lex()); | |
if (lex() != "$") { | |
abort() | |
} | |
Index = Source = null ; | |
return callback && getClass.call(callback) == functionClass ? walk((value = {}, | |
value[""] = result, | |
value), "", callback) : result | |
} | |
} | |
} | |
if (isLoader) { | |
define(function() { | |
return JSON3 | |
}) | |
} | |
})(this) | |
} | |
, {}], | |
50: [function(_dereq_, module, exports) { | |
module.exports = toArray; | |
function toArray(list, index) { | |
var array = []; | |
index = index || 0; | |
for (var i = index || 0; i < list.length; i++) { | |
array[i - index] = list[i] | |
} | |
return array | |
} | |
} | |
, {}] | |
}, {}, [1])(1) | |
}); | |
/* Copyright 2016 Bizx Partners LLC dba. All rights reserved. */ | |
"use strict"; | |
var P4a = { | |
'H': 'bz_wd_speedtest', | |
'z': true, | |
'F': 'undefined', | |
'h': false, | |
'G': 'data-cid', | |
'w': "US", | |
'j': '//', | |
'g': 'best_server_ip' | |
}; | |
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(b) { | |
return typeof b; | |
} | |
: function(b) { | |
return b && typeof Symbol === "function" && b.constructor === Symbol ? "symbol" : typeof b; | |
} | |
; | |
(function(d) { | |
var f = {}; | |
function k(b) { | |
if (f[b]) | |
return f[b].exports; | |
var a = f[b] = { | |
exports: {}, | |
id: b, | |
loaded: P4a.h | |
}; | |
d[b].call(a.exports, a, a.exports, k); | |
a.loaded = P4a.z; | |
return a.exports; | |
} | |
k.m = d; | |
k.c = f; | |
k.p = ""; | |
return k(0); | |
})([function(b, a, d) { | |
d(1); | |
d(2); | |
d(3); | |
d(4); | |
b.exports = d(5); | |
} | |
, function(h0, i) { | |
var d0 = 'cid=' | |
, T = 'application/x-www-form-urlencoded' | |
, S = 'Content-type' | |
, R = 'POST' | |
, e0 = 'my_isp_rating' | |
, f0 = 'upload' | |
, a0 = 'download' | |
, Z = 'pong' | |
, P = 1000 | |
, c0 = "undefined" | |
, B = document.createEvent("UIEvent"); | |
B.initUIEvent("change", P4a.z, P4a.z, window, 1); | |
var b0 = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i | |
, g0 = 'bzxli'; | |
i.e = B; | |
i.isEmpty = function(b) { | |
'use strict'; | |
if (b === null || b == 'undefizned' || typeof b === P4a.F) { | |
return P4a.z; | |
} else { | |
return P4a.h; | |
} | |
} | |
; | |
i.arrayMax = function(b) { | |
'use strict'; | |
return Math.max.apply(Math, b); | |
} | |
; | |
i.arrayMin = function(b) { | |
'use strict'; | |
return Math.min.apply(Math, b); | |
} | |
; | |
i.getRandomString = function(b) { | |
'use strict'; | |
if (typeof repeat !== c0) | |
return "0".repeat(b * 2); | |
return new Array(b + 1).join(0); | |
} | |
; | |
i.getProtocol = function() { | |
if (location.protocol === 'https:') | |
speedtest.ssl = P4a.z; | |
} | |
; | |
i.getPortNumber = function(b) { | |
var a = void 0; | |
if (speedtest.ssl) { | |
a = speedtest.servers[b].portSSL; | |
} else { | |
a = speedtest.servers[b].port; | |
} | |
return a; | |
} | |
; | |
i.socketConnect = function(b) { | |
'use strict'; | |
speedtest.servers[b].socket = io.connect(P4a.j + speedtest.servers[b].ip + ':' + i.getPortNumber(b), { | |
'forceNew': P4a.z, | |
'transports': ['websocket'] | |
}); | |
} | |
; | |
i.pingServer = function(b, a, d) { | |
'use strict'; | |
d = d || P4a.h; | |
a = a || 0; | |
setTimeout(function() { | |
speedtest.servers[b].socket.emit('ping', window.performance.now(), b); | |
if (d) | |
d(); | |
}, a); | |
} | |
; | |
i.pingOnConnect = function(b, a) { | |
'use strict'; | |
a = a || P4a.h; | |
speedtest.servers[b].socket.on('connected', function() { | |
if (a) { | |
i.pingServer(b, P, function() { | |
a(); | |
}); | |
} else { | |
i.pingServer(b, P); | |
} | |
}); | |
} | |
; | |
i.estLatencyOnPong = function(f, k) { | |
'use strict'; | |
speedtest.servers[f].socket.on(Z, function(b, a) { | |
if (speedtest.servers[a].count > k) { | |
speedtest.servers[a].latency = parseFloat(speedtest.servers[a].latency / speedtest.servers[a].count).toFixed(2); | |
speedtest.servers[a].socket.disconnect(); | |
return P4a.z; | |
} | |
var d = parseFloat(window.performance.now() - b).toFixed(2); | |
if (!speedtest.servers[a].latency) | |
speedtest.servers[a].latency = 0; | |
speedtest.servers[a].latency = Math.round(parseFloat(speedtest.servers[a].latency) + parseFloat(d)); | |
speedtest.servers[a].count++; | |
i.pingServer(a, 0); | |
}); | |
} | |
; | |
i.bloatLatencyOnPong = function(f) { | |
'use strict'; | |
speedtest.servers[f].socket.on(Z, function(b, a) { | |
var d = Math.round(window.performance.now() - b); | |
speedtest.data.buffer_bloat.push(d); | |
i.pingServer(f, 0); | |
}); | |
} | |
; | |
i.latencyOnPong = function(d) { | |
'use strict'; | |
function f(b) { | |
var a = parseFloat(window.performance.now() - b).toFixed(0); | |
if (speedtest.data.ping_results.length === 0 || a < parseInt(speedtest.data.ping_results[speedtest.data.ping_results.length - 1]) * 5) { | |
speedtest.data.ping_results.push(parseFloat(a)); | |
speedtest.set('ping_results', speedtest.data.ping_results); | |
speedtest.data.ping_progress = Math.floor(speedtest.data.ping_results.length / speedtest.data.ping_run_total * 100); | |
speedtest.set('ping_progress', speedtest.data.ping_progress); | |
if (speedtest.data.ping_results.length > 2) { | |
speedtest.data.jitter_results.push(parseInt(Math.abs(speedtest.data.ping_results[speedtest.data.ping_results.length - 1] - speedtest.data.ping_results[speedtest.data.ping_results.length - 2]).toFixed(0))); | |
speedtest.set('jitter_results', speedtest.data.jitter_results); | |
} | |
if (speedtest.data.ping_results.length == speedtest.data.ping_run_total) { | |
speedtest.servers[d].socket.disconnect(); | |
i.pingResults(); | |
i.bufferbloatTest('download'); | |
return true; | |
} | |
} | |
i.pingServer(d, 10); | |
} | |
speedtest.servers[d].socket.on('pong', f); | |
} | |
; | |
i.hiddenInputs = function() { | |
'use strict'; | |
for (var b in speedtest.data) { | |
var a = document.getElementById("speedtest_" + b); | |
if (a) | |
a.parentNode.removeChild(a); | |
var d = document.createElement("input"); | |
d.setAttribute("type", "hidden"); | |
d.setAttribute("name", 'speedtest_' + b); | |
d.setAttribute("id", 'speedtest_' + b); | |
d.setAttribute("class", 'speedtest_data'); | |
d.setAttribute('data-type', _typeof(speedtest.data[b])); | |
d.setAttribute("value", ''); | |
document.body.appendChild(d); | |
} | |
} | |
; | |
i.findBestServer = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return P4a.h; | |
for (var b in speedtest.servers) { | |
if (typeof speedtest.localized_countries[speedtest.user_country] !== P4a.F) { | |
if (b.country !== speedtest.user_country) { | |
continue; | |
} | |
} | |
i.socketConnect(b); | |
if (!speedtest.servers[b].latency) | |
speedtest.servers[b].latency = 0; | |
i.estLatencyOnPong(b, 3); | |
i.pingOnConnect(b); | |
} | |
} | |
; | |
i.pingTest = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return P4a.h; | |
i.socketConnect(speedtest.data.best_server_ip); | |
i.latencyOnPong(speedtest.data.best_server_ip); | |
i.pingOnConnect(speedtest.data.best_server_ip); | |
} | |
; | |
i.pingResults = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return P4a.h; | |
speedtest.data.ping_total = 0; | |
speedtest.data.jitter_total = 0; | |
speedtest.set('ping_total', speedtest.data.ping_results.reduce(function(b, a) { | |
return b + a; | |
})); | |
speedtest.set('ping_max', i.arrayMax(speedtest.data.ping_results)); | |
speedtest.set('ping_min', i.arrayMin(speedtest.data.ping_results)); | |
speedtest.set('jitter_total', speedtest.data.jitter_results.reduce(function(b, a) { | |
return b + a; | |
})); | |
speedtest.set('jitter_max', parseInt(i.arrayMax(speedtest.data.jitter_results))); | |
speedtest.set('jitter_min', parseInt(i.arrayMin(speedtest.data.jitter_results))); | |
speedtest.set('ping_average', Math.floor(speedtest.data.ping_total / (speedtest.data.ping_results.length - 1))); | |
speedtest.set('jitter_average', Math.floor(speedtest.data.jitter_total / (speedtest.data.jitter_results.length - 1))); | |
} | |
; | |
i.bufferbloatTest = function(b) { | |
'use strict'; | |
if (speedtest.canceled) | |
return P4a.h; | |
speedtest.data.buffer_bloat.push(speedtest.data.ping_average); | |
i.socketConnect(speedtest.data.best_server_ip); | |
i.bloatLatencyOnPong(speedtest.data.best_server_ip); | |
i.pingOnConnect(speedtest.data.best_server_ip, function() { | |
if (b === 'upload') { | |
i.uploadTest(); | |
} else { | |
i.downloadTest(); | |
} | |
}); | |
} | |
; | |
function i0(b, a) { | |
var d = void 0; | |
a = a || a0; | |
if (a === a0) { | |
d = speedtest.conf.dltime; | |
} else if (a === f0) { | |
d = speedtest.conf.uptime; | |
} | |
var f = speedtest.conf.number_data_points / (d / P); | |
return f * (b / P); | |
} | |
i.downloadTest = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return false; | |
var s = void 0 | |
, l = void 0 | |
, v = void 0 | |
, y = true | |
, t = 0 | |
, o = { | |
n: speedtest.conf.download_threads, | |
max: speedtest.conf.dl_max_threads, | |
abortLoop: 0, | |
aborted: [], | |
tmpResults: [], | |
tmpBufferBloat: [], | |
loaded: [], | |
loadedSum: 0, | |
runRate: speedtest.conf.dl_run_rate, | |
runRateThreashold: speedtest.conf.dl_rate_threashold, | |
maxRun: function maxRun() { | |
return o.runRate * q.length * o.runRateThreashold; | |
}, | |
percentSum: 0 | |
} | |
, I = 0 | |
, u = window.performance.now(); | |
speedtest.xhr = []; | |
var A = [] | |
, q = [] | |
, x = false | |
, C = 0; | |
function L() { | |
setTimeout(function() { | |
for (var b in speedtest.xhr) { | |
speedtest.xhr[b].abort(); | |
o.aborted.push(1); | |
speedtest.xhr[b] = {}; | |
} | |
}, 1000); | |
} | |
function U(b, a) { | |
if (a.readyState == 1) | |
a.startTime = window.performance.now(); | |
} | |
function D(b, a) { | |
if (typeof a.aborted === 'undefined') | |
o.aborted.push(1); | |
a.aborted = 1; | |
} | |
function Q(b) {} | |
function M(d, f) { | |
if (q.length === 0) { | |
u = window.performance.now(); | |
} | |
var k = f.num; | |
if (d.lengthComputable) { | |
f.loaded = d.loaded; | |
o.loaded[f.num] = d.loaded; | |
o.loadedSum = o.loaded.reduce(function(b, a) { | |
return b + a; | |
}); | |
o.percentSum = (o.loadedSum / (d.total * o.n) * 100).toFixed(8); | |
f.total = d.total; | |
f.percent = (d.loaded / d.total * 100).toFixed(8); | |
f.runtime = window.performance.now() - f.startTime; | |
var r = (f.loaded / (f.runtime / 1000) * 8 / 1000000).toFixed(2); | |
q[k] = r; | |
} | |
} | |
function O() { | |
o.abortLoop = 1; | |
for (var b in speedtest.xhr) { | |
speedtest.xhr[b].abort(); | |
} | |
L(); | |
} | |
function J(a) { | |
if (o.n >= o.max) { | |
x = true; | |
return; | |
} | |
speedtest.xhr[a] = new XMLHttpRequest(); | |
A[a] = '//' + speedtest.servers_order[a] + ':' + i.getPortNumber(speedtest.servers_order[a]) + '/download?a=' + a + Math.random() * 100000000000000000; | |
speedtest.xhr[a].onreadystatechange = function() { | |
U(B, this); | |
} | |
; | |
speedtest.xhr[a].onabort = function() { | |
D(B, this); | |
} | |
; | |
speedtest.xhr[a].onerror = function() { | |
Q(B); | |
} | |
; | |
speedtest.xhr[a].num = a; | |
speedtest.xhr[a].startTime = window.performance.now(); | |
speedtest.xhr[a].onprogress = function(b) { | |
M(b, this); | |
} | |
; | |
speedtest.xhr[a].open('GET', A[a], true); | |
if (typeof speedtest.xhr[a].overrideMimeType !== 'undefined') { | |
speedtest.xhr[a].overrideMimeType('text/plain; charset=x-user-defined'); | |
} | |
speedtest.xhr[a].send(); | |
} | |
o.n = speedtest.conf.download_threads; | |
if (o.n > speedtest.servers_order.length) | |
o.n = speedtest.servers_order.length; | |
if (b0.test(navigator.userAgent)) | |
o.n = 6; | |
for (var E in speedtest.servers_order) { | |
if (E >= o.n) | |
break; | |
J(E); | |
} | |
v = setInterval(function() { | |
if (o.aborted.length + 1 >= o.n) { | |
i.downloadResults(); | |
i.bufferbloatTest('upload'); | |
clearInterval(v); | |
clearInterval(l); | |
clearInterval(s); | |
} | |
}, 300); | |
var N = window.performance.now() | |
, K = speedtest.data.dl_results; | |
l = setInterval(function() { | |
var b = speedtest.data.dl_results; | |
if (b == K && window.performance.now() - N > 10000) { | |
O(); | |
clearInterval(l); | |
clearInterval(s); | |
} else { | |
N = window.performance.now(); | |
K = speedtest.data.dl_results.length; | |
} | |
}, 200); | |
s = setInterval(function() { | |
if (q.length != speedtest.xhr.length) | |
return; | |
t = window.performance.now() - u; | |
if (t > speedtest.conf.dltime && !o.abortLoop) { | |
O(); | |
} | |
var d = Number(t / speedtest.conf.dltime * 100) | |
, f = q.reduce(function(b, a) { | |
return parseFloat((parseFloat(b) + parseFloat(a)).toFixed(2)); | |
}); | |
speedtest.data.dl_results.push(f); | |
var k = speedtest.data.buffer_bloat.reduce(function(b, a) { | |
return parseFloat((parseFloat(b) + parseFloat(a)).toFixed(2)); | |
}); | |
speedtest.data.dl_buffer_bloat.push(Math.round(k / speedtest.data.buffer_bloat.length)); | |
speedtest.set('dl_results', speedtest.data.dl_results); | |
speedtest.set('dl_buffer_bloat', speedtest.data.dl_buffer_bloat); | |
speedtest.data.buffer_bloat = speedtest.data.buffer_bloat.splice(-4); | |
if (!x && q.length == speedtest.xhr.length && d > 20 && (!C || t > C + 3000) && d < 80) { | |
C = t; | |
if (f >= o.maxRun()) { | |
o.n++; | |
J(o.n); | |
} else if (Number(o.percentSum) >= d) { | |
o.n++; | |
J(o.n); | |
} | |
} | |
}, Math.round(speedtest.conf.dltime / speedtest.conf.number_data_points)); | |
} | |
; | |
i.uploadTest = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return false; | |
var v = void 0 | |
, y = void 0 | |
, t = void 0 | |
, o = speedtest.data.dl_average / speedtest.conf.dl_run_rate | |
, I = 0 | |
, u = true; | |
if (o < 0.1) | |
o = 0.3; | |
if (o < 0.5) | |
speedtest.conf.up_results_buffer_length = 2; | |
if (o > 1) | |
o = 1; | |
var A = false; | |
if (typeof bowser !== 'undefined' && (bowser.name == 'Microsoft Edge' || bowser.name == 'Internet Explorer')) { | |
A = true; | |
} | |
var q = { | |
n: speedtest.conf.upload_threads, | |
max: speedtest.conf.up_max_threads, | |
abortLoop: 0, | |
aborted: [], | |
tmpResults: [], | |
tmpBufferBloat: [], | |
loaded: [], | |
loadedSum: 0, | |
runRate: speedtest.conf.up_run_rate, | |
runRateThreashold: speedtest.conf.up_rate_threashold, | |
maxRun: function maxRun() { | |
return q.runRate * x.length * q.runRateThreashold; | |
}, | |
percentSum: 0 | |
} | |
, x = [] | |
, C = false; | |
if (b0.test(navigator.userAgent)) { | |
q.n = 2; | |
} | |
if (speedtest.upfile === "") { | |
speedtest.upfile = i.getRandomString(Math.round(10000000 * o)); | |
} | |
speedtest.xhr = []; | |
var L = [] | |
, U = window.performance.now() | |
, D = []; | |
function Q() { | |
setTimeout(function() { | |
for (var b in speedtest.xhr) { | |
q.aborted.push(1); | |
speedtest.xhr[b] = {}; | |
} | |
}, 1000); | |
} | |
function M() { | |
for (var b in speedtest.xhr) { | |
speedtest.xhr[b].abort(); | |
} | |
Q(); | |
} | |
function O(b, a) { | |
if (a.readyState == 1) { | |
speedtest.set('buffer_bloat', [speedtest.data.ping_average]); | |
} | |
if (a.readyState == 4 && typeof a.aborted === 'undefined') { | |
D.push(1); | |
a.aborted = 1; | |
} | |
} | |
function J(b, a) { | |
D.push(1); | |
a.aborted = 1; | |
} | |
function E(a) { | |
if (q.n >= q.max) { | |
C = true; | |
return; | |
} | |
speedtest.xhr[a] = new XMLHttpRequest(); | |
L[a] = '//' + speedtest.servers_order[a] + ':' + i.getPortNumber(speedtest.servers_order[a]) + '/upload?a=' + a + Math.random() * 100000000000000000; | |
speedtest.xhr[a].onreadystatechange = function() { | |
O(B, this); | |
} | |
; | |
speedtest.xhr[a].upload.onabort = function() { | |
J(B, this); | |
} | |
; | |
speedtest.xhr[a].upload.onprogress = function(b) { | |
N(b, this, a); | |
} | |
; | |
speedtest.xhr[a].open('POST', L[a], true); | |
speedtest.xhr[a].send(speedtest.upfile); | |
} | |
function N(d, f, k) { | |
if (d.lengthComputable) { | |
var r = (d.loaded / d.total * 100).toFixed(2); | |
f.loaded = d.loaded; | |
f.total = d.total; | |
q.loaded[k] = d.loaded; | |
q.loadedSum = q.loaded.reduce(function(b, a) { | |
return b + a; | |
}); | |
q.percentSum = (q.loadedSum / (d.total * q.n) * 100).toFixed(8); | |
f.percent = r; | |
f.runtime = window.performance.now() - X; | |
var s = parseFloat((f.loaded / (f.runtime / 1000) * 8 / 1000000).toFixed(2)); | |
x[k] = s; | |
for (var l in speedtest.xhr) { | |
if (speedtest.xhr[l].upload.percent != 100) | |
u = false; | |
} | |
} | |
} | |
for (var K in speedtest.servers_order) { | |
if (K == q.n) | |
break; | |
E(K); | |
} | |
var X = window.performance.now(); | |
v = setInterval(function() { | |
if (D.length >= q.n) { | |
i.uploadResults(); | |
i.packetLossTest(); | |
clearInterval(v); | |
clearInterval(y); | |
clearInterval(t); | |
} | |
}, 300); | |
var V = window.performance.now() | |
, W = speedtest.data.up_results.length; | |
y = setInterval(function() { | |
var b = speedtest.data.up_results.length; | |
if (b == W && window.performance.now() - V > 10000) { | |
M(); | |
clearInterval(y); | |
clearInterval(t); | |
} else { | |
V = window.performance.now(); | |
W = speedtest.data.up_results.length; | |
} | |
}, 200); | |
var Y = false; | |
t = setInterval(function() { | |
var d = window.performance.now() - X; | |
if (A && !Y) { | |
if (d < 3000) { | |
return; | |
} | |
Y = true; | |
} | |
if (x.length < 1) { | |
return; | |
} | |
if (d > speedtest.conf.uptime) { | |
M(); | |
} else if (u) { | |
for (var f in speedtest.xhr) { | |
D.push(1); | |
} | |
} | |
var k = x.reduce(function(b, a) { | |
return parseFloat((parseFloat(b) + parseFloat(a)).toFixed(2)); | |
}); | |
speedtest.data.up_results.push(k); | |
var r = speedtest.data.buffer_bloat.reduce(function(b, a) { | |
return parseFloat((parseFloat(b) + parseFloat(a)).toFixed(2)); | |
}); | |
speedtest.data.up_buffer_bloat.push(Math.round(r / speedtest.data.buffer_bloat.length)); | |
var s = Math.round(d / speedtest.conf.uptime * 100); | |
speedtest.set('up_results', speedtest.data.up_results); | |
speedtest.set('up_buffer_bloat', speedtest.data.up_buffer_bloat); | |
speedtest.data.buffer_bloat = speedtest.data.buffer_bloat.splice(-4); | |
if (!C && x.length == speedtest.xhr.length && s > 50) { | |
if (k >= q.maxRun()) { | |
q.n++; | |
E(q.n); | |
} else if (Number(q.percentSum) >= s) { | |
q.n++; | |
E(q.n); | |
} | |
} | |
}, Math.round(speedtest.conf.uptime / speedtest.conf.number_data_points)); | |
} | |
; | |
i.packetLossTest = function() { | |
if (speedtest.canceled) | |
return false; | |
var s = 1 | |
, l = 1 | |
, v = speedtest.data.ping_average * 4; | |
if (v < 1000) | |
v = 1000; | |
i.socketConnect(speedtest.data.best_server_ip); | |
speedtest.servers[speedtest.data.best_server_ip].socket.on('pong', function(a, d) { | |
var f = parseFloat((window.performance.now() - a).toFixed(2)); | |
if (f < v) { | |
speedtest.data.packet_loss_results[l - 1] = f; | |
speedtest.set('packet_loss_results', speedtest.data.packet_loss_results); | |
l++; | |
} | |
var k = speedtest.data.packet_loss_results.filter(function(b) { | |
return b !== undefined; | |
}).length; | |
if (s < speedtest.data.packet_loss_total) { | |
s++; | |
speedtest.set('packet_loss_progress', parseFloat((s / speedtest.data.packet_loss_total * 100).toFixed(1))); | |
i.pingServer(speedtest.data.best_server_ip, 0); | |
} else { | |
speedtest.servers[speedtest.data.best_server_ip].socket.disconnect(); | |
var r = speedtest.data.packet_loss_results.filter(function(b) { | |
return b !== undefined; | |
}).length; | |
speedtest.set('packet_loss_percentage', parseFloat((100 - r / speedtest.data.packet_loss_total * 100).toFixed(1))); | |
i.mosResults(); | |
i.servicesResults(); | |
speedtest.canceled = true; | |
return true; | |
} | |
}); | |
i.pingOnConnect(speedtest.data.best_server_ip); | |
} | |
; | |
i.downloadResults = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return false; | |
speedtest.servers[speedtest.data.best_server_ip].socket.disconnect(); | |
var d = speedtest.data.dl_buffer_bloat.reduce(function(b, a) { | |
return parseFloat(parseFloat(b) + parseFloat(a)).toFixed(2); | |
}); | |
speedtest.set('dl_buffer_bloat_result', Math.round(d / speedtest.data.dl_buffer_bloat.length)); | |
var f = speedtest.data.dl_results.slice().reverse() | |
, k = 1 | |
, r = Math.round(f.length / 2); | |
for (var s in f) { | |
if (k <= r) { | |
speedtest.set('dl_total', parseFloat((parseFloat(speedtest.data.dl_total) + parseFloat(f[s])).toFixed(2))); | |
} else { | |
break; | |
} | |
k++; | |
} | |
f.sort(function(b, a) { | |
return a - b; | |
}); | |
speedtest.set('dl_max', f[0]); | |
speedtest.set('dl_average', parseFloat((speedtest.data.dl_total / r).toFixed(2))); | |
speedtest.set('dl_consistency', parseFloat((speedtest.data.dl_average / speedtest.data.dl_max * 100).toFixed(1))); | |
} | |
; | |
i.uploadResults = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return false; | |
speedtest.servers[speedtest.data.best_server_ip].socket.disconnect(); | |
var d = speedtest.data.up_buffer_bloat.reduce(function(b, a) { | |
return parseFloat((parseFloat(b) + parseFloat(a)).toFixed(2)); | |
}); | |
speedtest.set('up_buffer_bloat_result', Math.round(d / speedtest.data.up_buffer_bloat.length)); | |
var f = speedtest.data.up_results.slice().reverse() | |
, k = Math.round(f.length / 2) | |
, r = 1; | |
for (var s in f) { | |
if (r <= k) { | |
speedtest.set('up_total', parseFloat(parseFloat(speedtest.data.up_total) + parseFloat(f[s]))); | |
} else { | |
break; | |
} | |
r++; | |
} | |
f.sort(function(b, a) { | |
return a - b; | |
}); | |
speedtest.set('up_max', f[0]); | |
speedtest.set('up_average', parseFloat((speedtest.data.up_total / k).toFixed(2))); | |
speedtest.set('up_consistency', parseFloat((speedtest.data.up_average / speedtest.data.up_max * 100).toFixed(1))); | |
} | |
; | |
i.mosResults = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return false; | |
var b = 93.2 | |
, a = speedtest.data.ping_average + speedtest.data.jitter_average * 2 + 10; | |
if (a < 160) { | |
b = b - a / 40; | |
} else { | |
b = b - (a - 120) / 10; | |
} | |
b = b - speedtest.data.packet_loss_percentage * 2.5; | |
speedtest.set('mos', parseFloat(parseFloat(1 + 0.035 * b + 0.000007 * b * (b - 60) * (100 - b)).toFixed(1))); | |
} | |
; | |
i.servicesResults = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return false; | |
var b = { | |
netflix: 0, | |
hulu: 0, | |
youtube: 0, | |
voip: 0, | |
skype: 0, | |
gaming: 0, | |
skype_video: 0, | |
live_streaming: 0 | |
}; | |
for (var a in speedtest.services) { | |
if (speedtest.data.dl_average > parseFloat(speedtest.services[a].min_dl) && parseFloat(speedtest.services[a].min_dl) > 0) | |
b[a] = 1; | |
if (speedtest.data.mos > parseFloat(speedtest.services[a].min_mo) && parseFloat(speedtest.services[a].min_mo) > 0) | |
b[a] = 1; | |
if (speedtest.data.ping_average < parseFloat(speedtest.services[a].max_pg) && parseFloat(speedtest.services[a].max_pg) > 0) | |
b[a] = 1; | |
if (speedtest.data.up_average > parseFloat(speedtest.services[a].min_up) && parseFloat(speedtest.services[a].min_up) > 0) | |
b[a] = 1; | |
} | |
speedtest.set('services', JSON.stringify(b)); | |
} | |
; | |
i.setBestServer = function() { | |
'use strict'; | |
if (speedtest.canceled) | |
return P4a.h; | |
var d = Object.keys(speedtest.servers).sort(function(b, a) { | |
return speedtest.servers[b].latency - speedtest.servers[a].latency; | |
}); | |
for (var f in d) { | |
if (speedtest.servers[d[f]].latency > 0) { | |
speedtest.set(P4a.g, speedtest.servers[d[f]].ip); | |
break; | |
} | |
} | |
} | |
; | |
i.get_isp = function() { | |
'use strict'; | |
var d = new XMLHttpRequest() | |
, f = P4a.j + window.cbdomain + '/widgets' | |
, k = 'data=isps'; | |
d.onload = function(b) { | |
var a = JSON.parse(d.responseText); | |
if (typeof a.client_ip !== P4a.F) | |
speedtest.set('client_ip', a.client_ip); | |
if (typeof a.isp_id !== P4a.F) | |
speedtest.set('isp_id', a.isp_id); | |
if (typeof a.my_rating !== P4a.F) | |
speedtest.set(e0, Number(a.my_rating)); | |
if (typeof a.ratings !== P4a.F) | |
speedtest.set('isp_rating', Number(a.ratings)); | |
if (typeof a.isp !== P4a.F) | |
speedtest.set('isp', a.isp); | |
} | |
; | |
d.open(R, f, P4a.z); | |
d.withCredentials = P4a.z; | |
d.setRequestHeader(S, T); | |
d.send(k); | |
} | |
; | |
i.send_data = function(d) { | |
'use strict'; | |
var f = document.getElementById('bz_wd_speedtest').getAttribute('data-cid'); | |
if (!f) | |
return false; | |
var k = 'cid=' + f + '&'; | |
for (var r in speedtest.data) { | |
if (d) { | |
if (r === 'isp_id' || r === 'my_isp_rating') { | |
k += r + '=' + speedtest.data[r] + '&'; | |
} | |
} else { | |
k += r + '=' + speedtest.data[r] + '&'; | |
} | |
} | |
if (typeof bowser !== 'undefined') { | |
k += 'browser_name=' + bowser.name + '&browser_version=' + bowser.version + '&'; | |
} | |
var s = new XMLHttpRequest() | |
, l = '//' + window.cbdomain + '/tracking/speedtest/data'; | |
s.open('POST', l, true); | |
s.onload = function(b) { | |
var a = JSON.parse(s.responseText); | |
if (typeof a.id !== 'undefined') | |
speedtest.set('results_id', a.id); | |
} | |
; | |
s.withCredentials = true; | |
s.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); | |
s.send(k); | |
return true; | |
} | |
; | |
i.mk_imp = function(b) { | |
'use strict'; | |
var a = document.createElement("img"); | |
a.setAttribute('src', P4a.j + window.cbdomain + '/tracking/speedtest/im?cid=' + b); | |
a.setAttribute('alt', 'na'); | |
a.setAttribute('height', '0px'); | |
a.setAttribute('width', '0px'); | |
document.body.appendChild(a).style.display = 'none'; | |
return P4a.z; | |
} | |
; | |
i.mk_feedback_vote = function(b, a, d) { | |
'use strict'; | |
if (!speedtest.data.results_id) { | |
return false; | |
} | |
var f = new XMLHttpRequest() | |
, k = '//' + window.cbdomain + '/tracking/speedtest/feedback' | |
, r = 'cid=' + b + '&id=' + speedtest.data.results_id + '&up_vote=' + a + '&down_vote=' + d; | |
f.open('POST', k, true); | |
f.withCredentials = true; | |
f.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); | |
f.send(r); | |
return true; | |
} | |
; | |
i.mk_contact_license = function(k, r, s, l, v, y, t) { | |
'use strict'; | |
if (i.isEmpty(k) || i.isEmpty(r) || i.isEmpty(s) || i.isEmpty(l) || i.isEmpty(v)) { | |
return P4a.h; | |
} | |
if (i.isEmpty(y) || localStorage.getItem(g0) !== null ) { | |
setTimeout(function() { | |
t(P4a.z); | |
}, 2000); | |
} else { | |
(function() { | |
var b = k + ' ' + r | |
, a = new XMLHttpRequest() | |
, d = P4a.j + window.cbdomain + '/contact/speedtest-licensing' | |
, f = 'name=' + b + '&email=' + s + '&phone_number=' + l + '&website=' + v; | |
a.open(R, d, P4a.z); | |
a.withCredentials = P4a.z; | |
a.setRequestHeader(S, T); | |
a.send(f); | |
a.onload = function() { | |
t(P4a.z); | |
} | |
; | |
a.onerror = function() { | |
t(false); | |
} | |
; | |
a.onabort = function() { | |
t(P4a.h); | |
} | |
; | |
a.onloadend = function() { | |
if (a.status == 404) { | |
t(P4a.h); | |
} | |
if (a.status == 500) { | |
t(P4a.h); | |
} | |
} | |
; | |
})(); | |
} | |
} | |
; | |
i.mk_feedback_text = function(b, a) { | |
'use strict'; | |
if (!speedtest.data.results_id) | |
return false; | |
var d = new XMLHttpRequest() | |
, f = '//' + window.cbdomain + '/tracking/speedtest/feedback' | |
, k = 'cid=' + b + '&id=' + speedtest.data.results_id + '&feedback=' + a; | |
d.open('POST', f, true); | |
d.withCredentials = true; | |
d.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); | |
d.send(k); | |
return true; | |
} | |
; | |
i.mk_ck = function(b) { | |
'use strict'; | |
var a = new XMLHttpRequest() | |
, d = P4a.j + window.cbdomain + '/tracking/speedtest/ck' | |
, f = d0 + b; | |
a.open(R, d, P4a.z); | |
a.withCredentials = P4a.z; | |
a.setRequestHeader(S, T); | |
a.send(f); | |
return P4a.z; | |
} | |
; | |
i.readCookie = function(b) { | |
'use strict'; | |
b += '='; | |
for (var a = document.cookie.split(/;\s*/), d = a.length - 1; d >= 0; d--) { | |
if (!a[d].indexOf(b)) { | |
return a[d].replace(b, ''); | |
} | |
} | |
} | |
; | |
i.is_supported_browser = function() { | |
'use strict'; | |
if (typeof window.WebSocket === c0) { | |
return P4a.h; | |
} | |
return P4a.z; | |
} | |
; | |
} | |
, function(b, a) { | |
var d = [P4a.w]; | |
b.exports = d; | |
} | |
, function(b, a) { | |
var d = 8443 | |
, f = 8080 | |
, k = { | |
"sp2.bizx.info": { | |
"location": "San Francisco, CA", | |
"country": P4a.w, | |
"ip": "sp2.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp3.bizx.info": { | |
"location": "New York, NY", | |
"country": P4a.w, | |
"ip": "sp3.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp4.bizx.info": { | |
"location": "Newark, NJ", | |
"country": P4a.w, | |
"ip": "sp4.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp5.bizx.info": { | |
"location": "Dallas, TX", | |
"country": P4a.w, | |
"ip": "sp5.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp6.bizx.info": { | |
"location": "San Jose, CA", | |
"country": P4a.w, | |
"ip": "sp6.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp7.bizx.info": { | |
"location": "Atlanta, GA", | |
"country": P4a.w, | |
"ip": "sp7.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp8.bizx.info": { | |
"location": "Miami, FL", | |
"country": P4a.w, | |
"ip": "sp8.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp9.bizx.info": { | |
"location": "Chicago, IL", | |
"country": P4a.w, | |
"ip": "sp9.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
}, | |
"sp10.bizx.info": { | |
"location": "Los Angeles, CA", | |
"country": P4a.w, | |
"ip": "sp10.bizx.info", | |
"port": f, | |
"portSSL": d, | |
"socket": P4a.h, | |
"count": 0, | |
"latency": P4a.h | |
} | |
}; | |
b.exports = k; | |
} | |
, function(v, y, t) { | |
t(5); | |
var o = t(3) | |
, I = t(2) | |
, u = t(1) | |
, A = P4a.H | |
, q = document.getElementById(A) | |
, x = q.getAttribute(P4a.G); | |
window.speedtest = { | |
canceled: true, | |
ck: function ck() { | |
u.mk_ck(x); | |
}, | |
conf: { | |
dltime: 20000, | |
dl_max_threads: 20, | |
dl_run_rate: 10, | |
dl_rate_threashold: 0.8, | |
download_threads: 10, | |
down_results_buffer_length: 20, | |
upload_threads: 6, | |
uptime: 20000, | |
up_results_buffer_length: 1, | |
number_data_points: 240, | |
up_max_threads: 12, | |
up_run_rate: 4, | |
up_rate_threashold: 0.8 | |
}, | |
create_servers_order: function create_servers_order() { | |
var d = 32 | |
, f = Object.keys(speedtest.servers).sort(function(b, a) { | |
return speedtest.servers[b].latency - speedtest.servers[a].latency; | |
}); | |
for (var k in f) { | |
if (speedtest.servers[f[k]].count < 1) { | |
f.splice(k, 1); | |
} | |
} | |
while (speedtest.servers_order.length < d) { | |
speedtest.servers_order.push.apply(speedtest.servers_order, f); | |
if (speedtest.servers_order.length > d) { | |
speedtest.servers_order.splice(d); | |
} | |
} | |
}, | |
data: { | |
results_id: false, | |
client_ip: u.readCookie('rip'), | |
best_server_ip: '', | |
dl_results: [], | |
up_results: [], | |
ping_results: [], | |
ping_run_total: 200, | |
ping_progress: 0, | |
ping_total: 0, | |
jitter_results: [], | |
jitter_min: 0, | |
jitter_max: 0, | |
jitter_total: 0, | |
jitter_average: 0, | |
ping_average: 0, | |
ping_min: 0, | |
ping_max: 0, | |
dl_average: 0, | |
dl_total: 0, | |
up_average: 0, | |
up_total: 0, | |
packet_loss_results: [], | |
packet_loss_progress: 0, | |
packet_loss_total: 200, | |
packet_loss_percentage: 0, | |
dl_max: 0, | |
dl_consistency: 0, | |
up_max: 0, | |
up_consistency: 0, | |
mos: 0, | |
isp: '', | |
isp_id: 0, | |
isp_rating: 0, | |
my_isp_rating: 0, | |
services: '', | |
buffer_bloat: [], | |
dl_buffer_bloat: [], | |
up_buffer_bloat: [], | |
dl_buffer_bloat_result: 0, | |
up_buffer_bloat_result: 0 | |
}, | |
feedback_text: function feedback_text(b) { | |
u.mk_feedback_text(x, b); | |
}, | |
feedback_vote: function feedback_vote(b, a) { | |
u.mk_feedback_vote(x, b, a); | |
}, | |
contact_license: function contact_license(a, d, f, k, r, s, l) { | |
u.mk_contact_license(a, d, f, k, r, s, function(b) { | |
l(b); | |
}); | |
}, | |
get_isp: function get_isp() { | |
u.get_isp(); | |
}, | |
imp: function imp() { | |
u.mk_imp(x); | |
}, | |
prefetch: function() { | |
window.onload = function() { | |
for (var b in o) { | |
var a = document.createElement('link'); | |
a.href = '//' + o[b].ip; | |
a.rel = 'dns-prefetch'; | |
document.getElementsByTagName('head')[0].appendChild(a); | |
} | |
} | |
; | |
}(), | |
send: function send(b) { | |
b = b || false; | |
u.send_data(b); | |
}, | |
localized_countries: I, | |
servers: o, | |
servers_order: [], | |
set: function set(b, a) { | |
speedtest.data[b] = a; | |
var d = document.getElementById("speedtest_" + b); | |
if (!d) | |
return false; | |
d.value = a; | |
d.dispatchEvent(u.e); | |
}, | |
ssl: false, | |
start: function start(a) { | |
speedtest.canceled = false; | |
if (!a) { | |
u.findBestServer(); | |
setTimeout(function() { | |
for (var b in speedtest.servers) { | |
if (speedtest.servers[b].socket.connected) { | |
speedtest.servers[b].socket.disconnect(); | |
} | |
} | |
u.setBestServer(); | |
if (!speedtest.data.best_server_ip) { | |
speedtest.canceled = true; | |
speedtest.set('best_server_ip', 0); | |
return false; | |
} | |
speedtest.create_servers_order(); | |
u.pingTest(); | |
}, 5000); | |
} else { | |
speedtest.set('best_server_ip', a); | |
speedtest.create_servers_order(); | |
u.pingTest(); | |
} | |
}, | |
stop: function stop() { | |
speedtest.canceled = true; | |
for (var b in speedtest.xhr) { | |
speedtest.xhr[b].abort(); | |
} | |
if (typeof speedtest.data.best_server_ip !== 'undefined') { | |
if (_typeof(speedtest.servers[speedtest.data.best_server_ip].socket) === 'object') { | |
speedtest.servers[speedtest.data.best_server_ip].socket.disconnect(); | |
} | |
} | |
}, | |
supported_browser: u.is_supported_browser(), | |
upfile: '', | |
vis: function() { | |
var a, d, f = { | |
hidden: "visibilitychange", | |
webkitHidden: "webkitvisibilitychange", | |
mozHidden: "mozvisibilitychange", | |
msHidden: "msvisibilitychange" | |
}; | |
for (a in f) { | |
if (a in document) { | |
d = f[a]; | |
break; | |
} | |
} | |
return function(b) { | |
if (b) | |
document.addEventListener(d, b); | |
return !document[a]; | |
} | |
; | |
}(), | |
xhr: [] | |
}; | |
u.hiddenInputs(); | |
u.getProtocol(); | |
} | |
, function(I, u, A) { | |
var q, x; | |
(function(r) { | |
var s = Date.now ? Date.now() : +new Date() | |
, l = r.performance || {} | |
, v = [] | |
, y = {} | |
, t = function t(b, a) { | |
var d = 0 | |
, f = v.length | |
, k = []; | |
for (; d < f; d++) { | |
if (v[d][b] == a) { | |
k.push(v[d]); | |
} | |
} | |
return k; | |
} | |
, o = function o(b, a) { | |
var d = v.length, f; | |
while (d--) { | |
f = v[d]; | |
if (f.entryType == b && (a === void 0 || f.name == a)) { | |
v.splice(d, 1); | |
} | |
} | |
} | |
; | |
if (!l.now) { | |
l.now = l.webkitNow || l.mozNow || l.msNow || function() { | |
return (Date.now ? Date.now() : +new Date()) - s; | |
} | |
; | |
} | |
if (!l.mark) { | |
l.mark = l.webkitMark || function(b) { | |
var a = { | |
name: b, | |
entryType: 'mark', | |
startTime: l.now(), | |
duration: 0 | |
}; | |
v.push(a); | |
y[b] = a; | |
} | |
; | |
} | |
if (!l.measure) { | |
l.measure = l.webkitMeasure || function(b, a, d) { | |
a = y[a].startTime; | |
d = y[d].startTime; | |
v.push({ | |
name: b, | |
entryType: 'measure', | |
startTime: a, | |
duration: d - a | |
}); | |
} | |
; | |
} | |
if (!l.getEntriesByType) { | |
l.getEntriesByType = l.webkitGetEntriesByType || function(b) { | |
return t('entryType', b); | |
} | |
; | |
} | |
if (!l.getEntriesByName) { | |
l.getEntriesByName = l.webkitGetEntriesByName || function(b) { | |
return t('name', b); | |
} | |
; | |
} | |
if (!l.clearMarks) { | |
l.clearMarks = l.webkitClearMarks || function(b) { | |
o('mark', b); | |
} | |
; | |
} | |
if (!l.clearMeasures) { | |
l.clearMeasures = l.webkitClearMeasures || function(b) { | |
o('measure', b); | |
} | |
; | |
} | |
r.performance = l; | |
if (true) { | |
!(q = [], | |
x = function() { | |
return l; | |
} | |
.apply(u, q), | |
x !== undefined && (I.exports = x)); | |
} | |
})(window); | |
} | |
]); | |
speedtest.services = { | |
"netflix": { | |
"id": 1, | |
"name": "Netflix", | |
"min_dl": "5.00", | |
"min_up": "0.00", | |
"min_mo": "0.0", | |
"max_pg": 0 | |
}, | |
"hulu": { | |
"id": 2, | |
"name": "Hulu", | |
"min_dl": "1.50", | |
"min_up": "0.00", | |
"min_mo": "0.0", | |
"max_pg": 0 | |
}, | |
"youtube": { | |
"id": 3, | |
"name": "YouTube", | |
"min_dl": "1.00", | |
"min_up": "0.00", | |
"min_mo": "0.0", | |
"max_pg": 0 | |
}, | |
"voip": { | |
"id": 4, | |
"name": "VoIP", | |
"min_dl": "0.00", | |
"min_up": "0.00", | |
"min_mo": "3.9", | |
"max_pg": 0 | |
}, | |
"skype": { | |
"id": 5, | |
"name": "Skype", | |
"min_dl": "0.00", | |
"min_up": "0.00", | |
"min_mo": "3.9", | |
"max_pg": 0 | |
}, | |
"gaming": { | |
"id": 6, | |
"name": "Gaming", | |
"min_dl": "0.00", | |
"min_up": "0.00", | |
"min_mo": "0.0", | |
"max_pg": 100 | |
}, | |
"skype_video": { | |
"id": 7, | |
"name": "Skype Video", | |
"min_dl": "0.00", | |
"min_up": "1.00", | |
"min_mo": "0.0", | |
"max_pg": 0 | |
}, | |
"live_streaming": { | |
"id": 8, | |
"name": "Live Streaming", | |
"min_dl": "0.00", | |
"min_up": "5.00", | |
"min_mo": "0.0", | |
"max_pg": 0 | |
} | |
}; | |
speedtest.user_country = 'JO'; | |
var file = document.createElement("link"); | |
file.setAttribute("rel", "stylesheet"); | |
file.setAttribute("type", "text/css"); | |
file.setAttribute("href", "//" + window.cbdomain + "/app/css/widgets/templates/speedtest/voipreview/speedtest.min.css"); | |
if (typeof file !== "undefined") | |
; | |
document.getElementsByTagName("head")[0].appendChild(file); | |
/* Copyright 2016 Bizx Partners LLC dba. All rights reserved. */ | |
"use strict"; | |
var o2a = { | |
'd': true, | |
'g': false | |
}; | |
var _createClass = function() { | |
function h(a, e) { | |
for (var b = 0; b < e.length; b++) { | |
var f = e[b]; | |
f.enumerable = f.enumerable || o2a.g; | |
f.configurable = o2a.d; | |
if ("value" in f) | |
f.writable = o2a.d; | |
Object.defineProperty(a, f.key, f); | |
} | |
} | |
return function(a, e, b) { | |
if (e) | |
h(a.prototype, e); | |
if (b) | |
h(a, b); | |
return a; | |
} | |
; | |
}(); | |
function _classCallCheck(a, e) { | |
if (!(a instanceof e)) { | |
throw new TypeError("Cannot call a class as a function"); | |
} | |
} | |
(function(b) { | |
var f = {}; | |
function h(a) { | |
if (f[a]) | |
return f[a].exports; | |
var e = f[a] = { | |
exports: {}, | |
id: a, | |
loaded: false | |
}; | |
b[a].call(e.exports, e, e.exports, h); | |
e.loaded = true; | |
return e.exports; | |
} | |
h.m = b; | |
h.c = f; | |
h.p = ""; | |
return h(0); | |
})([function(a, e, b) { | |
b(1); | |
b(4); | |
b(2); | |
b(5); | |
a.exports = b(3); | |
} | |
, function(l, j, i) { | |
var k = function k(a) { | |
var e = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/i | |
, b = e.test(a + a); | |
return b; | |
} | |
, n = function() { | |
function h() { | |
'use strict'; | |
var a = arguments.length <= 0 || arguments[0] === undefined ? { | |
intro: { | |
visible: true, | |
content: false | |
} | |
} : arguments[0]; | |
_classCallCheck(this, h); | |
if (k(a.intro.content)) { | |
a.intro.visible = false; | |
a.intro.content = false; | |
} | |
if (!("content" in a.intro)) | |
a.intro.content = false; | |
this.options = a; | |
} | |
_createClass(h, [{ | |
key: "render", | |
value: function render() { | |
'use strict'; | |
var a = ''; | |
var e = ''; | |
var b = ''; | |
var f = ''; | |
if (this.options.intro.visible === true) { | |
a = this.options.intro.content; | |
} | |
e = i(2).speedTest; | |
b = i(3).like; | |
f = "\n\n\t " + e + "\n\n\t " + b + "\n\n\t "; | |
return f; | |
} | |
}]); | |
return h; | |
}(); | |
j.Template = n; | |
} | |
, function(a, e) { | |
var b = "\n\t<!-- Speed Test Main Container -->\n\t<div id=\"speed-test-container\" class=\"speedtest-container\">\n\n\t <!-- Loading Bar -->\n\t <div id=\"loading-bar\" class=\"loading-wrap\">\n\t <div class=\"progress-wrap\">\n\t <div class=\"progress-test\">\n\t </div>\n\t </div>\n\t </div>\n\n\t <!-- Test Containers -->\n\t <div id=\"speed-test\" class=\"speedtest row filters\" style=\"visibility:hidden\">\n\t <!-- Latency Test-->\n\t <div id=\"latency\" class=\"latency bg-gray-1\">\n\t <p class=\"test-title\">\n\t Latency / Ping\n\t <span class=\"tooltipster-tooltip icon-info-circled\" data-tip=\"latency\"\n\t title=\"We measure latency through a round trip time measured\n\t over web sockets. This results in a close approximation to ping.\n\t Lower values are better.\">\n\t </span>\n\t </p>\n\n\t <div class=\"arc-gauge\"></div>\n\n\t <div class=\"primary-metric-label\">\n\t Latency Progress\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"latency-progress\" title=\"These are the latency\n\t measurements as the test progresses. Lower values are better and\n\t fewer peaks are better.\">\n\t </span>\n\t </div>\n\n\t <div class=\"secondary-metric-label\">\n\t Jitter: <span id=\"jitter\">0</span> ms\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"latency-secondary-metric\" title=\"Lower jitter values\n\t generally indicate higher connection quality.\"></span>\n\t </div>\n\t </div>\n\n\t <!-- Download Test-->\n\t <div id=\"download\" class=\"download bg-gray-2\">\n\t <p class=\"test-title\">\n\t Download Speed\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"download\" title=\"We measure download speed to better\n\t understand the capabilities of your broadband connection. Higher\n\t values are better.\">\n\t </span>\n\t </p>\n\n\t <div class=\"arc-gauge\"></div>\n\n\t <div class=\"primary-metric-label\">\n\t Download Progress\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"download-progress\" title=\"These are the download rates as\n\t the test progresses. Higher values are better.\">\n\t </span>\n\t </div>\n\n\t <div class=\"secondary-metric-label\">\n\t Bufferbloat: <span id=\"dl-bufferbloat\">0</span> ms\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"download-secondary-metric\"\n\t title=\"Lower bufferbloat values generally indicate higher\n\t connection quality.\">\n\t </span>\n\t </div>\n\t </div>\n\n\t <!-- Upload Test-->\n\t <div id=\"upload\" class=\"upload bg-gray-1\">\n\t <p class=\"test-title\">\n\t Upload Speed\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"upload\" title=\"We measure upload speed to better\n\t understand the capabilities of your broadband connection. Higher\n\t values are better.\">\n\t </span>\n\t </p>\n\n\t <div class=\"arc-gauge\"></div>\n\n\t <div class=\"primary-metric-label\">\n\t Upload Progress\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"packet-upload-progress\" data-tip=\"upload-progress\"\n\t title=\"These are the upload rates as the test progresses.\n\t Higher values are better.\">\n\t </span>\n\t </div>\n\n\t <div class=\"secondary-metric-label\">\n\t Bufferbloat: <span id=\"ul-bufferbloat\">0</span> ms\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"upload-secondary-metric\" title=\"Lower bufferbloat values\n\t generally indicate higher connection quality.\">\n\t </span>\n\t </div>\n\t </div>\n\n\t <!-- Packet Loss Test-->\n\t <div id=\"packet-loss\" class=\"packet-loss bg-gray-2\">\n\t <p class=\"test-title\">\n\t Packet Loss\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"packet-loss\" title=\"We estimate packet loss to better\n\t understand the capabilities of your broadband connection. 0% is\n\t optimal.\">\n\t </span>\n\t </p>\n\n\t <div class=\"arc-gauge\"></div>\n\n\t <div class=\"primary-metric-label\">\n\t Packet Loss Progress\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"packet-loss-progress\" title=\"These are the packet loss\n\t events as we detect them. A straight line at 0% is\n\t optimal.\"></span>\n\t </div>\n\n\t <div class=\"secondary-metric-label\">\n\t MOS: <span id=\"mos\">0</span>\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"packet-loss-secondary-metric\"\n\t title=\"MOS indicates expected VoIP call quality on a scale from 1\n\t to 5. A higher value is better.\">\n\t </span>\n\t </div>\n\t </div>\n\n\t </div>\t<!-- .Speedtest container -->\n\n\t <div class=\"speedtest-warnings\" style=\"visibility:hidden\">\n\t <p>tests loading</p>\n\t </div>\n\t <div class=\"speedtest-errors\" style=\"visibility:hidden\">\n\t <p>For accurate results, please don't do anything until the test finishes</p>\n\t <button id=\"reload_speedtest_error\" class=\"reload-error\"\n\t type=\"button\">\n\t <span class=\"icon-back-in-time\">\n\t <span>TEST AGAIN</span>\n\t </span>\n\t </button>\n\t </div>\n\n\t <!-- Recommended Services Slider -->\n\t <div id=\"results-services\" class=\"row results-services-container\"\n\t style=\"display:none\">\n\n\t <!-- Tabs -->\n\t <div id=\"results-services-tabs\" class=\"row\">\n\t <div id=\"results-services-supported-tab\"\n\t class=\"results-services-tab active-tab \">\n\t Services Supported\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"services-supported\"\n\t title=\"The services listed in this\n\t tab are compatible with your Internet connection, based on your Speed Test results.\">\n\t </span>\n\t </div>\n\t <div id=\"results-services-unsupported-tab\"\n\t class=\"results-services-tab\">\n\t Services Not Recommended\n\t <span class=\"tooltipster-tooltip icon-info-circled\"\n\t data-tip=\"services-not-recommended\"\n\t title=\"You may experience less than optimal performance for the services listed in this tab due to your Internet connection's limitations, based on your Speed Test results.\"></span>\n\t </div>\n\t </div>\n\n\t <!-- Slider -->\n\t <div id=\"results-services-body\">\n\n\t <div id=\"results-services-supported\"\n\t class=\"results-services-wrapper\">\n\n\t <div class=\"results-services slick-s\"></div>\n\n\t <div class=\"results-empty\">\n\t Did you know that there is more to the Internet than watching pages load all day? There are no services that are recommended for your Internet connection.\n\t </div>\n\t </div>\n\n\t <div id=\"results-services-unsupported\"\n\t class=\"results-services-wrapper\">\n\t <div class=\"results-services slick-s\"></div>\n\t <div class=\"results-empty\">\n\t Nice Internet connection you have there, friend!\n\t The Speed Test has determined that all services are currently supported with your current Internet connection.\n\t </div>\n\t </div>\n\t <div class=\"prev-serv\"></div>\n\t <div class=\"next-serv\"></div>\n\t </div>\n\t </div>\n\n\t <!-- Test Progress Bar -->\n\t <div id=\"speed-test-progress\"\n\t class=\"row text-center speedtest-progress\"\n\t style=\"visibility: hidden;\">\n\n\t <span class=\"icon-home start-house\"></span>\n\n\t <div class=\" text-center\">\n\t <div style=\"padding:0 0 15px 15px;\">\n\t <span class=\"ip-isp-text ip-info\">\n\t IP: <span id=\"ip\"></span>\n\t <span class=\"tooltipster-tooltip icon-info-circled\" data-tip=\"ip\"\n\t title=\"You appear to be running the test from this IP address.\">\n\t </span>\n\t </span>\n\t </div>\n\n\t <div id=\"master-progress-bar-alt\" style=\"margin-top:3px\"\n\t class=\"download master-prog-bar-alt\"></div>\n\n\t <div id=\"master-progress-bar\"\n\t class=\"master-prog-bar latency\"></div>\n\n\t <div id=\"isp-stars\" style=\"padding:5px 0 0 15px;\">\n\t <span id=\"isp-stars-placeholder\" class=\"ip-isp-text stars-info\">\n\t ISP: <span id=\"isp\"></span><span></span>\n\t <span class=\"tooltipster-tooltip icon-info-circled\" data-tip=\"isp\"\n\t title=\"This is your Internet Service Provider, based on your\n\t IP address. Please rate them!\">\n\t </span>\n\t </span>\n\t <span class=\"the-internet-progress\">\n\t Internet\n\t </span>\n\t </div>\n\t </div>\n\n\t <span class=\"icon-globe-1 internet-end\"></span>\n\n\t </div><!-- .Test Progress Bar -->\n\n\t <!-- Result Details -->\n\t <div id=\"results-details\" style=\"display:none\">\n\t <div id=\"results-details-roundtrip-container\"\n\t class=\"results-details-container\">\n\t <div class=\"results-row-header\">\n\t <h2>Round Trip Time</h2>\n\t <div class=\"results-callout\">\n\t <ul>\n\t <li id=\"ping-average-callout\">\n\t <label>Ping Average</label>\n\t <span class=\"value display-ping\"></span>\n\t </li>\n\t <li id=\"jitter-average-callout\">\n\t <label>Jitter Average</label>\n\t <span class=\"value display-jitter\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\n\t <div class=\"results-chart-container\">\n\t <div id=\"resultsRoundTripChartLegend\" class=\"chart-legend\">\n\t <ul>\n\t <li>Ping</li>\n\t <li>Jitter</li>\n\t </ul>\n\t </div>\n\n\t <figure id=\"resultsRoundtripChart\" style=\"height: 400px;\">\n\t <span class=\"axis-label y-axis-label\">\n\t Time in milliseconds\n\t </span>\n\t <span class=\"axis-label x-axis-label\">\n\t Packet\n\t </span>\n\t </figure>\n\t </div>\n\n\t <div class=\"results-details-section\">\n\t <div class=\"description\">\n\t Often referred to as Latency, Ping, or RTT,\n\t Round Trip Time describes the amount of time it takes for a\n\t signal/packet to travel from a specific source to a specific\n\t destination. A number of factors can affect your round trip\n\t time, including the amount of traffic on your network, the\n\t physical distance between the source and destination, and the\n\t medium used for transmission (ie. fiber, copper, wireless,\n\t etc.). Hover your mouse over the line graphs to view specific\n\t results.\n\t </div>\n\t <ul>\n\t <li>\n\t <label>Ping Max: </label>\n\t <span class=\"value display-ping-max\"></span>\n\t </li>\n\t <li><label>Jitter Max: </label>\n\t <span class=\"value display-jitter-max\"></span>\n\t </li>\n\t <li>\n\t <label>Ping Min: </label>\n\t <span class=\"value display-ping-min\"></span>\n\t </li>\n\t <li>\n\t <label>Jitter Min: </label>\n\t <span class=\"value display-jitter-min\"></span>\n\t </li>\n\t <li><label>Packets Tested: </label>\n\t <span class=\"value display-ping-sample\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\n\t <div id=\"results-details-download-container\"\n\t class=\"results-details-container\">\n\t <div class=\"results-row-header\">\n\t <h2>Download Quality</h2>\n\t <div class=\"results-callout\">\n\t <ul>\n\t <li id=\"dlspeed-average-callout\">\n\t <label>Speed Average: </label>\n\t <span class=\"value display-dl-speed-avg\"></span>\n\t </li>\n\t <li id=\"dlbb-average-callout\">\n\t <label>Bufferbloat Average: </label>\n\t <span class=\"value display-dl-bufferbloat\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\n\t <div class=\"results-chart-container\">\n\t <div id=\"resultsDownloadChartLegend\" class=\"chart-legend\">\n\t <ul>\n\t <li>Speed</li>\n\t <li>Bufferbloat</li>\n\t </ul>\n\t </div>\n\t <figure id=\"resultsDownloadChart\" style=\"height: 400px;\">\n\t <span class=\"axis-label y-axis-label\">\n\t Speed in Mbps\n\t </span>\n\t <span class=\"axis-label x-axis-label\">\n\t Packet\n\t </span>\n\t </figure>\n\t </div>\n\n\t <div class=\"results-details-section\">\n\t <div class=\"description\">\n\t Download speed measures\n\t how many 1's and 0's you can receive per second. Bufferbloat\n\t is the undesirable latency that comes from a router or other\n\t network equipment buffering too much data. It is a huge drag\n\t on Internet performance. Download Consistency is a percentage\n\t measurement of the maximum download speed vs. your average\n\t speed. If through the test your download test was consistent\n\t then this number would be close to 100%. Hover your mouse over\n\t the line graphs to view specific results.\n\t </div>\n\t <ul>\n\t <li>\n\t <label>Speed Max: </label>\n\t <span class=\"value display-dl-speed-max\"></span>\n\t </li>\n\t <li>\n\t <label>Bufferbloat Max: </label>\n\t <span class=\"value display-dl-bufferbloat-max\"></span>\n\t </li>\n\t <li>\n\t <label>Speed Min: </label>\n\t <span class=\"value display-dl-speed-min\"></span>\n\t </li>\n\t <li>\n\t <label><Bufferbloat Min: </label>\n\t <span class=\"value display-dl-bufferbloat-min\"></span>\n\t </li>\n\t <li>\n\t <label>Consistency: </label>\n\t <span class=\"value display-dl-consistency\"></span>\n\t </li>\n\t <li>\n\t <label>Samples Tested: </label>\n\t <span class=\"value display-dl-sample\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\n\t </div>\n\n\t <div id=\"results-details-upload-container\"\n\t class=\"results-details-container\">\n\t <div class=\"results-row-header\">\n\t <h2>Upload Quality</h2>\n\t <div class=\"results-callout\">\n\t <ul>\n\t <li id=\"upspeed-average-callout\"><label>\n\t Speed Average: </label>\n\t <span class=\"value display-up-speed-avg\"></span>\n\t </li>\n\t <li id=\"upbb-average-callout\"><label>\n\t Bufferbloat Average: </label>\n\t <span class=\"value display-up-bufferbloat\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\t <div class=\"results-chart-container\">\n\t <div id=\"resultsUploadChartLegend\" class=\"chart-legend\">\n\t <ul>\n\t <li>Speed</li>\n\t <li>Bufferbloat</li>\n\t </ul>\n\t </div>\n\t <figure id=\"resultsUploadChart\" style=\"height: 400px;\">\n\t <span class=\"axis-label y-axis-label\">\n\t Speed in Mbps\n\t </span>\n\t <span class=\"axis-label x-axis-label\">\n\t Packet\n\t </span>\n\t </figure>\n\t </div>\n\n\t <div class=\"results-details-section\">\n\t <div class=\"description\">\n\t Upload speed measures how many 1's and 0's you\n\t can send per second. Bufferbloat is the undesirable latency\n\t that comes from a router or other network equipment buffering\n\t too much data. It is a huge drag on Internet performance.\n\t Upload Consistency is a percentage measurement of the maximum\n\t upload speed vs. your average speed. If through the test your\n\t upload test was consistent then this number would be close to\n\t 100%. Hover your mouse over the line graphs to view specific\n\t results.\n\t </div>\n\t <ul>\n\t <li>\n\t <label>Speed Max: </label>\n\t <span class=\"value display-up-speed-max\"></span>\n\t </li>\n\t <li>\n\t <label><Bufferbloat Max: </label>\n\t <span class=\"value display-up-bufferbloat-max\"></span>\n\t </li>\n\t <li>\n\t <label>Speed Min: </label>\n\t <span class=\"value display-up-speed-min\"></span>\n\t </li>\n\t <li>\n\t <label>Bufferbloat Min: </label>\n\t <span class=\"value display-up-bufferbloat-min\"></span>\n\t </li>\n\t <li>\n\t <label>Consistency: </label>\n\t <span class=\"value display-up-consistency\"></span>\n\t </li>\n\t <li>\n\t <label>Samples Tested: </label>\n\t <span class=\"value display-up-sample\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\n\t <div id=\"results-details-internetquality-container\"\n\t class=\"results-details-container\">\n\t <div class=\"results-row-header\">\n\t <h2>Internet Quality</h2>\n\t <div class=\"results-callout\">\n\t <ul>\n\t <li id=\"packet-loss-callout\"><label>\n\t Packet Loss: </label>\n\t <span class=\"value display-packet-loss\"></span>\n\t </li>\n\t <li id=\"mos-callout\"><label>MOS: </label>\n\t <span class=\"value display-mos\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\t <div class=\"results-chart-container\">\n\t <figure id=\"serversTested\" class=\"results-table\">\n\t <table>\n\t <thead>\n\t <th>Server Location</th>\n\t <th>Response Time</th>\n\t </thead>\n\t <tbody>\n\t </tbody>\n\t </table>\n\t </figure>\n\t </div>\n\t <div class=\"results-details-section\">\n\t <div class=\"description\">\n\t <p>\n\t How well is your\n\t internet connection performing overall? Internet Connection\n\t Quality is determined by Packet Loss, Jitter, and Latency.\n\t MOS (mean opinion score) unifies these numbers in terms of\n\t expected VoIP call quality on a scale of 1 to 5, where 1 is\n\t poor and 5 is excellent.\n\t </p>\n\t <p>\n\t In the table on the side,\n\t you can also see how \"far\" away in terms of ping times\n\t you are from our points of presence. and by extension from\n\t the points of presence of other service providers. Lower\n\t numbers are better.\n\t </p>\n\t </div>\n\t <ul>\n\t <li>\n\t <label>Packets Tested: </label>\n\t <span class=\"value display-packet-loss-sample\"></span>\n\t </li>\n\t </ul>\n\t </div>\n\t </div>\n\n\t <div id=\"results-details-conclusion-container\"\n\t class=\"results-details-container\">\n\t <div class=\"results-row-header\">\n\t <h2>In Conclusion</h2>\n\t <div class=\"results-callout\">\n\t </div>\n\t </div>\n\t <div class=\"results-chart-container\">\n\t <figure id=\"servicesTested\" class=\"results-table\">\n\t <table>\n\t <thead>\n\t <th>Service</th>\n\t <th>Ping</th>\n\t <th>Download Speed</th>\n\t <th>Upload Speed</th>\n\t <th>MOS</th>\n\t </thead>\n\t <tbody>\n\t </tbody>\n\t </table>\n\t </figure>\n\t </div>\n\n\t <div class=\"results-details-section\" style=\"display:none\">\n\t <div class=\"description\"></div>\n\t <div class=\"description\">\n\t The results of your speed test reflect how\n\t strong your Internet connection is, in addition to what\n\t Internet services are supported with your current connection.\n\t </div>\n\t </div>\n\n\t <div id=\"test-status-expanded\" class=\"test-status-expanded row\"\n\t style=\"display:none\">\n\t <button id=\"reload_speedtest_exp\"\n\t class=\"reload-expanded\" type=\"button\">\n\t <span class=\"icon-back-in-time\">\n\t <span>TEST AGAIN</span>\n\t </span>\n\t </button>\n\t <button id=\"hide_results\" class=\"hide-results\" type=\"button\">\n\t <span class=\"icon-chart-area\">\n\t <span>HIDE RESULTS</span>\n\t </span>\n\t </button>\n\t </div>\n\n\t </div>\n\n\t </div>\n\n\t <div id=\"test-status\" class=\"test-status\" style=\"display:none\">\n\t <button id=\"begin_speedtest\" type=\"button\"\n\t style=\"overflow:hidden\" disabled=\"true\">\n\t <span class=\"icon-off-1\">\n\t <span>TEST NOW</span>\n\t </span>\n\t <div class=\"shine\"></div>\n\t </button>\n\n\n\t <button id=\"reload_speedtest\" class=\"hide reload-collapsed\"\n\t type=\"button\">\n\t <span class=\"icon-back-in-time\">\n\t <span>TEST AGAIN</span>\n\t </span>\n\t </button>\n\n\t <button id=\"results_speedtest\" class=\"hide results-collapsed\"\n\t type=\"button\" style=\"overflow:hidden\">\n\t <span class=\"icon-chart-area\">\n\t <span>VIEW DETAILS</span>\n\t </span>\n\t <div class=\"shine\"></div>\n\t </button>\n\n\t </div>\n\n\t <div class=\"bz-wrapper\" style=\"display:none\">\n\t <button class=\"license before-test\">\n\t <span></span>\n\t <i class=\"icon-help\" aria-hidden=\"true\"></i>\n\t </button>\n\t </div>\n\n\t</div> <!-- .Speed Test Main Container -->\n\n\t<!-- Licence Popup Container -->\n\t<div class=\"bzx-popup\" style=\"display:none\" role=\"alert\">\n\t <div class=\"bzx-popup-container\">\n\t <p class=\"bzx-pop-text-msg\">\n\t Thank you for your interest in a test license.\n\t <br/>\n\t Please fill out the form below to submit a request.\n\t </p>\n\n\t <div class=\"row\">\n\t <div class=\"large-6 columns\">\n\t <input type=\"text\" class=\"required\" name=\"first_name\"\n\t placeholder=\"First Name*\"\n\t required/>\n\t <div class=\"bzx-c-label\">First Name*</div>\n\t </div>\n\t <div class=\"large-6 columns\">\n\t <input type=\"text\" class=\"required\" name=\"last_name\"\n\t placeholder=\"Last Name*\" required/>\n\t <div class=\"bzx-c-label\">Last Name*</div>\n\t </div>\n\t </div>\n\n\t <div class=\"row\">\n\t <div class=\"large-12 columns\">\n\t <input type=\"email\" name=\"email\" class=\"required\"\n\t placeholder=\"Email*\" required/>\n\t <div class=\"bzx-c-label\">Email*</div>\n\t </div>\n\t </div>\n\n\t <div class=\"row\">\n\t <div class=\"large-6 columns\">\n\t <input type=\"text\" name=\"phone\" class=\"required\"\n\t placeholder=\"Phone Number*\" required/>\n\t <div class=\"bzx-c-label\">Phone Number*</div>\n\t </div>\n\n\t <div class=\"large-6 columns\">\n\t <input type=\"text\" name=\"website\" class=\"required\"\n\t placeholder=\"Website*\" required/>\n\t <div class=\"bzx-c-label\">Website*</div>\n\t </div>\n\t </div>\n\n\t <!--\n\t <div class=\"row\">\n\t <div class=\"large-12 columns\">\n\t <textarea name=\"comments\" rows=\"4\" placeholder=\"Questions?\"></textarea>\n\t <div class=\"bzx-c-label\">Questions</div>\n\t </div>\n\t </div>\n\t -->\n\n\t <div class=\"row\">\n\t <div class=\"large-12 columns\">\n\t <input type=\"text\" name=\"business\" class=\"obligatory\"\n\t placeholder=\"Business Name*\" required/>\n\t <div class=\"bzx-c-label\">Business Name*</div>\n\t </div>\n\t </div>\n\n\t <ul class=\"bzx-buttons\">\n\t <li>\n\t <a id=\"bzx-pop-close\" class=\"bzx-close\" href=\"#\">Close</a>\n\t </li>\n\t <li>\n\t <a id=\"bzx-pop-send\" href=\"#\">Contact</a>\n\t </li>\n\t </ul>\n\n\t <a href=\"#0\" class=\"bzx-close bzx-close-x\">\n\t <i class=\"icon-cancel\" aria-hidden=\"true\"></i>\n\t </a>\n\t </div>\n\t</div>\n\t<!-- Licence Popup Container -->"; | |
e.speedTest = b; | |
} | |
, function(a, e) { | |
var b = "\n\t<!-- Like & Dislike Buttons -->\n\t<div id=\"info-bottom\" class=\"row info-box-borders\" style=\"display:none\">\n\n\t <div class=\"medium-4 columns like-buttons\">\n\n\t <!-- Like & Dislike Buttons -->\n\t <div class=\"row vr-like-button\">\n\n\t <p class=\"vr-feed-header\">What do you think of our speed test?</p>\n\t <p class=\"vr-feed-subheader\">Send us your feedback!</p>\n\n\t <button class=\"vr-like-speedtest\" type=\"button\">\n\t <span class=\"icon-thumbs-up-alt\">\n\t <span>Like</span></span>\n\t </button>\n\n\t <button class=\"vr-dislike-speedtest\" type=\"button\">\n\t <span class=\"icon-thumbs-down-alt\">\n\t <span>Dislike</span></span>\n\t </button>\n\n\t </div>\n\n\t <!-- # Modal # -->\n\t <div class=\"bz-wid-modal-window vr-modal\">\n\t <div class=\"biz-wid-modal-wrap\">\n\t <!-- Header -->\n\t <div class=\"biz-wid-modal-wrap row\">\n\t <div class=\"medium-3 columns\"> </div>\n\t <div class=\"medium-6 columns\">\n\n\t <div id=\"feedbackModalTitle\">\n\t <h2 class=\"bz-wid-feedback-modal-title\">\n\t Thank you for your feedback!\n\t </h2>\n\t <p class=\"feedback-modal-header\">\n\t Would you care to let us know what did you\n\t <span class=\"vr-vote-type\">like<span>\n\t </p>\n\t </div>\n\n\t <!-- Form Output -->\n\t <div id=\"feedback-modal-results\"></div>\n\n\t </div>\n\t <div class=\"medium-3 columns\"> </div>\n\t </div>\n\n\t <!-- Feedback Form -->\n\t <div class=\"biz-wid-modal-wrap row\">\n\t <div class=\"medium-3 columns\"> </div>\n\t <div class=\"medium-6 columns\">\n\t <form id=\"vrFeedbackForm\">\n\n\t <!-- Checkboxes -->\n\t <div class=\"vr-feed-checkboxes\">\n\t <input id=\"vr-feed-visuals\" class=\"checkbox-align-fix\"\n\t type=\"checkbox\" value=\"visuals\">\n\t <label for=\"vr-feed-visuals\">\n\t Visuals\n\t </label>\n\t <input id=\"vr-feed-results\" class=\"checkbox-align-fix\"\n\t type=\"checkbox\" value=\"results\">\n\t <label for=\"vr-feed-results\">\n\t Results\n\t </label>\n\t <input id=\"vr-feed-comparisons\" class=\"checkbox-align-fix\"\n\t type=\"checkbox\" value=\"comparisons\">\n\t <label for=\"vr-feed-comparisons\">\n\t Comparisons\n\t </label>\n\t <input id=\"vr-feed-friendly\" class=\"checkbox-align-fix\"\n\t type=\"checkbox\" value=\"user experience\">\n\t <label for=\"vr-feed-friendly\">\n\t Experience\n\t </label>\n\t </div>\n\n\t <br>\n\n\t <!-- Comments -->\n\t <div class=\"input-group\">\n\t <textarea id=\"vr-feed-comments\"\n\t placeholder=\"Enter your message here\"></textarea>\n\t </div>\n\n\t <!-- Form Buttons -->\n\t <div class=\"biz-wid-modal-wrap row\">\n\t <div class=\"medium-6 columns\">\n\t <div id=\"vr-send-feedback\"\n\t class=\"button expand send-feedback-btn\"\n\t onclick=\"sendFeedbackText()\">\n\t Send\n\t </div>\n\t </div>\n\t <div class=\"medium-6 columns\">\n\t <div id=\"vr-close-feedmodal\"\n\t class=\"button expand close-feedmodal-btn\">\n\t Close\n\t </div>\n\t </div>\n\t </div>\n\n\t </form>\n\n\t <!-- Close Button (Finished) -->\n\t <div class=\"biz-wid-modal-wrap row\">\n\t <div class=\"medium-12 columns\">\n\t <div id=\"vr-finished-feedmodal\"\n\t class=\"button expand success-feedmodal-btn\">\n\t Close\n\t </div>\n\t </div>\n\t </div>\n\n\t </div>\n\t <div class=\"medium-3 columns\"> </div>\n\t </div>\n\n\t </div>\n\t </div>\n\t <!-- .end # Modal # -->\n\n\t <script>\n\n\t // Clean 'undefined' and null elements in array\n\t function cleanArray(actual) {\n\t \"use strict\";\n\t var newArray = new Array();\n\t for (var i = 0; i < actual.length; i++) {\n\t if (actual[i]) {\n\t newArray.push(actual[i]);\n\t }\n\t }\n\t return newArray;\n\t }\n\n\t // Send feedback function\n\t function sendFeedbackText(){\n\t \"use strict\";\n\t var checkboxes = [];\n\t var comments;\n\t var voteType;\n\t var msg;\n\n\t voteType = window.bjqy('#feedback-type').val();\n\n\t // Get checkboxes values\n\t checkboxes = [\n\t window.bjqy('#vr-feed-visuals:checked').val(),\n\t window.bjqy('#vr-feed-results:checked').val(),\n\t window.bjqy('#vr-feed-comparisons:checked').val(),\n\t window.bjqy('#vr-feed-friendly:checked').val()\n\t ];\n\n\t checkboxes = cleanArray(checkboxes);\n\n\t // Get possible comments\n\t comments = window.bjqy('#vr-feed-comments').val();\n\n\t // Quick client side validation\n\t if(comments.length > 1000) {\n\t window.bjqy(\"#feedback-modal-results\").html('<div data-alert' +\n\t ' class=\"alert-box alert\">' +\n\t 'Sorry, but your message seems to be too long.<br>' +\n\t 'Please, try again with a shorter message.' +\n\t '</div>');\n\t return null;\n\t }else if(checkboxes.length > 10){\n\t window.bjqy(\"#feedback-modal-results\").html('<div data-alert' +\n\t ' class=\"alert-box alert\">' +\n\t 'Sorry, but there seems to be an error in the form ' +\n\t 'that you submited.<br>' +\n\t 'Please, try again later...' +\n\t '</div>');\n\t return null;\n\t }else if(checkboxes.length > 0){\n\t for(var i = 0; i < checkboxes.length; i++){\n\t if(checkboxes[i].length > 100) {\n\t window.bjqy(\"#feedback-modal-results\").html('<div data-alert' +\n\t ' class=\"alert-box alert\">' +\n\t 'Sorry, but there seems to be an error in the form ' +\n\t 'that you submited.<br>' +\n\t 'Please, try again later...' +\n\t '</div>');\n\t return null;\n\t }\n\t }\n\t }else if(checkboxes.length === 0 && comments.length === 0){\n\t window.bjqy(\"#feedback-modal-results\").html('<div data-alert' +\n\t ' class=\"alert-box secondary\">' +\n\t 'Please share your thoughts with us' + \"...\" +\n\t '</div>');\n\t return null;\n\t }\n\n\t // Set text message to send to the server\n\t if(checkboxes.length > 0){\n\t msg = \"User \" + voteType + \"s: \" + String(checkboxes) + \".\";\n\t msg.replace(/(^,)|(,window.bjqy)/g, \"\");\n\t }\n\n\t if(checkboxes.length > 0 && comments.length > 0) {\n\t msg = msg + \" - \" + comments;\n\t }else if(checkboxes.length === 0 && comments.length >0){\n\t msg = comments;\n\t }\n\n\t window.bjqy(\"#vrFeedbackForm\").hide();\n\t window.bjqy(\"#feedbackModalTitle\").hide();\n\t window.bjqy(\"#vr-finished-feedmodal\").show();\n\n\t window.bjqy(\"#feedback-modal-results\").html('<h2>' +\n\t 'Your feedback has been submited!' + '</h2>' +\n\t '<p class=\"feedback-modal-header\"> We really ' +\n\t 'appreciate your opinion. Thank you!</p>');\n\n\t speedtest.feedback_text(msg);\n\t }\n\t </script>\n\n\t</div>\n\n\t<div class=\"medium-8 columns\">\n\t <div class=\"info-feed-box\">\n\t Confused about your results? Read below to help clarify any questions you\n\t may have about your speed test results. Find out what you can do to help\n\t better your connection, or follow our step by step process to troubleshoot\n\t your connection for any weak points.\n\t </div>\n\t</div>\n\n\t</div>\n\t"; | |
e.like = b; | |
} | |
, function(l, j, i) { | |
(function(e) { | |
'use strict'; | |
var b = i(1) | |
, f = { | |
intro: { | |
visible: false, | |
content: false | |
} | |
} | |
, h = new b.Template(f); | |
e(function($) { | |
$('#bz_wd_speedtest').html(h.render()).promise().done(function() { | |
$('#bz_wd_speedtest').removeAttr('style'); | |
}); | |
}); | |
})(window.bjqy); | |
} | |
, function(a, e) { | |
var b = "\n\t<div id=\"speed-test-intro\" class=\"row speedtest-intro\">\n\t <div class=\"medium-3 columns\">\n\t <h1 class=\"st-intro-header\">\n\t Speed Test\n\t </h1>\n\t </div>\n\t <div class=\"medium-9 columns\">\n\t <p class=\"st-intro-text hide-for-small-only\">\n\t Our custom speed test will help determine how efficient your\n\t Internet connection is. We run a variety of tests to accurately\n\t compute what your Internet connection can handle and provide\n\t you with real-time results. Our test calculates\n\t <a href=\"/speedtest/definition/latency\">Latency/Ping</a>,\n\t <a href=\"/speedtest/definition/jitter\">Jitter</a>,\n\t <a href=\"/speedtest/definition/download-speed\">Download Speed</a>,\n\t <a href=\"/speedtest/definition/upload-speed\">Upload Speed</a>,\n\t <a href=\"/speedtest/definition/buffer-bloat\">Buffer Bloat</a>, and\n\t <a href=\"/speedtest/definition/packet-loss\">Packet Loss</a>.\n\t Click \"Test Now\" to get started!\n\t </p>\n\t </div>\n\t</div>"; | |
e.intro = b; | |
} | |
]); | |
// SVGPathSeg API polyfill | |
// https://github.com/progers/pathseg | |
// | |
// This is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from | |
// SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec | |
// changes which were implemented in Firefox 43 and Chrome 46. | |
(function() { | |
"use strict"; | |
if (!("SVGPathSeg" in window)) { | |
// Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSeg | |
window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) { | |
this.pathSegType = type; | |
this.pathSegTypeAsLetter = typeAsLetter; | |
this._owningPathSegList = owningPathSegList; | |
} | |
SVGPathSeg.PATHSEG_UNKNOWN = 0; | |
SVGPathSeg.PATHSEG_CLOSEPATH = 1; | |
SVGPathSeg.PATHSEG_MOVETO_ABS = 2; | |
SVGPathSeg.PATHSEG_MOVETO_REL = 3; | |
SVGPathSeg.PATHSEG_LINETO_ABS = 4; | |
SVGPathSeg.PATHSEG_LINETO_REL = 5; | |
SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6; | |
SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7; | |
SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8; | |
SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9; | |
SVGPathSeg.PATHSEG_ARC_ABS = 10; | |
SVGPathSeg.PATHSEG_ARC_REL = 11; | |
SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12; | |
SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13; | |
SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14; | |
SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15; | |
SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16; | |
SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17; | |
SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18; | |
SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19; | |
// Notify owning PathSegList on any changes so they can be synchronized back to the path element. | |
SVGPathSeg.prototype._segmentChanged = function() { | |
if (this._owningPathSegList) | |
this._owningPathSegList.segmentChanged(this); | |
} | |
window.SVGPathSegClosePath = function(owningPathSegList) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CLOSEPATH, "z", owningPathSegList); | |
} | |
SVGPathSegClosePath.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegClosePath.prototype.toString = function() { | |
return "[object SVGPathSegClosePath]"; | |
} | |
SVGPathSegClosePath.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter; | |
} | |
SVGPathSegClosePath.prototype.clone = function() { | |
return new SVGPathSegClosePath(undefined); | |
} | |
window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_ABS, "M", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
} | |
SVGPathSegMovetoAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegMovetoAbs.prototype.toString = function() { | |
return "[object SVGPathSegMovetoAbs]"; | |
} | |
SVGPathSegMovetoAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; | |
} | |
SVGPathSegMovetoAbs.prototype.clone = function() { | |
return new SVGPathSegMovetoAbs(undefined,this._x,this._y); | |
} | |
Object.defineProperty(SVGPathSegMovetoAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegMovetoAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_MOVETO_REL, "m", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
} | |
SVGPathSegMovetoRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegMovetoRel.prototype.toString = function() { | |
return "[object SVGPathSegMovetoRel]"; | |
} | |
SVGPathSegMovetoRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; | |
} | |
SVGPathSegMovetoRel.prototype.clone = function() { | |
return new SVGPathSegMovetoRel(undefined,this._x,this._y); | |
} | |
Object.defineProperty(SVGPathSegMovetoRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegMovetoRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_ABS, "L", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
} | |
SVGPathSegLinetoAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegLinetoAbs.prototype.toString = function() { | |
return "[object SVGPathSegLinetoAbs]"; | |
} | |
SVGPathSegLinetoAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; | |
} | |
SVGPathSegLinetoAbs.prototype.clone = function() { | |
return new SVGPathSegLinetoAbs(undefined,this._x,this._y); | |
} | |
Object.defineProperty(SVGPathSegLinetoAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegLinetoAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_REL, "l", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
} | |
SVGPathSegLinetoRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegLinetoRel.prototype.toString = function() { | |
return "[object SVGPathSegLinetoRel]"; | |
} | |
SVGPathSegLinetoRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; | |
} | |
SVGPathSegLinetoRel.prototype.clone = function() { | |
return new SVGPathSegLinetoRel(undefined,this._x,this._y); | |
} | |
Object.defineProperty(SVGPathSegLinetoRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegLinetoRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, "C", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._x1 = x1; | |
this._y1 = y1; | |
this._x2 = x2; | |
this._y2 = y2; | |
} | |
SVGPathSegCurvetoCubicAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoCubicAbs.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoCubicAbs]"; | |
} | |
SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoCubicAbs.prototype.clone = function() { | |
return new SVGPathSegCurvetoCubicAbs(undefined,this._x,this._y,this._x1,this._y1,this._x2,this._y2); | |
} | |
Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "x1", { | |
get: function() { | |
return this._x1; | |
}, | |
set: function(x1) { | |
this._x1 = x1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "y1", { | |
get: function() { | |
return this._y1; | |
}, | |
set: function(y1) { | |
this._y1 = y1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "x2", { | |
get: function() { | |
return this._x2; | |
}, | |
set: function(x2) { | |
this._x2 = x2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicAbs.prototype, "y2", { | |
get: function() { | |
return this._y2; | |
}, | |
set: function(y2) { | |
this._y2 = y2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, "c", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._x1 = x1; | |
this._y1 = y1; | |
this._x2 = x2; | |
this._y2 = y2; | |
} | |
SVGPathSegCurvetoCubicRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoCubicRel.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoCubicRel]"; | |
} | |
SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoCubicRel.prototype.clone = function() { | |
return new SVGPathSegCurvetoCubicRel(undefined,this._x,this._y,this._x1,this._y1,this._x2,this._y2); | |
} | |
Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "x1", { | |
get: function() { | |
return this._x1; | |
}, | |
set: function(x1) { | |
this._x1 = x1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "y1", { | |
get: function() { | |
return this._y1; | |
}, | |
set: function(y1) { | |
this._y1 = y1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "x2", { | |
get: function() { | |
return this._x2; | |
}, | |
set: function(x2) { | |
this._x2 = x2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicRel.prototype, "y2", { | |
get: function() { | |
return this._y2; | |
}, | |
set: function(y2) { | |
this._y2 = y2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, "Q", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._x1 = x1; | |
this._y1 = y1; | |
} | |
SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoQuadraticAbs]"; | |
} | |
SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { | |
return new SVGPathSegCurvetoQuadraticAbs(undefined,this._x,this._y,this._x1,this._y1); | |
} | |
Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "x1", { | |
get: function() { | |
return this._x1; | |
}, | |
set: function(x1) { | |
this._x1 = x1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticAbs.prototype, "y1", { | |
get: function() { | |
return this._y1; | |
}, | |
set: function(y1) { | |
this._y1 = y1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, "q", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._x1 = x1; | |
this._y1 = y1; | |
} | |
SVGPathSegCurvetoQuadraticRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoQuadraticRel]"; | |
} | |
SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x1 + " " + this._y1 + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { | |
return new SVGPathSegCurvetoQuadraticRel(undefined,this._x,this._y,this._x1,this._y1); | |
} | |
Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "x1", { | |
get: function() { | |
return this._x1; | |
}, | |
set: function(x1) { | |
this._x1 = x1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticRel.prototype, "y1", { | |
get: function() { | |
return this._y1; | |
}, | |
set: function(y1) { | |
this._y1 = y1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_ABS, "A", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._r1 = r1; | |
this._r2 = r2; | |
this._angle = angle; | |
this._largeArcFlag = largeArcFlag; | |
this._sweepFlag = sweepFlag; | |
} | |
SVGPathSegArcAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegArcAbs.prototype.toString = function() { | |
return "[object SVGPathSegArcAbs]"; | |
} | |
SVGPathSegArcAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._r1 + " " + this._r2 + " " + this._angle + " " + (this._largeArcFlag ? "1" : "0") + " " + (this._sweepFlag ? "1" : "0") + " " + this._x + " " + this._y; | |
} | |
SVGPathSegArcAbs.prototype.clone = function() { | |
return new SVGPathSegArcAbs(undefined,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag); | |
} | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "r1", { | |
get: function() { | |
return this._r1; | |
}, | |
set: function(r1) { | |
this._r1 = r1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "r2", { | |
get: function() { | |
return this._r2; | |
}, | |
set: function(r2) { | |
this._r2 = r2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "angle", { | |
get: function() { | |
return this._angle; | |
}, | |
set: function(angle) { | |
this._angle = angle; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "largeArcFlag", { | |
get: function() { | |
return this._largeArcFlag; | |
}, | |
set: function(largeArcFlag) { | |
this._largeArcFlag = largeArcFlag; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcAbs.prototype, "sweepFlag", { | |
get: function() { | |
return this._sweepFlag; | |
}, | |
set: function(sweepFlag) { | |
this._sweepFlag = sweepFlag; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_ARC_REL, "a", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._r1 = r1; | |
this._r2 = r2; | |
this._angle = angle; | |
this._largeArcFlag = largeArcFlag; | |
this._sweepFlag = sweepFlag; | |
} | |
SVGPathSegArcRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegArcRel.prototype.toString = function() { | |
return "[object SVGPathSegArcRel]"; | |
} | |
SVGPathSegArcRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._r1 + " " + this._r2 + " " + this._angle + " " + (this._largeArcFlag ? "1" : "0") + " " + (this._sweepFlag ? "1" : "0") + " " + this._x + " " + this._y; | |
} | |
SVGPathSegArcRel.prototype.clone = function() { | |
return new SVGPathSegArcRel(undefined,this._x,this._y,this._r1,this._r2,this._angle,this._largeArcFlag,this._sweepFlag); | |
} | |
Object.defineProperty(SVGPathSegArcRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcRel.prototype, "r1", { | |
get: function() { | |
return this._r1; | |
}, | |
set: function(r1) { | |
this._r1 = r1; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcRel.prototype, "r2", { | |
get: function() { | |
return this._r2; | |
}, | |
set: function(r2) { | |
this._r2 = r2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcRel.prototype, "angle", { | |
get: function() { | |
return this._angle; | |
}, | |
set: function(angle) { | |
this._angle = angle; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcRel.prototype, "largeArcFlag", { | |
get: function() { | |
return this._largeArcFlag; | |
}, | |
set: function(largeArcFlag) { | |
this._largeArcFlag = largeArcFlag; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegArcRel.prototype, "sweepFlag", { | |
get: function() { | |
return this._sweepFlag; | |
}, | |
set: function(sweepFlag) { | |
this._sweepFlag = sweepFlag; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, "H", owningPathSegList); | |
this._x = x; | |
} | |
SVGPathSegLinetoHorizontalAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { | |
return "[object SVGPathSegLinetoHorizontalAbs]"; | |
} | |
SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x; | |
} | |
SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { | |
return new SVGPathSegLinetoHorizontalAbs(undefined,this._x); | |
} | |
Object.defineProperty(SVGPathSegLinetoHorizontalAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, "h", owningPathSegList); | |
this._x = x; | |
} | |
SVGPathSegLinetoHorizontalRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegLinetoHorizontalRel.prototype.toString = function() { | |
return "[object SVGPathSegLinetoHorizontalRel]"; | |
} | |
SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x; | |
} | |
SVGPathSegLinetoHorizontalRel.prototype.clone = function() { | |
return new SVGPathSegLinetoHorizontalRel(undefined,this._x); | |
} | |
Object.defineProperty(SVGPathSegLinetoHorizontalRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, "V", owningPathSegList); | |
this._y = y; | |
} | |
SVGPathSegLinetoVerticalAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegLinetoVerticalAbs.prototype.toString = function() { | |
return "[object SVGPathSegLinetoVerticalAbs]"; | |
} | |
SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._y; | |
} | |
SVGPathSegLinetoVerticalAbs.prototype.clone = function() { | |
return new SVGPathSegLinetoVerticalAbs(undefined,this._y); | |
} | |
Object.defineProperty(SVGPathSegLinetoVerticalAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, "v", owningPathSegList); | |
this._y = y; | |
} | |
SVGPathSegLinetoVerticalRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegLinetoVerticalRel.prototype.toString = function() { | |
return "[object SVGPathSegLinetoVerticalRel]"; | |
} | |
SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._y; | |
} | |
SVGPathSegLinetoVerticalRel.prototype.clone = function() { | |
return new SVGPathSegLinetoVerticalRel(undefined,this._y); | |
} | |
Object.defineProperty(SVGPathSegLinetoVerticalRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, "S", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._x2 = x2; | |
this._y2 = y2; | |
} | |
SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoCubicSmoothAbs]"; | |
} | |
SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { | |
return new SVGPathSegCurvetoCubicSmoothAbs(undefined,this._x,this._y,this._x2,this._y2); | |
} | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "x2", { | |
get: function() { | |
return this._x2; | |
}, | |
set: function(x2) { | |
this._x2 = x2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothAbs.prototype, "y2", { | |
get: function() { | |
return this._y2; | |
}, | |
set: function(y2) { | |
this._y2 = y2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, "s", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
this._x2 = x2; | |
this._y2 = y2; | |
} | |
SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoCubicSmoothRel]"; | |
} | |
SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x2 + " " + this._y2 + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { | |
return new SVGPathSegCurvetoCubicSmoothRel(undefined,this._x,this._y,this._x2,this._y2); | |
} | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "x2", { | |
get: function() { | |
return this._x2; | |
}, | |
set: function(x2) { | |
this._x2 = x2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoCubicSmoothRel.prototype, "y2", { | |
get: function() { | |
return this._y2; | |
}, | |
set: function(y2) { | |
this._y2 = y2; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, "T", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
} | |
SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoQuadraticSmoothAbs]"; | |
} | |
SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { | |
return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined,this._x,this._y); | |
} | |
Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothAbs.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) { | |
SVGPathSeg.call(this, SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, "t", owningPathSegList); | |
this._x = x; | |
this._y = y; | |
} | |
SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(SVGPathSeg.prototype); | |
SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { | |
return "[object SVGPathSegCurvetoQuadraticSmoothRel]"; | |
} | |
SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { | |
return this.pathSegTypeAsLetter + " " + this._x + " " + this._y; | |
} | |
SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { | |
return new SVGPathSegCurvetoQuadraticSmoothRel(undefined,this._x,this._y); | |
} | |
Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, "x", { | |
get: function() { | |
return this._x; | |
}, | |
set: function(x) { | |
this._x = x; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathSegCurvetoQuadraticSmoothRel.prototype, "y", { | |
get: function() { | |
return this._y; | |
}, | |
set: function(y) { | |
this._y = y; | |
this._segmentChanged(); | |
}, | |
enumerable: true | |
}); | |
// Add createSVGPathSeg* functions to SVGPathElement. | |
// Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathElement. | |
SVGPathElement.prototype.createSVGPathSegClosePath = function() { | |
return new SVGPathSegClosePath(undefined); | |
} | |
SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { | |
return new SVGPathSegMovetoAbs(undefined,x,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { | |
return new SVGPathSegMovetoRel(undefined,x,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { | |
return new SVGPathSegLinetoAbs(undefined,x,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { | |
return new SVGPathSegLinetoRel(undefined,x,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { | |
return new SVGPathSegCurvetoCubicAbs(undefined,x,y,x1,y1,x2,y2); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { | |
return new SVGPathSegCurvetoCubicRel(undefined,x,y,x1,y1,x2,y2); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { | |
return new SVGPathSegCurvetoQuadraticAbs(undefined,x,y,x1,y1); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { | |
return new SVGPathSegCurvetoQuadraticRel(undefined,x,y,x1,y1); | |
} | |
SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { | |
return new SVGPathSegArcAbs(undefined,x,y,r1,r2,angle,largeArcFlag,sweepFlag); | |
} | |
SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { | |
return new SVGPathSegArcRel(undefined,x,y,r1,r2,angle,largeArcFlag,sweepFlag); | |
} | |
SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { | |
return new SVGPathSegLinetoHorizontalAbs(undefined,x); | |
} | |
SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { | |
return new SVGPathSegLinetoHorizontalRel(undefined,x); | |
} | |
SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { | |
return new SVGPathSegLinetoVerticalAbs(undefined,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { | |
return new SVGPathSegLinetoVerticalRel(undefined,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { | |
return new SVGPathSegCurvetoCubicSmoothAbs(undefined,x,y,x2,y2); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { | |
return new SVGPathSegCurvetoCubicSmoothRel(undefined,x,y,x2,y2); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { | |
return new SVGPathSegCurvetoQuadraticSmoothAbs(undefined,x,y); | |
} | |
SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { | |
return new SVGPathSegCurvetoQuadraticSmoothRel(undefined,x,y); | |
} | |
} | |
if (!("SVGPathSegList" in window)) { | |
// Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGPathSegList | |
window.SVGPathSegList = function(pathElement) { | |
this._pathElement = pathElement; | |
this._list = this._parsePath(this._pathElement.getAttribute("d")); | |
// Use a MutationObserver to catch changes to the path's "d" attribute. | |
this._mutationObserverConfig = { | |
"attributes": true, | |
"attributeFilter": ["d"] | |
}; | |
this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this)); | |
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig); | |
} | |
Object.defineProperty(SVGPathSegList.prototype, "numberOfItems", { | |
get: function() { | |
this._checkPathSynchronizedToList(); | |
return this._list.length; | |
}, | |
enumerable: true | |
}); | |
// Add the pathSegList accessors to SVGPathElement. | |
// Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-InterfaceSVGAnimatedPathData | |
Object.defineProperty(SVGPathElement.prototype, "pathSegList", { | |
get: function() { | |
if (!this._pathSegList) | |
this._pathSegList = new SVGPathSegList(this); | |
return this._pathSegList; | |
}, | |
enumerable: true | |
}); | |
// FIXME: The following are not implemented and simply return SVGPathElement.pathSegList. | |
Object.defineProperty(SVGPathElement.prototype, "normalizedPathSegList", { | |
get: function() { | |
return this.pathSegList; | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathElement.prototype, "animatedPathSegList", { | |
get: function() { | |
return this.pathSegList; | |
}, | |
enumerable: true | |
}); | |
Object.defineProperty(SVGPathElement.prototype, "animatedNormalizedPathSegList", { | |
get: function() { | |
return this.pathSegList; | |
}, | |
enumerable: true | |
}); | |
// Process any pending mutations to the path element and update the list as needed. | |
// This should be the first call of all public functions and is needed because | |
// MutationObservers are not synchronous so we can have pending asynchronous mutations. | |
SVGPathSegList.prototype._checkPathSynchronizedToList = function() { | |
this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords()); | |
} | |
SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) { | |
if (!this._pathElement) | |
return; | |
var hasPathMutations = false; | |
mutationRecords.forEach(function(record) { | |
if (record.attributeName == "d") | |
hasPathMutations = true; | |
}); | |
if (hasPathMutations) | |
this._list = this._parsePath(this._pathElement.getAttribute("d")); | |
} | |
// Serialize the list and update the path's 'd' attribute. | |
SVGPathSegList.prototype._writeListToPath = function() { | |
this._pathElementMutationObserver.disconnect(); | |
this._pathElement.setAttribute("d", SVGPathSegList._pathSegArrayAsString(this._list)); | |
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig); | |
} | |
// When a path segment changes the list needs to be synchronized back to the path element. | |
SVGPathSegList.prototype.segmentChanged = function(pathSeg) { | |
this._writeListToPath(); | |
} | |
SVGPathSegList.prototype.clear = function() { | |
this._checkPathSynchronizedToList(); | |
this._list.forEach(function(pathSeg) { | |
pathSeg._owningPathSegList = null ; | |
}); | |
this._list = []; | |
this._writeListToPath(); | |
} | |
SVGPathSegList.prototype.initialize = function(newItem) { | |
this._checkPathSynchronizedToList(); | |
this._list = [newItem]; | |
newItem._owningPathSegList = this; | |
this._writeListToPath(); | |
return newItem; | |
} | |
SVGPathSegList.prototype._checkValidIndex = function(index) { | |
if (isNaN(index) || index < 0 || index >= this.numberOfItems) | |
throw "INDEX_SIZE_ERR"; | |
} | |
SVGPathSegList.prototype.getItem = function(index) { | |
this._checkPathSynchronizedToList(); | |
this._checkValidIndex(index); | |
return this._list[index]; | |
} | |
SVGPathSegList.prototype.insertItemBefore = function(newItem, index) { | |
this._checkPathSynchronizedToList(); | |
// Spec: If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list. | |
if (index > this.numberOfItems) | |
index = this.numberOfItems; | |
if (newItem._owningPathSegList) { | |
// SVG2 spec says to make a copy. | |
newItem = newItem.clone(); | |
} | |
this._list.splice(index, 0, newItem); | |
newItem._owningPathSegList = this; | |
this._writeListToPath(); | |
return newItem; | |
} | |
SVGPathSegList.prototype.replaceItem = function(newItem, index) { | |
this._checkPathSynchronizedToList(); | |
if (newItem._owningPathSegList) { | |
// SVG2 spec says to make a copy. | |
newItem = newItem.clone(); | |
} | |
this._checkValidIndex(index); | |
this._list[index] = newItem; | |
newItem._owningPathSegList = this; | |
this._writeListToPath(); | |
return newItem; | |
} | |
SVGPathSegList.prototype.removeItem = function(index) { | |
this._checkPathSynchronizedToList(); | |
this._checkValidIndex(index); | |
var item = this._list[index]; | |
this._list.splice(index, 1); | |
this._writeListToPath(); | |
return item; | |
} | |
SVGPathSegList.prototype.appendItem = function(newItem) { | |
this._checkPathSynchronizedToList(); | |
if (newItem._owningPathSegList) { | |
// SVG2 spec says to make a copy. | |
newItem = newItem.clone(); | |
} | |
this._list.push(newItem); | |
newItem._owningPathSegList = this; | |
// TODO: Optimize this to just append to the existing attribute. | |
this._writeListToPath(); | |
return newItem; | |
} | |
SVGPathSegList._pathSegArrayAsString = function(pathSegArray) { | |
var string = ""; | |
var first = true; | |
pathSegArray.forEach(function(pathSeg) { | |
if (first) { | |
first = false; | |
string += pathSeg._asPathString(); | |
} else { | |
string += " " + pathSeg._asPathString(); | |
} | |
}); | |
return string; | |
} | |
// This closely follows SVGPathParser::parsePath from Source/core/svg/SVGPathParser.cpp. | |
SVGPathSegList.prototype._parsePath = function(string) { | |
if (!string || string.length == 0) | |
return []; | |
var owningPathSegList = this; | |
var Builder = function() { | |
this.pathSegList = []; | |
} | |
Builder.prototype.appendSegment = function(pathSeg) { | |
this.pathSegList.push(pathSeg); | |
} | |
var Source = function(string) { | |
this._string = string; | |
this._currentIndex = 0; | |
this._endIndex = this._string.length; | |
this._previousCommand = SVGPathSeg.PATHSEG_UNKNOWN; | |
this._skipOptionalSpaces(); | |
} | |
Source.prototype._isCurrentSpace = function() { | |
var character = this._string[this._currentIndex]; | |
return character <= " " && (character == " " || character == "\n" || character == "\t" || character == "\r" || character == "\f"); | |
} | |
Source.prototype._skipOptionalSpaces = function() { | |
while (this._currentIndex < this._endIndex && this._isCurrentSpace()) | |
this._currentIndex++; | |
return this._currentIndex < this._endIndex; | |
} | |
Source.prototype._skipOptionalSpacesOrDelimiter = function() { | |
if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != ",") | |
return false; | |
if (this._skipOptionalSpaces()) { | |
if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ",") { | |
this._currentIndex++; | |
this._skipOptionalSpaces(); | |
} | |
} | |
return this._currentIndex < this._endIndex; | |
} | |
Source.prototype.hasMoreData = function() { | |
return this._currentIndex < this._endIndex; | |
} | |
Source.prototype.peekSegmentType = function() { | |
var lookahead = this._string[this._currentIndex]; | |
return this._pathSegTypeFromChar(lookahead); | |
} | |
Source.prototype._pathSegTypeFromChar = function(lookahead) { | |
switch (lookahead) { | |
case "Z": | |
case "z": | |
return SVGPathSeg.PATHSEG_CLOSEPATH; | |
case "M": | |
return SVGPathSeg.PATHSEG_MOVETO_ABS; | |
case "m": | |
return SVGPathSeg.PATHSEG_MOVETO_REL; | |
case "L": | |
return SVGPathSeg.PATHSEG_LINETO_ABS; | |
case "l": | |
return SVGPathSeg.PATHSEG_LINETO_REL; | |
case "C": | |
return SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS; | |
case "c": | |
return SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL; | |
case "Q": | |
return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS; | |
case "q": | |
return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL; | |
case "A": | |
return SVGPathSeg.PATHSEG_ARC_ABS; | |
case "a": | |
return SVGPathSeg.PATHSEG_ARC_REL; | |
case "H": | |
return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS; | |
case "h": | |
return SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL; | |
case "V": | |
return SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS; | |
case "v": | |
return SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL; | |
case "S": | |
return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; | |
case "s": | |
return SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL; | |
case "T": | |
return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; | |
case "t": | |
return SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; | |
default: | |
return SVGPathSeg.PATHSEG_UNKNOWN; | |
} | |
} | |
Source.prototype._nextCommandHelper = function(lookahead, previousCommand) { | |
// Check for remaining coordinates in the current command. | |
if ((lookahead == "+" || lookahead == "-" || lookahead == "." || (lookahead >= "0" && lookahead <= "9")) && previousCommand != SVGPathSeg.PATHSEG_CLOSEPATH) { | |
if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_ABS) | |
return SVGPathSeg.PATHSEG_LINETO_ABS; | |
if (previousCommand == SVGPathSeg.PATHSEG_MOVETO_REL) | |
return SVGPathSeg.PATHSEG_LINETO_REL; | |
return previousCommand; | |
} | |
return SVGPathSeg.PATHSEG_UNKNOWN; | |
} | |
Source.prototype.initialCommandIsMoveTo = function() { | |
// If the path is empty it is still valid, so return true. | |
if (!this.hasMoreData()) | |
return true; | |
var command = this.peekSegmentType(); | |
// Path must start with moveTo. | |
return command == SVGPathSeg.PATHSEG_MOVETO_ABS || command == SVGPathSeg.PATHSEG_MOVETO_REL; | |
} | |
// Parse a number from an SVG path. This very closely follows genericParseNumber(...) from Source/core/svg/SVGParserUtilities.cpp. | |
// Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF | |
Source.prototype._parseNumber = function() { | |
var exponent = 0; | |
var integer = 0; | |
var frac = 1; | |
var decimal = 0; | |
var sign = 1; | |
var expsign = 1; | |
var startIndex = this._currentIndex; | |
this._skipOptionalSpaces(); | |
// Read the sign. | |
if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == "+") | |
this._currentIndex++; | |
else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == "-") { | |
this._currentIndex++; | |
sign = -1; | |
} | |
if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < "0" || this._string.charAt(this._currentIndex) > "9") && this._string.charAt(this._currentIndex) != ".")) | |
// The first character of a number must be one of [0-9+-.]. | |
return undefined; | |
// Read the integer part, build right-to-left. | |
var startIntPartIndex = this._currentIndex; | |
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= "0" && this._string.charAt(this._currentIndex) <= "9") | |
this._currentIndex++; | |
// Advance to first non-digit. | |
if (this._currentIndex != startIntPartIndex) { | |
var scanIntPartIndex = this._currentIndex - 1; | |
var multiplier = 1; | |
while (scanIntPartIndex >= startIntPartIndex) { | |
integer += multiplier * (this._string.charAt(scanIntPartIndex--) - "0"); | |
multiplier *= 10; | |
} | |
} | |
// Read the decimals. | |
if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ".") { | |
this._currentIndex++; | |
// There must be a least one digit following the . | |
if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < "0" || this._string.charAt(this._currentIndex) > "9") | |
return undefined; | |
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= "0" && this._string.charAt(this._currentIndex) <= "9") | |
decimal += (this._string.charAt(this._currentIndex++) - "0") * (frac *= 0.1); | |
} | |
// Read the exponent part. | |
if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == "e" || this._string.charAt(this._currentIndex) == "E") && (this._string.charAt(this._currentIndex + 1) != "x" && this._string.charAt(this._currentIndex + 1) != "m")) { | |
this._currentIndex++; | |
// Read the sign of the exponent. | |
if (this._string.charAt(this._currentIndex) == "+") { | |
this._currentIndex++; | |
} else if (this._string.charAt(this._currentIndex) == "-") { | |
this._currentIndex++; | |
expsign = -1; | |
} | |
// There must be an exponent. | |
if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < "0" || this._string.charAt(this._currentIndex) > "9") | |
return undefined; | |
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= "0" && this._string.charAt(this._currentIndex) <= "9") { | |
exponent *= 10; | |
exponent += (this._string.charAt(this._currentIndex) - "0"); | |
this._currentIndex++; | |
} | |
} | |
var number = integer + decimal; | |
number *= sign; | |
if (exponent) | |
number *= Math.pow(10, expsign * exponent); | |
if (startIndex == this._currentIndex) | |
return undefined; | |
this._skipOptionalSpacesOrDelimiter(); | |
return number; | |
} | |
Source.prototype._parseArcFlag = function() { | |
if (this._currentIndex >= this._endIndex) | |
return undefined; | |
var flag = false; | |
var flagChar = this._string.charAt(this._currentIndex++); | |
if (flagChar == "0") | |
flag = false; | |
else if (flagChar == "1") | |
flag = true; | |
else | |
return undefined; | |
this._skipOptionalSpacesOrDelimiter(); | |
return flag; | |
} | |
Source.prototype.parseSegment = function() { | |
var lookahead = this._string[this._currentIndex]; | |
var command = this._pathSegTypeFromChar(lookahead); | |
if (command == SVGPathSeg.PATHSEG_UNKNOWN) { | |
// Possibly an implicit command. Not allowed if this is the first command. | |
if (this._previousCommand == SVGPathSeg.PATHSEG_UNKNOWN) | |
return null ; | |
command = this._nextCommandHelper(lookahead, this._previousCommand); | |
if (command == SVGPathSeg.PATHSEG_UNKNOWN) | |
return null ; | |
} else { | |
this._currentIndex++; | |
} | |
this._previousCommand = command; | |
switch (command) { | |
case SVGPathSeg.PATHSEG_MOVETO_REL: | |
return new SVGPathSegMovetoRel(owningPathSegList,this._parseNumber(),this._parseNumber()); | |
case SVGPathSeg.PATHSEG_MOVETO_ABS: | |
return new SVGPathSegMovetoAbs(owningPathSegList,this._parseNumber(),this._parseNumber()); | |
case SVGPathSeg.PATHSEG_LINETO_REL: | |
return new SVGPathSegLinetoRel(owningPathSegList,this._parseNumber(),this._parseNumber()); | |
case SVGPathSeg.PATHSEG_LINETO_ABS: | |
return new SVGPathSegLinetoAbs(owningPathSegList,this._parseNumber(),this._parseNumber()); | |
case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL: | |
return new SVGPathSegLinetoHorizontalRel(owningPathSegList,this._parseNumber()); | |
case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS: | |
return new SVGPathSegLinetoHorizontalAbs(owningPathSegList,this._parseNumber()); | |
case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL: | |
return new SVGPathSegLinetoVerticalRel(owningPathSegList,this._parseNumber()); | |
case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS: | |
return new SVGPathSegLinetoVerticalAbs(owningPathSegList,this._parseNumber()); | |
case SVGPathSeg.PATHSEG_CLOSEPATH: | |
this._skipOptionalSpaces(); | |
return new SVGPathSegClosePath(owningPathSegList); | |
case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL: | |
var points = { | |
x1: this._parseNumber(), | |
y1: this._parseNumber(), | |
x2: this._parseNumber(), | |
y2: this._parseNumber(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegCurvetoCubicRel(owningPathSegList,points.x,points.y,points.x1,points.y1,points.x2,points.y2); | |
case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS: | |
var points = { | |
x1: this._parseNumber(), | |
y1: this._parseNumber(), | |
x2: this._parseNumber(), | |
y2: this._parseNumber(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegCurvetoCubicAbs(owningPathSegList,points.x,points.y,points.x1,points.y1,points.x2,points.y2); | |
case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL: | |
var points = { | |
x2: this._parseNumber(), | |
y2: this._parseNumber(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegCurvetoCubicSmoothRel(owningPathSegList,points.x,points.y,points.x2,points.y2); | |
case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS: | |
var points = { | |
x2: this._parseNumber(), | |
y2: this._parseNumber(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList,points.x,points.y,points.x2,points.y2); | |
case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL: | |
var points = { | |
x1: this._parseNumber(), | |
y1: this._parseNumber(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegCurvetoQuadraticRel(owningPathSegList,points.x,points.y,points.x1,points.y1); | |
case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS: | |
var points = { | |
x1: this._parseNumber(), | |
y1: this._parseNumber(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegCurvetoQuadraticAbs(owningPathSegList,points.x,points.y,points.x1,points.y1); | |
case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL: | |
return new SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList,this._parseNumber(),this._parseNumber()); | |
case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS: | |
return new SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList,this._parseNumber(),this._parseNumber()); | |
case SVGPathSeg.PATHSEG_ARC_REL: | |
var points = { | |
x1: this._parseNumber(), | |
y1: this._parseNumber(), | |
arcAngle: this._parseNumber(), | |
arcLarge: this._parseArcFlag(), | |
arcSweep: this._parseArcFlag(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegArcRel(owningPathSegList,points.x,points.y,points.x1,points.y1,points.arcAngle,points.arcLarge,points.arcSweep); | |
case SVGPathSeg.PATHSEG_ARC_ABS: | |
var points = { | |
x1: this._parseNumber(), | |
y1: this._parseNumber(), | |
arcAngle: this._parseNumber(), | |
arcLarge: this._parseArcFlag(), | |
arcSweep: this._parseArcFlag(), | |
x: this._parseNumber(), | |
y: this._parseNumber() | |
}; | |
return new SVGPathSegArcAbs(owningPathSegList,points.x,points.y,points.x1,points.y1,points.arcAngle,points.arcLarge,points.arcSweep); | |
default: | |
throw "Unknown path seg type." | |
} | |
} | |
var builder = new Builder(); | |
var source = new Source(string); | |
if (!source.initialCommandIsMoveTo()) | |
return []; | |
while (source.hasMoreData()) { | |
var pathSeg = source.parseSegment(); | |
if (!pathSeg) | |
return []; | |
builder.appendSegment(pathSeg); | |
} | |
return builder.pathSegList; | |
} | |
} | |
}()); | |
!function() { | |
function n(n) { | |
return n && (n.ownerDocument || n.document || n).documentElement | |
} | |
function t(n) { | |
return n && (n.ownerDocument && n.ownerDocument.defaultView || n.document && n || n.defaultView) | |
} | |
function e(n, t) { | |
return t > n ? -1 : n > t ? 1 : n >= t ? 0 : NaN | |
} | |
function r(n) { | |
return null === n ? NaN : +n | |
} | |
function u(n) { | |
return !isNaN(n) | |
} | |
function i(n) { | |
return { | |
left: function(t, e, r, u) { | |
for (arguments.length < 3 && (r = 0), | |
arguments.length < 4 && (u = t.length); u > r; ) { | |
var i = r + u >>> 1; | |
n(t[i], e) < 0 ? r = i + 1 : u = i | |
} | |
return r | |
}, | |
right: function(t, e, r, u) { | |
for (arguments.length < 3 && (r = 0), | |
arguments.length < 4 && (u = t.length); u > r; ) { | |
var i = r + u >>> 1; | |
n(t[i], e) > 0 ? u = i : r = i + 1 | |
} | |
return r | |
} | |
} | |
} | |
function a(n) { | |
return n.length | |
} | |
function o(n) { | |
for (var t = 1; n * t % 1; ) | |
t *= 10; | |
return t | |
} | |
function l(n, t) { | |
for (var e in t) | |
Object.defineProperty(n.prototype, e, { | |
value: t[e], | |
enumerable: !1 | |
}) | |
} | |
function c() { | |
this._ = Object.create(null ) | |
} | |
function s(n) { | |
return (n += "") === xa || n[0] === ba ? ba + n : n | |
} | |
function f(n) { | |
return (n += "")[0] === ba ? n.slice(1) : n | |
} | |
function h(n) { | |
return s(n) in this._ | |
} | |
function g(n) { | |
return (n = s(n)) in this._ && delete this._[n] | |
} | |
function p() { | |
var n = []; | |
for (var t in this._) | |
n.push(f(t)); | |
return n | |
} | |
function v() { | |
var n = 0; | |
for (var t in this._) | |
++n; | |
return n | |
} | |
function d() { | |
for (var n in this._) | |
return !1; | |
return !0 | |
} | |
function m() { | |
this._ = Object.create(null ) | |
} | |
function y(n) { | |
return n | |
} | |
function M(n, t, e) { | |
return function() { | |
var r = e.apply(t, arguments); | |
return r === t ? n : r | |
} | |
} | |
function x(n, t) { | |
if (t in n) | |
return t; | |
t = t.charAt(0).toUpperCase() + t.slice(1); | |
for (var e = 0, r = _a.length; r > e; ++e) { | |
var u = _a[e] + t; | |
if (u in n) | |
return u | |
} | |
} | |
function b() {} | |
function _() {} | |
function w(n) { | |
function t() { | |
for (var t, r = e, u = -1, i = r.length; ++u < i; ) | |
(t = r[u].on) && t.apply(this, arguments); | |
return n | |
} | |
var e = [] | |
, r = new c; | |
return t.on = function(t, u) { | |
var i, a = r.get(t); | |
return arguments.length < 2 ? a && a.on : (a && (a.on = null , | |
e = e.slice(0, i = e.indexOf(a)).concat(e.slice(i + 1)), | |
r.remove(t)), | |
u && e.push(r.set(t, { | |
on: u | |
})), | |
n) | |
} | |
, | |
t | |
} | |
function S() { | |
oa.event.preventDefault() | |
} | |
function k() { | |
for (var n, t = oa.event; n = t.sourceEvent; ) | |
t = n; | |
return t | |
} | |
function N(n) { | |
for (var t = new _, e = 0, r = arguments.length; ++e < r; ) | |
t[arguments[e]] = w(t); | |
return t.of = function(e, r) { | |
return function(u) { | |
try { | |
var i = u.sourceEvent = oa.event; | |
u.target = n, | |
oa.event = u, | |
t[u.type].apply(e, r) | |
} finally { | |
oa.event = i | |
} | |
} | |
} | |
, | |
t | |
} | |
function E(n) { | |
return Sa(n, Aa), | |
n | |
} | |
function A(n) { | |
return "function" == typeof n ? n : function() { | |
return ka(n, this) | |
} | |
} | |
function C(n) { | |
return "function" == typeof n ? n : function() { | |
return Na(n, this) | |
} | |
} | |
function z(n, t) { | |
function e() { | |
this.removeAttribute(n) | |
} | |
function r() { | |
this.removeAttributeNS(n.space, n.local) | |
} | |
function u() { | |
this.setAttribute(n, t) | |
} | |
function i() { | |
this.setAttributeNS(n.space, n.local, t) | |
} | |
function a() { | |
var e = t.apply(this, arguments); | |
null == e ? this.removeAttribute(n) : this.setAttribute(n, e) | |
} | |
function o() { | |
var e = t.apply(this, arguments); | |
null == e ? this.removeAttributeNS(n.space, n.local) : this.setAttributeNS(n.space, n.local, e) | |
} | |
return n = oa.ns.qualify(n), | |
null == t ? n.local ? r : e : "function" == typeof t ? n.local ? o : a : n.local ? i : u | |
} | |
function L(n) { | |
return n.trim().replace(/\s+/g, " ") | |
} | |
function q(n) { | |
return new RegExp("(?:^|\\s+)" + oa.requote(n) + "(?:\\s+|$)","g") | |
} | |
function T(n) { | |
return (n + "").trim().split(/^|\s+/) | |
} | |
function R(n, t) { | |
function e() { | |
for (var e = -1; ++e < u; ) | |
n[e](this, t) | |
} | |
function r() { | |
for (var e = -1, r = t.apply(this, arguments); ++e < u; ) | |
n[e](this, r) | |
} | |
n = T(n).map(D); | |
var u = n.length; | |
return "function" == typeof t ? r : e | |
} | |
function D(n) { | |
var t = q(n); | |
return function(e, r) { | |
if (u = e.classList) | |
return r ? u.add(n) : u.remove(n); | |
var u = e.getAttribute("class") || ""; | |
r ? (t.lastIndex = 0, | |
t.test(u) || e.setAttribute("class", L(u + " " + n))) : e.setAttribute("class", L(u.replace(t, " "))) | |
} | |
} | |
function P(n, t, e) { | |
function r() { | |
this.style.removeProperty(n) | |
} | |
function u() { | |
this.style.setProperty(n, t, e) | |
} | |
function i() { | |
var r = t.apply(this, arguments); | |
null == r ? this.style.removeProperty(n) : this.style.setProperty(n, r, e) | |
} | |
return null == t ? r : "function" == typeof t ? i : u | |
} | |
function U(n, t) { | |
function e() { | |
delete this[n] | |
} | |
function r() { | |
this[n] = t | |
} | |
function u() { | |
var e = t.apply(this, arguments); | |
null == e ? delete this[n] : this[n] = e | |
} | |
return null == t ? e : "function" == typeof t ? u : r | |
} | |
function j(n) { | |
function t() { | |
var t = this.ownerDocument | |
, e = this.namespaceURI; | |
return e === Ca && t.documentElement.namespaceURI === Ca ? t.createElement(n) : t.createElementNS(e, n) | |
} | |
function e() { | |
return this.ownerDocument.createElementNS(n.space, n.local) | |
} | |
return "function" == typeof n ? n : (n = oa.ns.qualify(n)).local ? e : t | |
} | |
function F() { | |
var n = this.parentNode; | |
n && n.removeChild(this) | |
} | |
function H(n) { | |
return { | |
__data__: n | |
} | |
} | |
function O(n) { | |
return function() { | |
return Ea(this, n) | |
} | |
} | |
function I(n) { | |
return arguments.length || (n = e), | |
function(t, e) { | |
return t && e ? n(t.__data__, e.__data__) : !t - !e | |
} | |
} | |
function Y(n, t) { | |
for (var e = 0, r = n.length; r > e; e++) | |
for (var u, i = n[e], a = 0, o = i.length; o > a; a++) | |
(u = i[a]) && t(u, a, e); | |
return n | |
} | |
function Z(n) { | |
return Sa(n, La), | |
n | |
} | |
function V(n) { | |
var t, e; | |
return function(r, u, i) { | |
var a, o = n[i].update, l = o.length; | |
for (i != e && (e = i, | |
t = 0), | |
u >= t && (t = u + 1); !(a = o[t]) && ++t < l; ) | |
; | |
return a | |
} | |
} | |
function X(n, t, e) { | |
function r() { | |
var t = this[a]; | |
t && (this.removeEventListener(n, t, t.$), | |
delete this[a]) | |
} | |
function u() { | |
var u = l(t, ca(arguments)); | |
r.call(this), | |
this.addEventListener(n, this[a] = u, u.$ = e), | |
u._ = t | |
} | |
function i() { | |
var t, e = new RegExp("^__on([^.]+)" + oa.requote(n) + "$"); | |
for (var r in this) | |
if (t = r.match(e)) { | |
var u = this[r]; | |
this.removeEventListener(t[1], u, u.$), | |
delete this[r] | |
} | |
} | |
var a = "__on" + n | |
, o = n.indexOf(".") | |
, l = $; | |
o > 0 && (n = n.slice(0, o)); | |
var c = qa.get(n); | |
return c && (n = c, | |
l = B), | |
o ? t ? u : r : t ? b : i | |
} | |
function $(n, t) { | |
return function(e) { | |
var r = oa.event; | |
oa.event = e, | |
t[0] = this.__data__; | |
try { | |
n.apply(this, t) | |
} finally { | |
oa.event = r | |
} | |
} | |
} | |
function B(n, t) { | |
var e = $(n, t); | |
return function(n) { | |
var t = this | |
, r = n.relatedTarget; | |
r && (r === t || 8 & r.compareDocumentPosition(t)) || e.call(t, n) | |
} | |
} | |
function W(e) { | |
var r = ".dragsuppress-" + ++Ra | |
, u = "click" + r | |
, i = oa.select(t(e)).on("touchmove" + r, S).on("dragstart" + r, S).on("selectstart" + r, S); | |
if (null == Ta && (Ta = "onselectstart" in e ? !1 : x(e.style, "userSelect")), | |
Ta) { | |
var a = n(e).style | |
, o = a[Ta]; | |
a[Ta] = "none" | |
} | |
return function(n) { | |
if (i.on(r, null ), | |
Ta && (a[Ta] = o), | |
n) { | |
var t = function() { | |
i.on(u, null ) | |
} | |
; | |
i.on(u, function() { | |
S(), | |
t() | |
}, !0), | |
setTimeout(t, 0) | |
} | |
} | |
} | |
function J(n, e) { | |
e.changedTouches && (e = e.changedTouches[0]); | |
var r = n.ownerSVGElement || n; | |
if (r.createSVGPoint) { | |
var u = r.createSVGPoint(); | |
if (0 > Da) { | |
var i = t(n); | |
if (i.scrollX || i.scrollY) { | |
r = oa.select("body").append("svg").style({ | |
position: "absolute", | |
top: 0, | |
left: 0, | |
margin: 0, | |
padding: 0, | |
border: "none" | |
}, "important"); | |
var a = r[0][0].getScreenCTM(); | |
Da = !(a.f || a.e), | |
r.remove() | |
} | |
} | |
return Da ? (u.x = e.pageX, | |
u.y = e.pageY) : (u.x = e.clientX, | |
u.y = e.clientY), | |
u = u.matrixTransform(n.getScreenCTM().inverse()), | |
[u.x, u.y] | |
} | |
var o = n.getBoundingClientRect(); | |
return [e.clientX - o.left - n.clientLeft, e.clientY - o.top - n.clientTop] | |
} | |
function G() { | |
return oa.event.changedTouches[0].identifier | |
} | |
function K(n) { | |
return n > 0 ? 1 : 0 > n ? -1 : 0 | |
} | |
function Q(n, t, e) { | |
return (t[0] - n[0]) * (e[1] - n[1]) - (t[1] - n[1]) * (e[0] - n[0]) | |
} | |
function nn(n) { | |
return n > 1 ? 0 : -1 > n ? ja : Math.acos(n) | |
} | |
function tn(n) { | |
return n > 1 ? Oa : -1 > n ? -Oa : Math.asin(n) | |
} | |
function en(n) { | |
return ((n = Math.exp(n)) - 1 / n) / 2 | |
} | |
function rn(n) { | |
return ((n = Math.exp(n)) + 1 / n) / 2 | |
} | |
function un(n) { | |
return ((n = Math.exp(2 * n)) - 1) / (n + 1) | |
} | |
function an(n) { | |
return (n = Math.sin(n / 2)) * n | |
} | |
function on() {} | |
function ln(n, t, e) { | |
return this instanceof ln ? (this.h = +n, | |
this.s = +t, | |
void (this.l = +e)) : arguments.length < 2 ? n instanceof ln ? new ln(n.h,n.s,n.l) : _n("" + n, wn, ln) : new ln(n,t,e) | |
} | |
function cn(n, t, e) { | |
function r(n) { | |
return n > 360 ? n -= 360 : 0 > n && (n += 360), | |
60 > n ? i + (a - i) * n / 60 : 180 > n ? a : 240 > n ? i + (a - i) * (240 - n) / 60 : i | |
} | |
function u(n) { | |
return Math.round(255 * r(n)) | |
} | |
var i, a; | |
return n = isNaN(n) ? 0 : (n %= 360) < 0 ? n + 360 : n, | |
t = isNaN(t) ? 0 : 0 > t ? 0 : t > 1 ? 1 : t, | |
e = 0 > e ? 0 : e > 1 ? 1 : e, | |
a = .5 >= e ? e * (1 + t) : e + t - e * t, | |
i = 2 * e - a, | |
new yn(u(n + 120),u(n),u(n - 120)) | |
} | |
function sn(n, t, e) { | |
return this instanceof sn ? (this.h = +n, | |
this.c = +t, | |
void (this.l = +e)) : arguments.length < 2 ? n instanceof sn ? new sn(n.h,n.c,n.l) : n instanceof hn ? pn(n.l, n.a, n.b) : pn((n = Sn((n = oa.rgb(n)).r, n.g, n.b)).l, n.a, n.b) : new sn(n,t,e) | |
} | |
function fn(n, t, e) { | |
return isNaN(n) && (n = 0), | |
isNaN(t) && (t = 0), | |
new hn(e,Math.cos(n *= Ia) * t,Math.sin(n) * t) | |
} | |
function hn(n, t, e) { | |
return this instanceof hn ? (this.l = +n, | |
this.a = +t, | |
void (this.b = +e)) : arguments.length < 2 ? n instanceof hn ? new hn(n.l,n.a,n.b) : n instanceof sn ? fn(n.h, n.c, n.l) : Sn((n = yn(n)).r, n.g, n.b) : new hn(n,t,e) | |
} | |
function gn(n, t, e) { | |
var r = (n + 16) / 116 | |
, u = r + t / 500 | |
, i = r - e / 200; | |
return u = vn(u) * Qa, | |
r = vn(r) * no, | |
i = vn(i) * to, | |
new yn(mn(3.2404542 * u - 1.5371385 * r - .4985314 * i),mn(-.969266 * u + 1.8760108 * r + .041556 * i),mn(.0556434 * u - .2040259 * r + 1.0572252 * i)) | |
} | |
function pn(n, t, e) { | |
return n > 0 ? new sn(Math.atan2(e, t) * Ya,Math.sqrt(t * t + e * e),n) : new sn(NaN,NaN,n) | |
} | |
function vn(n) { | |
return n > .206893034 ? n * n * n : (n - 4 / 29) / 7.787037 | |
} | |
function dn(n) { | |
return n > .008856 ? Math.pow(n, 1 / 3) : 7.787037 * n + 4 / 29 | |
} | |
function mn(n) { | |
return Math.round(255 * (.00304 >= n ? 12.92 * n : 1.055 * Math.pow(n, 1 / 2.4) - .055)) | |
} | |
function yn(n, t, e) { | |
return this instanceof yn ? (this.r = ~~n, | |
this.g = ~~t, | |
void (this.b = ~~e)) : arguments.length < 2 ? n instanceof yn ? new yn(n.r,n.g,n.b) : _n("" + n, yn, cn) : new yn(n,t,e) | |
} | |
function Mn(n) { | |
return new yn(n >> 16,n >> 8 & 255,255 & n) | |
} | |
function xn(n) { | |
return Mn(n) + "" | |
} | |
function bn(n) { | |
return 16 > n ? "0" + Math.max(0, n).toString(16) : Math.min(255, n).toString(16) | |
} | |
function _n(n, t, e) { | |
var r, u, i, a = 0, o = 0, l = 0; | |
if (r = /([a-z]+)\((.*)\)/.exec(n = n.toLowerCase())) | |
switch (u = r[2].split(","), | |
r[1]) { | |
case "hsl": | |
return e(parseFloat(u[0]), parseFloat(u[1]) / 100, parseFloat(u[2]) / 100); | |
case "rgb": | |
return t(Nn(u[0]), Nn(u[1]), Nn(u[2])) | |
} | |
return (i = uo.get(n)) ? t(i.r, i.g, i.b) : (null == n || "#" !== n.charAt(0) || isNaN(i = parseInt(n.slice(1), 16)) || (4 === n.length ? (a = (3840 & i) >> 4, | |
a = a >> 4 | a, | |
o = 240 & i, | |
o = o >> 4 | o, | |
l = 15 & i, | |
l = l << 4 | l) : 7 === n.length && (a = (16711680 & i) >> 16, | |
o = (65280 & i) >> 8, | |
l = 255 & i)), | |
t(a, o, l)) | |
} | |
function wn(n, t, e) { | |
var r, u, i = Math.min(n /= 255, t /= 255, e /= 255), a = Math.max(n, t, e), o = a - i, l = (a + i) / 2; | |
return o ? (u = .5 > l ? o / (a + i) : o / (2 - a - i), | |
r = n == a ? (t - e) / o + (e > t ? 6 : 0) : t == a ? (e - n) / o + 2 : (n - t) / o + 4, | |
r *= 60) : (r = NaN, | |
u = l > 0 && 1 > l ? 0 : r), | |
new ln(r,u,l) | |
} | |
function Sn(n, t, e) { | |
n = kn(n), | |
t = kn(t), | |
e = kn(e); | |
var r = dn((.4124564 * n + .3575761 * t + .1804375 * e) / Qa) | |
, u = dn((.2126729 * n + .7151522 * t + .072175 * e) / no) | |
, i = dn((.0193339 * n + .119192 * t + .9503041 * e) / to); | |
return hn(116 * u - 16, 500 * (r - u), 200 * (u - i)) | |
} | |
function kn(n) { | |
return (n /= 255) <= .04045 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4) | |
} | |
function Nn(n) { | |
var t = parseFloat(n); | |
return "%" === n.charAt(n.length - 1) ? Math.round(2.55 * t) : t | |
} | |
function En(n) { | |
return "function" == typeof n ? n : function() { | |
return n | |
} | |
} | |
function An(n) { | |
return function(t, e, r) { | |
return 2 === arguments.length && "function" == typeof e && (r = e, | |
e = null ), | |
Cn(t, e, n, r) | |
} | |
} | |
function Cn(n, t, e, r) { | |
function u() { | |
var n, t = l.status; | |
if (!t && Ln(l) || t >= 200 && 300 > t || 304 === t) { | |
try { | |
n = e.call(i, l) | |
} catch (r) { | |
return void a.error.call(i, r) | |
} | |
a.load.call(i, n) | |
} else | |
a.error.call(i, l) | |
} | |
var i = {} | |
, a = oa.dispatch("beforesend", "progress", "load", "error") | |
, o = {} | |
, l = new XMLHttpRequest | |
, c = null ; | |
return !this.XDomainRequest || "withCredentials" in l || !/^(http(s)?:)?\/\//.test(n) || (l = new XDomainRequest), | |
"onload" in l ? l.onload = l.onerror = u : l.onreadystatechange = function() { | |
l.readyState > 3 && u() | |
} | |
, | |
l.onprogress = function(n) { | |
var t = oa.event; | |
oa.event = n; | |
try { | |
a.progress.call(i, l) | |
} finally { | |
oa.event = t | |
} | |
} | |
, | |
i.header = function(n, t) { | |
return n = (n + "").toLowerCase(), | |
arguments.length < 2 ? o[n] : (null == t ? delete o[n] : o[n] = t + "", | |
i) | |
} | |
, | |
i.mimeType = function(n) { | |
return arguments.length ? (t = null == n ? null : n + "", | |
i) : t | |
} | |
, | |
i.responseType = function(n) { | |
return arguments.length ? (c = n, | |
i) : c | |
} | |
, | |
i.response = function(n) { | |
return e = n, | |
i | |
} | |
, | |
["get", "post"].forEach(function(n) { | |
i[n] = function() { | |
return i.send.apply(i, [n].concat(ca(arguments))) | |
} | |
}), | |
i.send = function(e, r, u) { | |
if (2 === arguments.length && "function" == typeof r && (u = r, | |
r = null ), | |
l.open(e, n, !0), | |
null == t || "accept" in o || (o.accept = t + ",*/*"), | |
l.setRequestHeader) | |
for (var s in o) | |
l.setRequestHeader(s, o[s]); | |
return null != t && l.overrideMimeType && l.overrideMimeType(t), | |
null != c && (l.responseType = c), | |
null != u && i.on("error", u).on("load", function(n) { | |
u(null , n) | |
}), | |
a.beforesend.call(i, l), | |
l.send(null == r ? null : r), | |
i | |
} | |
, | |
i.abort = function() { | |
return l.abort(), | |
i | |
} | |
, | |
oa.rebind(i, a, "on"), | |
null == r ? i : i.get(zn(r)) | |
} | |
function zn(n) { | |
return 1 === n.length ? function(t, e) { | |
n(null == t ? e : null ) | |
} | |
: n | |
} | |
function Ln(n) { | |
var t = n.responseType; | |
return t && "text" !== t ? n.response : n.responseText | |
} | |
function qn(n, t, e) { | |
var r = arguments.length; | |
2 > r && (t = 0), | |
3 > r && (e = Date.now()); | |
var u = e + t | |
, i = { | |
c: n, | |
t: u, | |
n: null | |
}; | |
return ao ? ao.n = i : io = i, | |
ao = i, | |
oo || (lo = clearTimeout(lo), | |
oo = 1, | |
co(Tn)), | |
i | |
} | |
function Tn() { | |
var n = Rn() | |
, t = Dn() - n; | |
t > 24 ? (isFinite(t) && (clearTimeout(lo), | |
lo = setTimeout(Tn, t)), | |
oo = 0) : (oo = 1, | |
co(Tn)) | |
} | |
function Rn() { | |
for (var n = Date.now(), t = io; t; ) | |
n >= t.t && t.c(n - t.t) && (t.c = null ), | |
t = t.n; | |
return n | |
} | |
function Dn() { | |
for (var n, t = io, e = 1 / 0; t; ) | |
t.c ? (t.t < e && (e = t.t), | |
t = (n = t).n) : t = n ? n.n = t.n : io = t.n; | |
return ao = n, | |
e | |
} | |
function Pn(n, t) { | |
return t - (n ? Math.ceil(Math.log(n) / Math.LN10) : 1) | |
} | |
function Un(n, t) { | |
var e = Math.pow(10, 3 * Ma(8 - t)); | |
return { | |
scale: t > 8 ? function(n) { | |
return n / e | |
} | |
: function(n) { | |
return n * e | |
} | |
, | |
symbol: n | |
} | |
} | |
function jn(n) { | |
var t = n.decimal | |
, e = n.thousands | |
, r = n.grouping | |
, u = n.currency | |
, i = r && e ? function(n, t) { | |
for (var u = n.length, i = [], a = 0, o = r[0], l = 0; u > 0 && o > 0 && (l + o + 1 > t && (o = Math.max(1, t - l)), | |
i.push(n.substring(u -= o, u + o)), | |
!((l += o + 1) > t)); ) | |
o = r[a = (a + 1) % r.length]; | |
return i.reverse().join(e) | |
} | |
: y; | |
return function(n) { | |
var e = fo.exec(n) | |
, r = e[1] || " " | |
, a = e[2] || ">" | |
, o = e[3] || "-" | |
, l = e[4] || "" | |
, c = e[5] | |
, s = +e[6] | |
, f = e[7] | |
, h = e[8] | |
, g = e[9] | |
, p = 1 | |
, v = "" | |
, d = "" | |
, m = !1 | |
, y = !0; | |
switch (h && (h = +h.substring(1)), | |
(c || "0" === r && "=" === a) && (c = r = "0", | |
a = "="), | |
g) { | |
case "n": | |
f = !0, | |
g = "g"; | |
break; | |
case "%": | |
p = 100, | |
d = "%", | |
g = "f"; | |
break; | |
case "p": | |
p = 100, | |
d = "%", | |
g = "r"; | |
break; | |
case "b": | |
case "o": | |
case "x": | |
case "X": | |
"#" === l && (v = "0" + g.toLowerCase()); | |
case "c": | |
y = !1; | |
case "d": | |
m = !0, | |
h = 0; | |
break; | |
case "s": | |
p = -1, | |
g = "r" | |
} | |
"$" === l && (v = u[0], | |
d = u[1]), | |
"r" != g || h || (g = "g"), | |
null != h && ("g" == g ? h = Math.max(1, Math.min(21, h)) : ("e" == g || "f" == g) && (h = Math.max(0, Math.min(20, h)))), | |
g = ho.get(g) || Fn; | |
var M = c && f; | |
return function(n) { | |
var e = d; | |
if (m && n % 1) | |
return ""; | |
var u = 0 > n || 0 === n && 0 > 1 / n ? (n = -n, | |
"-") : "-" === o ? "" : o; | |
if (0 > p) { | |
var l = oa.formatPrefix(n, h); | |
n = l.scale(n), | |
e = l.symbol + d | |
} else | |
n *= p; | |
n = g(n, h); | |
var x, b, _ = n.lastIndexOf("."); | |
if (0 > _) { | |
var w = y ? n.lastIndexOf("e") : -1; | |
0 > w ? (x = n, | |
b = "") : (x = n.substring(0, w), | |
b = n.substring(w)) | |
} else | |
x = n.substring(0, _), | |
b = t + n.substring(_ + 1); | |
!c && f && (x = i(x, 1 / 0)); | |
var S = v.length + x.length + b.length + (M ? 0 : u.length) | |
, k = s > S ? new Array(S = s - S + 1).join(r) : ""; | |
return M && (x = i(k + x, k.length ? s - b.length : 1 / 0)), | |
u += v, | |
n = x + b, | |
("<" === a ? u + n + k : ">" === a ? k + u + n : "^" === a ? k.substring(0, S >>= 1) + u + n + k.substring(S) : u + (M ? n : k + n)) + e | |
} | |
} | |
} | |
function Fn(n) { | |
return n + "" | |
} | |
function Hn() { | |
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]) | |
} | |
function On(n, t, e) { | |
function r(t) { | |
var e = n(t) | |
, r = i(e, 1); | |
return r - t > t - e ? e : r | |
} | |
function u(e) { | |
return t(e = n(new po(e - 1)), 1), | |
e | |
} | |
function i(n, e) { | |
return t(n = new po(+n), e), | |
n | |
} | |
function a(n, r, i) { | |
var a = u(n) | |
, o = []; | |
if (i > 1) | |
for (; r > a; ) | |
e(a) % i || o.push(new Date(+a)), | |
t(a, 1); | |
else | |
for (; r > a; ) | |
o.push(new Date(+a)), | |
t(a, 1); | |
return o | |
} | |
function o(n, t, e) { | |
try { | |
po = Hn; | |
var r = new Hn; | |
return r._ = n, | |
a(r, t, e) | |
} finally { | |
po = Date | |
} | |
} | |
n.floor = n, | |
n.round = r, | |
n.ceil = u, | |
n.offset = i, | |
n.range = a; | |
var l = n.utc = In(n); | |
return l.floor = l, | |
l.round = In(r), | |
l.ceil = In(u), | |
l.offset = In(i), | |
l.range = o, | |
n | |
} | |
function In(n) { | |
return function(t, e) { | |
try { | |
po = Hn; | |
var r = new Hn; | |
return r._ = t, | |
n(r, e)._ | |
} finally { | |
po = Date | |
} | |
} | |
} | |
function Yn(n) { | |
function t(n) { | |
function t(t) { | |
for (var e, u, i, a = [], o = -1, l = 0; ++o < r; ) | |
37 === n.charCodeAt(o) && (a.push(n.slice(l, o)), | |
null != (u = mo[e = n.charAt(++o)]) && (e = n.charAt(++o)), | |
(i = A[e]) && (e = i(t, null == u ? "e" === e ? " " : "0" : u)), | |
a.push(e), | |
l = o + 1); | |
return a.push(n.slice(l, o)), | |
a.join("") | |
} | |
var r = n.length; | |
return t.parse = function(t) { | |
var r = { | |
y: 1900, | |
m: 0, | |
d: 1, | |
H: 0, | |
M: 0, | |
S: 0, | |
L: 0, | |
Z: null | |
} | |
, u = e(r, n, t, 0); | |
if (u != t.length) | |
return null ; | |
"p" in r && (r.H = r.H % 12 + 12 * r.p); | |
var i = null != r.Z && po !== Hn | |
, a = new (i ? Hn : po); | |
return "j" in r ? a.setFullYear(r.y, 0, r.j) : "W" in r || "U" in r ? ("w" in r || (r.w = "W" in r ? 1 : 0), | |
a.setFullYear(r.y, 0, 1), | |
a.setFullYear(r.y, 0, "W" in r ? (r.w + 6) % 7 + 7 * r.W - (a.getDay() + 5) % 7 : r.w + 7 * r.U - (a.getDay() + 6) % 7)) : a.setFullYear(r.y, r.m, r.d), | |
a.setHours(r.H + (r.Z / 100 | 0), r.M + r.Z % 100, r.S, r.L), | |
i ? a._ : a | |
} | |
, | |
t.toString = function() { | |
return n | |
} | |
, | |
t | |
} | |
function e(n, t, e, r) { | |
for (var u, i, a, o = 0, l = t.length, c = e.length; l > o; ) { | |
if (r >= c) | |
return -1; | |
if (u = t.charCodeAt(o++), | |
37 === u) { | |
if (a = t.charAt(o++), | |
i = C[a in mo ? t.charAt(o++) : a], | |
!i || (r = i(n, e, r)) < 0) | |
return -1 | |
} else if (u != e.charCodeAt(r++)) | |
return -1 | |
} | |
return r | |
} | |
function r(n, t, e) { | |
_.lastIndex = 0; | |
var r = _.exec(t.slice(e)); | |
return r ? (n.w = w.get(r[0].toLowerCase()), | |
e + r[0].length) : -1 | |
} | |
function u(n, t, e) { | |
x.lastIndex = 0; | |
var r = x.exec(t.slice(e)); | |
return r ? (n.w = b.get(r[0].toLowerCase()), | |
e + r[0].length) : -1 | |
} | |
function i(n, t, e) { | |
N.lastIndex = 0; | |
var r = N.exec(t.slice(e)); | |
return r ? (n.m = E.get(r[0].toLowerCase()), | |
e + r[0].length) : -1 | |
} | |
function a(n, t, e) { | |
S.lastIndex = 0; | |
var r = S.exec(t.slice(e)); | |
return r ? (n.m = k.get(r[0].toLowerCase()), | |
e + r[0].length) : -1 | |
} | |
function o(n, t, r) { | |
return e(n, A.c.toString(), t, r) | |
} | |
function l(n, t, r) { | |
return e(n, A.x.toString(), t, r) | |
} | |
function c(n, t, r) { | |
return e(n, A.X.toString(), t, r) | |
} | |
function s(n, t, e) { | |
var r = M.get(t.slice(e, e += 2).toLowerCase()); | |
return null == r ? -1 : (n.p = r, | |
e) | |
} | |
var f = n.dateTime | |
, h = n.date | |
, g = n.time | |
, p = n.periods | |
, v = n.days | |
, d = n.shortDays | |
, m = n.months | |
, y = n.shortMonths; | |
t.utc = function(n) { | |
function e(n) { | |
try { | |
po = Hn; | |
var t = new po; | |
return t._ = n, | |
r(t) | |
} finally { | |
po = Date | |
} | |
} | |
var r = t(n); | |
return e.parse = function(n) { | |
try { | |
po = Hn; | |
var t = r.parse(n); | |
return t && t._ | |
} finally { | |
po = Date | |
} | |
} | |
, | |
e.toString = r.toString, | |
e | |
} | |
, | |
t.multi = t.utc.multi = ct; | |
var M = oa.map() | |
, x = Vn(v) | |
, b = Xn(v) | |
, _ = Vn(d) | |
, w = Xn(d) | |
, S = Vn(m) | |
, k = Xn(m) | |
, N = Vn(y) | |
, E = Xn(y); | |
p.forEach(function(n, t) { | |
M.set(n.toLowerCase(), t) | |
}); | |
var A = { | |
a: function(n) { | |
return d[n.getDay()] | |
}, | |
A: function(n) { | |
return v[n.getDay()] | |
}, | |
b: function(n) { | |
return y[n.getMonth()] | |
}, | |
B: function(n) { | |
return m[n.getMonth()] | |
}, | |
c: t(f), | |
d: function(n, t) { | |
return Zn(n.getDate(), t, 2) | |
}, | |
e: function(n, t) { | |
return Zn(n.getDate(), t, 2) | |
}, | |
H: function(n, t) { | |
return Zn(n.getHours(), t, 2) | |
}, | |
I: function(n, t) { | |
return Zn(n.getHours() % 12 || 12, t, 2) | |
}, | |
j: function(n, t) { | |
return Zn(1 + go.dayOfYear(n), t, 3) | |
}, | |
L: function(n, t) { | |
return Zn(n.getMilliseconds(), t, 3) | |
}, | |
m: function(n, t) { | |
return Zn(n.getMonth() + 1, t, 2) | |
}, | |
M: function(n, t) { | |
return Zn(n.getMinutes(), t, 2) | |
}, | |
p: function(n) { | |
return p[+(n.getHours() >= 12)] | |
}, | |
S: function(n, t) { | |
return Zn(n.getSeconds(), t, 2) | |
}, | |
U: function(n, t) { | |
return Zn(go.sundayOfYear(n), t, 2) | |
}, | |
w: function(n) { | |
return n.getDay() | |
}, | |
W: function(n, t) { | |
return Zn(go.mondayOfYear(n), t, 2) | |
}, | |
x: t(h), | |
X: t(g), | |
y: function(n, t) { | |
return Zn(n.getFullYear() % 100, t, 2) | |
}, | |
Y: function(n, t) { | |
return Zn(n.getFullYear() % 1e4, t, 4) | |
}, | |
Z: ot, | |
"%": function() { | |
return "%" | |
} | |
} | |
, C = { | |
a: r, | |
A: u, | |
b: i, | |
B: a, | |
c: o, | |
d: tt, | |
e: tt, | |
H: rt, | |
I: rt, | |
j: et, | |
L: at, | |
m: nt, | |
M: ut, | |
p: s, | |
S: it, | |
U: Bn, | |
w: $n, | |
W: Wn, | |
x: l, | |
X: c, | |
y: Gn, | |
Y: Jn, | |
Z: Kn, | |
"%": lt | |
}; | |
return t | |
} | |
function Zn(n, t, e) { | |
var r = 0 > n ? "-" : "" | |
, u = (r ? -n : n) + "" | |
, i = u.length; | |
return r + (e > i ? new Array(e - i + 1).join(t) + u : u) | |
} | |
function Vn(n) { | |
return new RegExp("^(?:" + n.map(oa.requote).join("|") + ")","i") | |
} | |
function Xn(n) { | |
for (var t = new c, e = -1, r = n.length; ++e < r; ) | |
t.set(n[e].toLowerCase(), e); | |
return t | |
} | |
function $n(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 1)); | |
return r ? (n.w = +r[0], | |
e + r[0].length) : -1 | |
} | |
function Bn(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e)); | |
return r ? (n.U = +r[0], | |
e + r[0].length) : -1 | |
} | |
function Wn(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e)); | |
return r ? (n.W = +r[0], | |
e + r[0].length) : -1 | |
} | |
function Jn(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 4)); | |
return r ? (n.y = +r[0], | |
e + r[0].length) : -1 | |
} | |
function Gn(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 2)); | |
return r ? (n.y = Qn(+r[0]), | |
e + r[0].length) : -1 | |
} | |
function Kn(n, t, e) { | |
return /^[+-]\d{4}$/.test(t = t.slice(e, e + 5)) ? (n.Z = -t, | |
e + 5) : -1 | |
} | |
function Qn(n) { | |
return n + (n > 68 ? 1900 : 2e3) | |
} | |
function nt(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 2)); | |
return r ? (n.m = r[0] - 1, | |
e + r[0].length) : -1 | |
} | |
function tt(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 2)); | |
return r ? (n.d = +r[0], | |
e + r[0].length) : -1 | |
} | |
function et(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 3)); | |
return r ? (n.j = +r[0], | |
e + r[0].length) : -1 | |
} | |
function rt(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 2)); | |
return r ? (n.H = +r[0], | |
e + r[0].length) : -1 | |
} | |
function ut(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 2)); | |
return r ? (n.M = +r[0], | |
e + r[0].length) : -1 | |
} | |
function it(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 2)); | |
return r ? (n.S = +r[0], | |
e + r[0].length) : -1 | |
} | |
function at(n, t, e) { | |
yo.lastIndex = 0; | |
var r = yo.exec(t.slice(e, e + 3)); | |
return r ? (n.L = +r[0], | |
e + r[0].length) : -1 | |
} | |
function ot(n) { | |
var t = n.getTimezoneOffset() | |
, e = t > 0 ? "-" : "+" | |
, r = Ma(t) / 60 | 0 | |
, u = Ma(t) % 60; | |
return e + Zn(r, "0", 2) + Zn(u, "0", 2) | |
} | |
function lt(n, t, e) { | |
Mo.lastIndex = 0; | |
var r = Mo.exec(t.slice(e, e + 1)); | |
return r ? e + r[0].length : -1 | |
} | |
function ct(n) { | |
for (var t = n.length, e = -1; ++e < t; ) | |
n[e][0] = this(n[e][0]); | |
return function(t) { | |
for (var e = 0, r = n[e]; !r[1](t); ) | |
r = n[++e]; | |
return r[0](t) | |
} | |
} | |
function st() {} | |
function ft(n, t, e) { | |
var r = e.s = n + t | |
, u = r - n | |
, i = r - u; | |
e.t = n - i + (t - u) | |
} | |
function ht(n, t) { | |
n && wo.hasOwnProperty(n.type) && wo[n.type](n, t) | |
} | |
function gt(n, t, e) { | |
var r, u = -1, i = n.length - e; | |
for (t.lineStart(); ++u < i; ) | |
r = n[u], | |
t.point(r[0], r[1], r[2]); | |
t.lineEnd() | |
} | |
function pt(n, t) { | |
var e = -1 | |
, r = n.length; | |
for (t.polygonStart(); ++e < r; ) | |
gt(n[e], t, 1); | |
t.polygonEnd() | |
} | |
function vt() { | |
function n(n, t) { | |
n *= Ia, | |
t = t * Ia / 2 + ja / 4; | |
var e = n - r | |
, a = e >= 0 ? 1 : -1 | |
, o = a * e | |
, l = Math.cos(t) | |
, c = Math.sin(t) | |
, s = i * c | |
, f = u * l + s * Math.cos(o) | |
, h = s * a * Math.sin(o); | |
ko.add(Math.atan2(h, f)), | |
r = n, | |
u = l, | |
i = c | |
} | |
var t, e, r, u, i; | |
No.point = function(a, o) { | |
No.point = n, | |
r = (t = a) * Ia, | |
u = Math.cos(o = (e = o) * Ia / 2 + ja / 4), | |
i = Math.sin(o) | |
} | |
, | |
No.lineEnd = function() { | |
n(t, e) | |
} | |
} | |
function dt(n) { | |
var t = n[0] | |
, e = n[1] | |
, r = Math.cos(e); | |
return [r * Math.cos(t), r * Math.sin(t), Math.sin(e)] | |
} | |
function mt(n, t) { | |
return n[0] * t[0] + n[1] * t[1] + n[2] * t[2] | |
} | |
function yt(n, t) { | |
return [n[1] * t[2] - n[2] * t[1], n[2] * t[0] - n[0] * t[2], n[0] * t[1] - n[1] * t[0]] | |
} | |
function Mt(n, t) { | |
n[0] += t[0], | |
n[1] += t[1], | |
n[2] += t[2] | |
} | |
function xt(n, t) { | |
return [n[0] * t, n[1] * t, n[2] * t] | |
} | |
function bt(n) { | |
var t = Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]); | |
n[0] /= t, | |
n[1] /= t, | |
n[2] /= t | |
} | |
function _t(n) { | |
return [Math.atan2(n[1], n[0]), tn(n[2])] | |
} | |
function wt(n, t) { | |
return Ma(n[0] - t[0]) < Pa && Ma(n[1] - t[1]) < Pa | |
} | |
function St(n, t) { | |
n *= Ia; | |
var e = Math.cos(t *= Ia); | |
kt(e * Math.cos(n), e * Math.sin(n), Math.sin(t)) | |
} | |
function kt(n, t, e) { | |
++Eo, | |
Co += (n - Co) / Eo, | |
zo += (t - zo) / Eo, | |
Lo += (e - Lo) / Eo | |
} | |
function Nt() { | |
function n(n, u) { | |
n *= Ia; | |
var i = Math.cos(u *= Ia) | |
, a = i * Math.cos(n) | |
, o = i * Math.sin(n) | |
, l = Math.sin(u) | |
, c = Math.atan2(Math.sqrt((c = e * l - r * o) * c + (c = r * a - t * l) * c + (c = t * o - e * a) * c), t * a + e * o + r * l); | |
Ao += c, | |
qo += c * (t + (t = a)), | |
To += c * (e + (e = o)), | |
Ro += c * (r + (r = l)), | |
kt(t, e, r) | |
} | |
var t, e, r; | |
jo.point = function(u, i) { | |
u *= Ia; | |
var a = Math.cos(i *= Ia); | |
t = a * Math.cos(u), | |
e = a * Math.sin(u), | |
r = Math.sin(i), | |
jo.point = n, | |
kt(t, e, r) | |
} | |
} | |
function Et() { | |
jo.point = St | |
} | |
function At() { | |
function n(n, t) { | |
n *= Ia; | |
var e = Math.cos(t *= Ia) | |
, a = e * Math.cos(n) | |
, o = e * Math.sin(n) | |
, l = Math.sin(t) | |
, c = u * l - i * o | |
, s = i * a - r * l | |
, f = r * o - u * a | |
, h = Math.sqrt(c * c + s * s + f * f) | |
, g = r * a + u * o + i * l | |
, p = h && -nn(g) / h | |
, v = Math.atan2(h, g); | |
Do += p * c, | |
Po += p * s, | |
Uo += p * f, | |
Ao += v, | |
qo += v * (r + (r = a)), | |
To += v * (u + (u = o)), | |
Ro += v * (i + (i = l)), | |
kt(r, u, i) | |
} | |
var t, e, r, u, i; | |
jo.point = function(a, o) { | |
t = a, | |
e = o, | |
jo.point = n, | |
a *= Ia; | |
var l = Math.cos(o *= Ia); | |
r = l * Math.cos(a), | |
u = l * Math.sin(a), | |
i = Math.sin(o), | |
kt(r, u, i) | |
} | |
, | |
jo.lineEnd = function() { | |
n(t, e), | |
jo.lineEnd = Et, | |
jo.point = St | |
} | |
} | |
function Ct(n, t) { | |
function e(e, r) { | |
return e = n(e, r), | |
t(e[0], e[1]) | |
} | |
return n.invert && t.invert && (e.invert = function(e, r) { | |
return e = t.invert(e, r), | |
e && n.invert(e[0], e[1]) | |
} | |
), | |
e | |
} | |
function zt() { | |
return !0 | |
} | |
function Lt(n, t, e, r, u) { | |
var i = [] | |
, a = []; | |
if (n.forEach(function(n) { | |
if (!((t = n.length - 1) <= 0)) { | |
var t, e = n[0], r = n[t]; | |
if (wt(e, r)) { | |
u.lineStart(); | |
for (var o = 0; t > o; ++o) | |
u.point((e = n[o])[0], e[1]); | |
return void u.lineEnd() | |
} | |
var l = new Tt(e,n,null ,!0) | |
, c = new Tt(e,null ,l,!1); | |
l.o = c, | |
i.push(l), | |
a.push(c), | |
l = new Tt(r,n,null ,!1), | |
c = new Tt(r,null ,l,!0), | |
l.o = c, | |
i.push(l), | |
a.push(c) | |
} | |
}), | |
a.sort(t), | |
qt(i), | |
qt(a), | |
i.length) { | |
for (var o = 0, l = e, c = a.length; c > o; ++o) | |
a[o].e = l = !l; | |
for (var s, f, h = i[0]; ; ) { | |
for (var g = h, p = !0; g.v; ) | |
if ((g = g.n) === h) | |
return; | |
s = g.z, | |
u.lineStart(); | |
do { | |
if (g.v = g.o.v = !0, | |
g.e) { | |
if (p) | |
for (var o = 0, c = s.length; c > o; ++o) | |
u.point((f = s[o])[0], f[1]); | |
else | |
r(g.x, g.n.x, 1, u); | |
g = g.n | |
} else { | |
if (p) { | |
s = g.p.z; | |
for (var o = s.length - 1; o >= 0; --o) | |
u.point((f = s[o])[0], f[1]) | |
} else | |
r(g.x, g.p.x, -1, u); | |
g = g.p | |
} | |
g = g.o, | |
s = g.z, | |
p = !p | |
} while (!g.v);u.lineEnd() | |
} | |
} | |
} | |
function qt(n) { | |
if (t = n.length) { | |
for (var t, e, r = 0, u = n[0]; ++r < t; ) | |
u.n = e = n[r], | |
e.p = u, | |
u = e; | |
u.n = e = n[0], | |
e.p = u | |
} | |
} | |
function Tt(n, t, e, r) { | |
this.x = n, | |
this.z = t, | |
this.o = e, | |
this.e = r, | |
this.v = !1, | |
this.n = this.p = null | |
} | |
function Rt(n, t, e, r) { | |
return function(u, i) { | |
function a(t, e) { | |
var r = u(t, e); | |
n(t = r[0], e = r[1]) && i.point(t, e) | |
} | |
function o(n, t) { | |
var e = u(n, t); | |
d.point(e[0], e[1]) | |
} | |
function l() { | |
y.point = o, | |
d.lineStart() | |
} | |
function c() { | |
y.point = a, | |
d.lineEnd() | |
} | |
function s(n, t) { | |
v.push([n, t]); | |
var e = u(n, t); | |
x.point(e[0], e[1]) | |
} | |
function f() { | |
x.lineStart(), | |
v = [] | |
} | |
function h() { | |
s(v[0][0], v[0][1]), | |
x.lineEnd(); | |
var n, t = x.clean(), e = M.buffer(), r = e.length; | |
if (v.pop(), | |
p.push(v), | |
v = null , | |
r) | |
if (1 & t) { | |
n = e[0]; | |
var u, r = n.length - 1, a = -1; | |
if (r > 0) { | |
for (b || (i.polygonStart(), | |
b = !0), | |
i.lineStart(); ++a < r; ) | |
i.point((u = n[a])[0], u[1]); | |
i.lineEnd() | |
} | |
} else | |
r > 1 && 2 & t && e.push(e.pop().concat(e.shift())), | |
g.push(e.filter(Dt)) | |
} | |
var g, p, v, d = t(i), m = u.invert(r[0], r[1]), y = { | |
point: a, | |
lineStart: l, | |
lineEnd: c, | |
polygonStart: function() { | |
y.point = s, | |
y.lineStart = f, | |
y.lineEnd = h, | |
g = [], | |
p = [] | |
}, | |
polygonEnd: function() { | |
y.point = a, | |
y.lineStart = l, | |
y.lineEnd = c, | |
g = oa.merge(g); | |
var n = Ot(m, p); | |
g.length ? (b || (i.polygonStart(), | |
b = !0), | |
Lt(g, Ut, n, e, i)) : n && (b || (i.polygonStart(), | |
b = !0), | |
i.lineStart(), | |
e(null , null , 1, i), | |
i.lineEnd()), | |
b && (i.polygonEnd(), | |
b = !1), | |
g = p = null | |
}, | |
sphere: function() { | |
i.polygonStart(), | |
i.lineStart(), | |
e(null , null , 1, i), | |
i.lineEnd(), | |
i.polygonEnd() | |
} | |
}, M = Pt(), x = t(M), b = !1; | |
return y | |
} | |
} | |
function Dt(n) { | |
return n.length > 1 | |
} | |
function Pt() { | |
var n, t = []; | |
return { | |
lineStart: function() { | |
t.push(n = []) | |
}, | |
point: function(t, e) { | |
n.push([t, e]) | |
}, | |
lineEnd: b, | |
buffer: function() { | |
var e = t; | |
return t = [], | |
n = null , | |
e | |
}, | |
rejoin: function() { | |
t.length > 1 && t.push(t.pop().concat(t.shift())) | |
} | |
} | |
} | |
function Ut(n, t) { | |
return ((n = n.x)[0] < 0 ? n[1] - Oa - Pa : Oa - n[1]) - ((t = t.x)[0] < 0 ? t[1] - Oa - Pa : Oa - t[1]) | |
} | |
function jt(n) { | |
var t, e = NaN, r = NaN, u = NaN; | |
return { | |
lineStart: function() { | |
n.lineStart(), | |
t = 1 | |
}, | |
point: function(i, a) { | |
var o = i > 0 ? ja : -ja | |
, l = Ma(i - e); | |
Ma(l - ja) < Pa ? (n.point(e, r = (r + a) / 2 > 0 ? Oa : -Oa), | |
n.point(u, r), | |
n.lineEnd(), | |
n.lineStart(), | |
n.point(o, r), | |
n.point(i, r), | |
t = 0) : u !== o && l >= ja && (Ma(e - u) < Pa && (e -= u * Pa), | |
Ma(i - o) < Pa && (i -= o * Pa), | |
r = Ft(e, r, i, a), | |
n.point(u, r), | |
n.lineEnd(), | |
n.lineStart(), | |
n.point(o, r), | |
t = 0), | |
n.point(e = i, r = a), | |
u = o | |
}, | |
lineEnd: function() { | |
n.lineEnd(), | |
e = r = NaN | |
}, | |
clean: function() { | |
return 2 - t | |
} | |
} | |
} | |
function Ft(n, t, e, r) { | |
var u, i, a = Math.sin(n - e); | |
return Ma(a) > Pa ? Math.atan((Math.sin(t) * (i = Math.cos(r)) * Math.sin(e) - Math.sin(r) * (u = Math.cos(t)) * Math.sin(n)) / (u * i * a)) : (t + r) / 2 | |
} | |
function Ht(n, t, e, r) { | |
var u; | |
if (null == n) | |
u = e * Oa, | |
r.point(-ja, u), | |
r.point(0, u), | |
r.point(ja, u), | |
r.point(ja, 0), | |
r.point(ja, -u), | |
r.point(0, -u), | |
r.point(-ja, -u), | |
r.point(-ja, 0), | |
r.point(-ja, u); | |
else if (Ma(n[0] - t[0]) > Pa) { | |
var i = n[0] < t[0] ? ja : -ja; | |
u = e * i / 2, | |
r.point(-i, u), | |
r.point(0, u), | |
r.point(i, u) | |
} else | |
r.point(t[0], t[1]) | |
} | |
function Ot(n, t) { | |
var e = n[0] | |
, r = n[1] | |
, u = [Math.sin(e), -Math.cos(e), 0] | |
, i = 0 | |
, a = 0; | |
ko.reset(); | |
for (var o = 0, l = t.length; l > o; ++o) { | |
var c = t[o] | |
, s = c.length; | |
if (s) | |
for (var f = c[0], h = f[0], g = f[1] / 2 + ja / 4, p = Math.sin(g), v = Math.cos(g), d = 1; ; ) { | |
d === s && (d = 0), | |
n = c[d]; | |
var m = n[0] | |
, y = n[1] / 2 + ja / 4 | |
, M = Math.sin(y) | |
, x = Math.cos(y) | |
, b = m - h | |
, _ = b >= 0 ? 1 : -1 | |
, w = _ * b | |
, S = w > ja | |
, k = p * M; | |
if (ko.add(Math.atan2(k * _ * Math.sin(w), v * x + k * Math.cos(w))), | |
i += S ? b + _ * Fa : b, | |
S ^ h >= e ^ m >= e) { | |
var N = yt(dt(f), dt(n)); | |
bt(N); | |
var E = yt(u, N); | |
bt(E); | |
var A = (S ^ b >= 0 ? -1 : 1) * tn(E[2]); | |
(r > A || r === A && (N[0] || N[1])) && (a += S ^ b >= 0 ? 1 : -1) | |
} | |
if (!d++) | |
break; | |
h = m, | |
p = M, | |
v = x, | |
f = n | |
} | |
} | |
return (-Pa > i || Pa > i && 0 > ko) ^ 1 & a | |
} | |
function It(n) { | |
function t(n, t) { | |
return Math.cos(n) * Math.cos(t) > i | |
} | |
function e(n) { | |
var e, i, l, c, s; | |
return { | |
lineStart: function() { | |
c = l = !1, | |
s = 1 | |
}, | |
point: function(f, h) { | |
var g, p = [f, h], v = t(f, h), d = a ? v ? 0 : u(f, h) : v ? u(f + (0 > f ? ja : -ja), h) : 0; | |
if (!e && (c = l = v) && n.lineStart(), | |
v !== l && (g = r(e, p), | |
(wt(e, g) || wt(p, g)) && (p[0] += Pa, | |
p[1] += Pa, | |
v = t(p[0], p[1]))), | |
v !== l) | |
s = 0, | |
v ? (n.lineStart(), | |
g = r(p, e), | |
n.point(g[0], g[1])) : (g = r(e, p), | |
n.point(g[0], g[1]), | |
n.lineEnd()), | |
e = g; | |
else if (o && e && a ^ v) { | |
var m; | |
d & i || !(m = r(p, e, !0)) || (s = 0, | |
a ? (n.lineStart(), | |
n.point(m[0][0], m[0][1]), | |
n.point(m[1][0], m[1][1]), | |
n.lineEnd()) : (n.point(m[1][0], m[1][1]), | |
n.lineEnd(), | |
n.lineStart(), | |
n.point(m[0][0], m[0][1]))) | |
} | |
!v || e && wt(e, p) || n.point(p[0], p[1]), | |
e = p, | |
l = v, | |
i = d | |
}, | |
lineEnd: function() { | |
l && n.lineEnd(), | |
e = null | |
}, | |
clean: function() { | |
return s | (c && l) << 1 | |
} | |
} | |
} | |
function r(n, t, e) { | |
var r = dt(n) | |
, u = dt(t) | |
, a = [1, 0, 0] | |
, o = yt(r, u) | |
, l = mt(o, o) | |
, c = o[0] | |
, s = l - c * c; | |
if (!s) | |
return !e && n; | |
var f = i * l / s | |
, h = -i * c / s | |
, g = yt(a, o) | |
, p = xt(a, f) | |
, v = xt(o, h); | |
Mt(p, v); | |
var d = g | |
, m = mt(p, d) | |
, y = mt(d, d) | |
, M = m * m - y * (mt(p, p) - 1); | |
if (!(0 > M)) { | |
var x = Math.sqrt(M) | |
, b = xt(d, (-m - x) / y); | |
if (Mt(b, p), | |
b = _t(b), | |
!e) | |
return b; | |
var _, w = n[0], S = t[0], k = n[1], N = t[1]; | |
w > S && (_ = w, | |
w = S, | |
S = _); | |
var E = S - w | |
, A = Ma(E - ja) < Pa | |
, C = A || Pa > E; | |
if (!A && k > N && (_ = k, | |
k = N, | |
N = _), | |
C ? A ? k + N > 0 ^ b[1] < (Ma(b[0] - w) < Pa ? k : N) : k <= b[1] && b[1] <= N : E > ja ^ (w <= b[0] && b[0] <= S)) { | |
var z = xt(d, (-m + x) / y); | |
return Mt(z, p), | |
[b, _t(z)] | |
} | |
} | |
} | |
function u(t, e) { | |
var r = a ? n : ja - n | |
, u = 0; | |
return -r > t ? u |= 1 : t > r && (u |= 2), | |
-r > e ? u |= 4 : e > r && (u |= 8), | |
u | |
} | |
var i = Math.cos(n) | |
, a = i > 0 | |
, o = Ma(i) > Pa | |
, l = ve(n, 6 * Ia); | |
return Rt(t, e, l, a ? [0, -n] : [-ja, n - ja]) | |
} | |
function Yt(n, t, e, r) { | |
return function(u) { | |
var i, a = u.a, o = u.b, l = a.x, c = a.y, s = o.x, f = o.y, h = 0, g = 1, p = s - l, v = f - c; | |
if (i = n - l, | |
p || !(i > 0)) { | |
if (i /= p, | |
0 > p) { | |
if (h > i) | |
return; | |
g > i && (g = i) | |
} else if (p > 0) { | |
if (i > g) | |
return; | |
i > h && (h = i) | |
} | |
if (i = e - l, | |
p || !(0 > i)) { | |
if (i /= p, | |
0 > p) { | |
if (i > g) | |
return; | |
i > h && (h = i) | |
} else if (p > 0) { | |
if (h > i) | |
return; | |
g > i && (g = i) | |
} | |
if (i = t - c, | |
v || !(i > 0)) { | |
if (i /= v, | |
0 > v) { | |
if (h > i) | |
return; | |
g > i && (g = i) | |
} else if (v > 0) { | |
if (i > g) | |
return; | |
i > h && (h = i) | |
} | |
if (i = r - c, | |
v || !(0 > i)) { | |
if (i /= v, | |
0 > v) { | |
if (i > g) | |
return; | |
i > h && (h = i) | |
} else if (v > 0) { | |
if (h > i) | |
return; | |
g > i && (g = i) | |
} | |
return h > 0 && (u.a = { | |
x: l + h * p, | |
y: c + h * v | |
}), | |
1 > g && (u.b = { | |
x: l + g * p, | |
y: c + g * v | |
}), | |
u | |
} | |
} | |
} | |
} | |
} | |
} | |
function Zt(n, t, e, r) { | |
function u(r, u) { | |
return Ma(r[0] - n) < Pa ? u > 0 ? 0 : 3 : Ma(r[0] - e) < Pa ? u > 0 ? 2 : 1 : Ma(r[1] - t) < Pa ? u > 0 ? 1 : 0 : u > 0 ? 3 : 2 | |
} | |
function i(n, t) { | |
return a(n.x, t.x) | |
} | |
function a(n, t) { | |
var e = u(n, 1) | |
, r = u(t, 1); | |
return e !== r ? e - r : 0 === e ? t[1] - n[1] : 1 === e ? n[0] - t[0] : 2 === e ? n[1] - t[1] : t[0] - n[0] | |
} | |
return function(o) { | |
function l(n) { | |
for (var t = 0, e = d.length, r = n[1], u = 0; e > u; ++u) | |
for (var i, a = 1, o = d[u], l = o.length, c = o[0]; l > a; ++a) | |
i = o[a], | |
c[1] <= r ? i[1] > r && Q(c, i, n) > 0 && ++t : i[1] <= r && Q(c, i, n) < 0 && --t, | |
c = i; | |
return 0 !== t | |
} | |
function c(i, o, l, c) { | |
var s = 0 | |
, f = 0; | |
if (null == i || (s = u(i, l)) !== (f = u(o, l)) || a(i, o) < 0 ^ l > 0) { | |
do | |
c.point(0 === s || 3 === s ? n : e, s > 1 ? r : t); | |
while ((s = (s + l + 4) % 4) !== f) | |
} else | |
c.point(o[0], o[1]) | |
} | |
function s(u, i) { | |
return u >= n && e >= u && i >= t && r >= i | |
} | |
function f(n, t) { | |
s(n, t) && o.point(n, t) | |
} | |
function h() { | |
C.point = p, | |
d && d.push(m = []), | |
S = !0, | |
w = !1, | |
b = _ = NaN | |
} | |
function g() { | |
v && (p(y, M), | |
x && w && E.rejoin(), | |
v.push(E.buffer())), | |
C.point = f, | |
w && o.lineEnd() | |
} | |
function p(n, t) { | |
n = Math.max(-Ho, Math.min(Ho, n)), | |
t = Math.max(-Ho, Math.min(Ho, t)); | |
var e = s(n, t); | |
if (d && m.push([n, t]), | |
S) | |
y = n, | |
M = t, | |
x = e, | |
S = !1, | |
e && (o.lineStart(), | |
o.point(n, t)); | |
else if (e && w) | |
o.point(n, t); | |
else { | |
var r = { | |
a: { | |
x: b, | |
y: _ | |
}, | |
b: { | |
x: n, | |
y: t | |
} | |
}; | |
A(r) ? (w || (o.lineStart(), | |
o.point(r.a.x, r.a.y)), | |
o.point(r.b.x, r.b.y), | |
e || o.lineEnd(), | |
k = !1) : e && (o.lineStart(), | |
o.point(n, t), | |
k = !1) | |
} | |
b = n, | |
_ = t, | |
w = e | |
} | |
var v, d, m, y, M, x, b, _, w, S, k, N = o, E = Pt(), A = Yt(n, t, e, r), C = { | |
point: f, | |
lineStart: h, | |
lineEnd: g, | |
polygonStart: function() { | |
o = E, | |
v = [], | |
d = [], | |
k = !0 | |
}, | |
polygonEnd: function() { | |
o = N, | |
v = oa.merge(v); | |
var t = l([n, r]) | |
, e = k && t | |
, u = v.length; | |
(e || u) && (o.polygonStart(), | |
e && (o.lineStart(), | |
c(null , null , 1, o), | |
o.lineEnd()), | |
u && Lt(v, i, t, c, o), | |
o.polygonEnd()), | |
v = d = m = null | |
} | |
}; | |
return C | |
} | |
} | |
function Vt(n) { | |
var t = 0 | |
, e = ja / 3 | |
, r = oe(n) | |
, u = r(t, e); | |
return u.parallels = function(n) { | |
return arguments.length ? r(t = n[0] * ja / 180, e = n[1] * ja / 180) : [t / ja * 180, e / ja * 180] | |
} | |
, | |
u | |
} | |
function Xt(n, t) { | |
function e(n, t) { | |
var e = Math.sqrt(i - 2 * u * Math.sin(t)) / u; | |
return [e * Math.sin(n *= u), a - e * Math.cos(n)] | |
} | |
var r = Math.sin(n) | |
, u = (r + Math.sin(t)) / 2 | |
, i = 1 + r * (2 * u - r) | |
, a = Math.sqrt(i) / u; | |
return e.invert = function(n, t) { | |
var e = a - t; | |
return [Math.atan2(n, e) / u, tn((i - (n * n + e * e) * u * u) / (2 * u))] | |
} | |
, | |
e | |
} | |
function $t() { | |
function n(n, t) { | |
Io += u * n - r * t, | |
r = n, | |
u = t | |
} | |
var t, e, r, u; | |
$o.point = function(i, a) { | |
$o.point = n, | |
t = r = i, | |
e = u = a | |
} | |
, | |
$o.lineEnd = function() { | |
n(t, e) | |
} | |
} | |
function Bt(n, t) { | |
Yo > n && (Yo = n), | |
n > Vo && (Vo = n), | |
Zo > t && (Zo = t), | |
t > Xo && (Xo = t) | |
} | |
function Wt() { | |
function n(n, t) { | |
a.push("M", n, ",", t, i) | |
} | |
function t(n, t) { | |
a.push("M", n, ",", t), | |
o.point = e | |
} | |
function e(n, t) { | |
a.push("L", n, ",", t) | |
} | |
function r() { | |
o.point = n | |
} | |
function u() { | |
a.push("Z") | |
} | |
var i = Jt(4.5) | |
, a = [] | |
, o = { | |
point: n, | |
lineStart: function() { | |
o.point = t | |
}, | |
lineEnd: r, | |
polygonStart: function() { | |
o.lineEnd = u | |
}, | |
polygonEnd: function() { | |
o.lineEnd = r, | |
o.point = n | |
}, | |
pointRadius: function(n) { | |
return i = Jt(n), | |
o | |
}, | |
result: function() { | |
if (a.length) { | |
var n = a.join(""); | |
return a = [], | |
n | |
} | |
} | |
}; | |
return o | |
} | |
function Jt(n) { | |
return "m0," + n + "a" + n + "," + n + " 0 1,1 0," + -2 * n + "a" + n + "," + n + " 0 1,1 0," + 2 * n + "z" | |
} | |
function Gt(n, t) { | |
Co += n, | |
zo += t, | |
++Lo | |
} | |
function Kt() { | |
function n(n, r) { | |
var u = n - t | |
, i = r - e | |
, a = Math.sqrt(u * u + i * i); | |
qo += a * (t + n) / 2, | |
To += a * (e + r) / 2, | |
Ro += a, | |
Gt(t = n, e = r) | |
} | |
var t, e; | |
Wo.point = function(r, u) { | |
Wo.point = n, | |
Gt(t = r, e = u) | |
} | |
} | |
function Qt() { | |
Wo.point = Gt | |
} | |
function ne() { | |
function n(n, t) { | |
var e = n - r | |
, i = t - u | |
, a = Math.sqrt(e * e + i * i); | |
qo += a * (r + n) / 2, | |
To += a * (u + t) / 2, | |
Ro += a, | |
a = u * n - r * t, | |
Do += a * (r + n), | |
Po += a * (u + t), | |
Uo += 3 * a, | |
Gt(r = n, u = t) | |
} | |
var t, e, r, u; | |
Wo.point = function(i, a) { | |
Wo.point = n, | |
Gt(t = r = i, e = u = a) | |
} | |
, | |
Wo.lineEnd = function() { | |
n(t, e) | |
} | |
} | |
function te(n) { | |
function t(t, e) { | |
n.moveTo(t + a, e), | |
n.arc(t, e, a, 0, Fa) | |
} | |
function e(t, e) { | |
n.moveTo(t, e), | |
o.point = r | |
} | |
function r(t, e) { | |
n.lineTo(t, e) | |
} | |
function u() { | |
o.point = t | |
} | |
function i() { | |
n.closePath() | |
} | |
var a = 4.5 | |
, o = { | |
point: t, | |
lineStart: function() { | |
o.point = e | |
}, | |
lineEnd: u, | |
polygonStart: function() { | |
o.lineEnd = i | |
}, | |
polygonEnd: function() { | |
o.lineEnd = u, | |
o.point = t | |
}, | |
pointRadius: function(n) { | |
return a = n, | |
o | |
}, | |
result: b | |
}; | |
return o | |
} | |
function ee(n) { | |
function t(n) { | |
return (o ? r : e)(n) | |
} | |
function e(t) { | |
return ie(t, function(e, r) { | |
e = n(e, r), | |
t.point(e[0], e[1]) | |
}) | |
} | |
function r(t) { | |
function e(e, r) { | |
e = n(e, r), | |
t.point(e[0], e[1]) | |
} | |
function r() { | |
M = NaN, | |
S.point = i, | |
t.lineStart() | |
} | |
function i(e, r) { | |
var i = dt([e, r]) | |
, a = n(e, r); | |
u(M, x, y, b, _, w, M = a[0], x = a[1], y = e, b = i[0], _ = i[1], w = i[2], o, t), | |
t.point(M, x) | |
} | |
function a() { | |
S.point = e, | |
t.lineEnd() | |
} | |
function l() { | |
r(), | |
S.point = c, | |
S.lineEnd = s | |
} | |
function c(n, t) { | |
i(f = n, h = t), | |
g = M, | |
p = x, | |
v = b, | |
d = _, | |
m = w, | |
S.point = i | |
} | |
function s() { | |
u(M, x, y, b, _, w, g, p, f, v, d, m, o, t), | |
S.lineEnd = a, | |
a() | |
} | |
var f, h, g, p, v, d, m, y, M, x, b, _, w, S = { | |
point: e, | |
lineStart: r, | |
lineEnd: a, | |
polygonStart: function() { | |
t.polygonStart(), | |
S.lineStart = l | |
}, | |
polygonEnd: function() { | |
t.polygonEnd(), | |
S.lineStart = r | |
} | |
}; | |
return S | |
} | |
function u(t, e, r, o, l, c, s, f, h, g, p, v, d, m) { | |
var y = s - t | |
, M = f - e | |
, x = y * y + M * M; | |
if (x > 4 * i && d--) { | |
var b = o + g | |
, _ = l + p | |
, w = c + v | |
, S = Math.sqrt(b * b + _ * _ + w * w) | |
, k = Math.asin(w /= S) | |
, N = Ma(Ma(w) - 1) < Pa || Ma(r - h) < Pa ? (r + h) / 2 : Math.atan2(_, b) | |
, E = n(N, k) | |
, A = E[0] | |
, C = E[1] | |
, z = A - t | |
, L = C - e | |
, q = M * z - y * L; | |
(q * q / x > i || Ma((y * z + M * L) / x - .5) > .3 || a > o * g + l * p + c * v) && (u(t, e, r, o, l, c, A, C, N, b /= S, _ /= S, w, d, m), | |
m.point(A, C), | |
u(A, C, N, b, _, w, s, f, h, g, p, v, d, m)) | |
} | |
} | |
var i = .5 | |
, a = Math.cos(30 * Ia) | |
, o = 16; | |
return t.precision = function(n) { | |
return arguments.length ? (o = (i = n * n) > 0 && 16, | |
t) : Math.sqrt(i) | |
} | |
, | |
t | |
} | |
function re(n) { | |
var t = ee(function(t, e) { | |
return n([t * Ya, e * Ya]) | |
}); | |
return function(n) { | |
return le(t(n)) | |
} | |
} | |
function ue(n) { | |
this.stream = n | |
} | |
function ie(n, t) { | |
return { | |
point: t, | |
sphere: function() { | |
n.sphere() | |
}, | |
lineStart: function() { | |
n.lineStart() | |
}, | |
lineEnd: function() { | |
n.lineEnd() | |
}, | |
polygonStart: function() { | |
n.polygonStart() | |
}, | |
polygonEnd: function() { | |
n.polygonEnd() | |
} | |
} | |
} | |
function ae(n) { | |
return oe(function() { | |
return n | |
})() | |
} | |
function oe(n) { | |
function t(n) { | |
return n = o(n[0] * Ia, n[1] * Ia), | |
[n[0] * h + l, c - n[1] * h] | |
} | |
function e(n) { | |
return n = o.invert((n[0] - l) / h, (c - n[1]) / h), | |
n && [n[0] * Ya, n[1] * Ya] | |
} | |
function r() { | |
o = Ct(a = fe(m, M, x), i); | |
var n = i(v, d); | |
return l = g - n[0] * h, | |
c = p + n[1] * h, | |
u() | |
} | |
function u() { | |
return s && (s.valid = !1, | |
s = null ), | |
t | |
} | |
var i, a, o, l, c, s, f = ee(function(n, t) { | |
return n = i(n, t), | |
[n[0] * h + l, c - n[1] * h] | |
}), h = 150, g = 480, p = 250, v = 0, d = 0, m = 0, M = 0, x = 0, b = Fo, _ = y, w = null , S = null ; | |
return t.stream = function(n) { | |
return s && (s.valid = !1), | |
s = le(b(a, f(_(n)))), | |
s.valid = !0, | |
s | |
} | |
, | |
t.clipAngle = function(n) { | |
return arguments.length ? (b = null == n ? (w = n, | |
Fo) : It((w = +n) * Ia), | |
u()) : w | |
} | |
, | |
t.clipExtent = function(n) { | |
return arguments.length ? (S = n, | |
_ = n ? Zt(n[0][0], n[0][1], n[1][0], n[1][1]) : y, | |
u()) : S | |
} | |
, | |
t.scale = function(n) { | |
return arguments.length ? (h = +n, | |
r()) : h | |
} | |
, | |
t.translate = function(n) { | |
return arguments.length ? (g = +n[0], | |
p = +n[1], | |
r()) : [g, p] | |
} | |
, | |
t.center = function(n) { | |
return arguments.length ? (v = n[0] % 360 * Ia, | |
d = n[1] % 360 * Ia, | |
r()) : [v * Ya, d * Ya] | |
} | |
, | |
t.rotate = function(n) { | |
return arguments.length ? (m = n[0] % 360 * Ia, | |
M = n[1] % 360 * Ia, | |
x = n.length > 2 ? n[2] % 360 * Ia : 0, | |
r()) : [m * Ya, M * Ya, x * Ya] | |
} | |
, | |
oa.rebind(t, f, "precision"), | |
function() { | |
return i = n.apply(this, arguments), | |
t.invert = i.invert && e, | |
r() | |
} | |
} | |
function le(n) { | |
return ie(n, function(t, e) { | |
n.point(t * Ia, e * Ia) | |
}) | |
} | |
function ce(n, t) { | |
return [n, t] | |
} | |
function se(n, t) { | |
return [n > ja ? n - Fa : -ja > n ? n + Fa : n, t] | |
} | |
function fe(n, t, e) { | |
return n ? t || e ? Ct(ge(n), pe(t, e)) : ge(n) : t || e ? pe(t, e) : se | |
} | |
function he(n) { | |
return function(t, e) { | |
return t += n, | |
[t > ja ? t - Fa : -ja > t ? t + Fa : t, e] | |
} | |
} | |
function ge(n) { | |
var t = he(n); | |
return t.invert = he(-n), | |
t | |
} | |
function pe(n, t) { | |
function e(n, t) { | |
var e = Math.cos(t) | |
, o = Math.cos(n) * e | |
, l = Math.sin(n) * e | |
, c = Math.sin(t) | |
, s = c * r + o * u; | |
return [Math.atan2(l * i - s * a, o * r - c * u), tn(s * i + l * a)] | |
} | |
var r = Math.cos(n) | |
, u = Math.sin(n) | |
, i = Math.cos(t) | |
, a = Math.sin(t); | |
return e.invert = function(n, t) { | |
var e = Math.cos(t) | |
, o = Math.cos(n) * e | |
, l = Math.sin(n) * e | |
, c = Math.sin(t) | |
, s = c * i - l * a; | |
return [Math.atan2(l * i + c * a, o * r + s * u), tn(s * r - o * u)] | |
} | |
, | |
e | |
} | |
function ve(n, t) { | |
var e = Math.cos(n) | |
, r = Math.sin(n); | |
return function(u, i, a, o) { | |
var l = a * t; | |
null != u ? (u = de(e, u), | |
i = de(e, i), | |
(a > 0 ? i > u : u > i) && (u += a * Fa)) : (u = n + a * Fa, | |
i = n - .5 * l); | |
for (var c, s = u; a > 0 ? s > i : i > s; s -= l) | |
o.point((c = _t([e, -r * Math.cos(s), -r * Math.sin(s)]))[0], c[1]) | |
} | |
} | |
function de(n, t) { | |
var e = dt(t); | |
e[0] -= n, | |
bt(e); | |
var r = nn(-e[1]); | |
return ((-e[2] < 0 ? -r : r) + 2 * Math.PI - Pa) % (2 * Math.PI) | |
} | |
function me(n, t, e) { | |
var r = oa.range(n, t - Pa, e).concat(t); | |
return function(n) { | |
return r.map(function(t) { | |
return [n, t] | |
}) | |
} | |
} | |
function ye(n, t, e) { | |
var r = oa.range(n, t - Pa, e).concat(t); | |
return function(n) { | |
return r.map(function(t) { | |
return [t, n] | |
}) | |
} | |
} | |
function Me(n) { | |
return n.source | |
} | |
function xe(n) { | |
return n.target | |
} | |
function be(n, t, e, r) { | |
var u = Math.cos(t) | |
, i = Math.sin(t) | |
, a = Math.cos(r) | |
, o = Math.sin(r) | |
, l = u * Math.cos(n) | |
, c = u * Math.sin(n) | |
, s = a * Math.cos(e) | |
, f = a * Math.sin(e) | |
, h = 2 * Math.asin(Math.sqrt(an(r - t) + u * a * an(e - n))) | |
, g = 1 / Math.sin(h) | |
, p = h ? function(n) { | |
var t = Math.sin(n *= h) * g | |
, e = Math.sin(h - n) * g | |
, r = e * l + t * s | |
, u = e * c + t * f | |
, a = e * i + t * o; | |
return [Math.atan2(u, r) * Ya, Math.atan2(a, Math.sqrt(r * r + u * u)) * Ya] | |
} | |
: function() { | |
return [n * Ya, t * Ya] | |
} | |
; | |
return p.distance = h, | |
p | |
} | |
function _e() { | |
function n(n, u) { | |
var i = Math.sin(u *= Ia) | |
, a = Math.cos(u) | |
, o = Ma((n *= Ia) - t) | |
, l = Math.cos(o); | |
Jo += Math.atan2(Math.sqrt((o = a * Math.sin(o)) * o + (o = r * i - e * a * l) * o), e * i + r * a * l), | |
t = n, | |
e = i, | |
r = a | |
} | |
var t, e, r; | |
Go.point = function(u, i) { | |
t = u * Ia, | |
e = Math.sin(i *= Ia), | |
r = Math.cos(i), | |
Go.point = n | |
} | |
, | |
Go.lineEnd = function() { | |
Go.point = Go.lineEnd = b | |
} | |
} | |
function we(n, t) { | |
function e(t, e) { | |
var r = Math.cos(t) | |
, u = Math.cos(e) | |
, i = n(r * u); | |
return [i * u * Math.sin(t), i * Math.sin(e)] | |
} | |
return e.invert = function(n, e) { | |
var r = Math.sqrt(n * n + e * e) | |
, u = t(r) | |
, i = Math.sin(u) | |
, a = Math.cos(u); | |
return [Math.atan2(n * i, r * a), Math.asin(r && e * i / r)] | |
} | |
, | |
e | |
} | |
function Se(n, t) { | |
function e(n, t) { | |
a > 0 ? -Oa + Pa > t && (t = -Oa + Pa) : t > Oa - Pa && (t = Oa - Pa); | |
var e = a / Math.pow(u(t), i); | |
return [e * Math.sin(i * n), a - e * Math.cos(i * n)] | |
} | |
var r = Math.cos(n) | |
, u = function(n) { | |
return Math.tan(ja / 4 + n / 2) | |
} | |
, i = n === t ? Math.sin(n) : Math.log(r / Math.cos(t)) / Math.log(u(t) / u(n)) | |
, a = r * Math.pow(u(n), i) / i; | |
return i ? (e.invert = function(n, t) { | |
var e = a - t | |
, r = K(i) * Math.sqrt(n * n + e * e); | |
return [Math.atan2(n, e) / i, 2 * Math.atan(Math.pow(a / r, 1 / i)) - Oa] | |
} | |
, | |
e) : Ne | |
} | |
function ke(n, t) { | |
function e(n, t) { | |
var e = i - t; | |
return [e * Math.sin(u * n), i - e * Math.cos(u * n)] | |
} | |
var r = Math.cos(n) | |
, u = n === t ? Math.sin(n) : (r - Math.cos(t)) / (t - n) | |
, i = r / u + n; | |
return Ma(u) < Pa ? ce : (e.invert = function(n, t) { | |
var e = i - t; | |
return [Math.atan2(n, e) / u, i - K(u) * Math.sqrt(n * n + e * e)] | |
} | |
, | |
e) | |
} | |
function Ne(n, t) { | |
return [n, Math.log(Math.tan(ja / 4 + t / 2))] | |
} | |
function Ee(n) { | |
var t, e = ae(n), r = e.scale, u = e.translate, i = e.clipExtent; | |
return e.scale = function() { | |
var n = r.apply(e, arguments); | |
return n === e ? t ? e.clipExtent(null ) : e : n | |
} | |
, | |
e.translate = function() { | |
var n = u.apply(e, arguments); | |
return n === e ? t ? e.clipExtent(null ) : e : n | |
} | |
, | |
e.clipExtent = function(n) { | |
var a = i.apply(e, arguments); | |
if (a === e) { | |
if (t = null == n) { | |
var o = ja * r() | |
, l = u(); | |
i([[l[0] - o, l[1] - o], [l[0] + o, l[1] + o]]) | |
} | |
} else | |
t && (a = null ); | |
return a | |
} | |
, | |
e.clipExtent(null ) | |
} | |
function Ae(n, t) { | |
return [Math.log(Math.tan(ja / 4 + t / 2)), -n] | |
} | |
function Ce(n) { | |
return n[0] | |
} | |
function ze(n) { | |
return n[1] | |
} | |
function Le(n) { | |
for (var t = n.length, e = [0, 1], r = 2, u = 2; t > u; u++) { | |
for (; r > 1 && Q(n[e[r - 2]], n[e[r - 1]], n[u]) <= 0; ) | |
--r; | |
e[r++] = u | |
} | |
return e.slice(0, r) | |
} | |
function qe(n, t) { | |
return n[0] - t[0] || n[1] - t[1] | |
} | |
function Te(n, t, e) { | |
return (e[0] - t[0]) * (n[1] - t[1]) < (e[1] - t[1]) * (n[0] - t[0]) | |
} | |
function Re(n, t, e, r) { | |
var u = n[0] | |
, i = e[0] | |
, a = t[0] - u | |
, o = r[0] - i | |
, l = n[1] | |
, c = e[1] | |
, s = t[1] - l | |
, f = r[1] - c | |
, h = (o * (l - c) - f * (u - i)) / (f * a - o * s); | |
return [u + h * a, l + h * s] | |
} | |
function De(n) { | |
var t = n[0] | |
, e = n[n.length - 1]; | |
return !(t[0] - e[0] || t[1] - e[1]) | |
} | |
function Pe() { | |
rr(this), | |
this.edge = this.site = this.circle = null | |
} | |
function Ue(n) { | |
var t = cl.pop() || new Pe; | |
return t.site = n, | |
t | |
} | |
function je(n) { | |
Be(n), | |
al.remove(n), | |
cl.push(n), | |
rr(n) | |
} | |
function Fe(n) { | |
var t = n.circle | |
, e = t.x | |
, r = t.cy | |
, u = { | |
x: e, | |
y: r | |
} | |
, i = n.P | |
, a = n.N | |
, o = [n]; | |
je(n); | |
for (var l = i; l.circle && Ma(e - l.circle.x) < Pa && Ma(r - l.circle.cy) < Pa; ) | |
i = l.P, | |
o.unshift(l), | |
je(l), | |
l = i; | |
o.unshift(l), | |
Be(l); | |
for (var c = a; c.circle && Ma(e - c.circle.x) < Pa && Ma(r - c.circle.cy) < Pa; ) | |
a = c.N, | |
o.push(c), | |
je(c), | |
c = a; | |
o.push(c), | |
Be(c); | |
var s, f = o.length; | |
for (s = 1; f > s; ++s) | |
c = o[s], | |
l = o[s - 1], | |
nr(c.edge, l.site, c.site, u); | |
l = o[0], | |
c = o[f - 1], | |
c.edge = Ke(l.site, c.site, null , u), | |
$e(l), | |
$e(c) | |
} | |
function He(n) { | |
for (var t, e, r, u, i = n.x, a = n.y, o = al._; o; ) | |
if (r = Oe(o, a) - i, | |
r > Pa) | |
o = o.L; | |
else { | |
if (u = i - Ie(o, a), | |
!(u > Pa)) { | |
r > -Pa ? (t = o.P, | |
e = o) : u > -Pa ? (t = o, | |
e = o.N) : t = e = o; | |
break | |
} | |
if (!o.R) { | |
t = o; | |
break | |
} | |
o = o.R | |
} | |
var l = Ue(n); | |
if (al.insert(t, l), | |
t || e) { | |
if (t === e) | |
return Be(t), | |
e = Ue(t.site), | |
al.insert(l, e), | |
l.edge = e.edge = Ke(t.site, l.site), | |
$e(t), | |
void $e(e); | |
if (!e) | |
return void (l.edge = Ke(t.site, l.site)); | |
Be(t), | |
Be(e); | |
var c = t.site | |
, s = c.x | |
, f = c.y | |
, h = n.x - s | |
, g = n.y - f | |
, p = e.site | |
, v = p.x - s | |
, d = p.y - f | |
, m = 2 * (h * d - g * v) | |
, y = h * h + g * g | |
, M = v * v + d * d | |
, x = { | |
x: (d * y - g * M) / m + s, | |
y: (h * M - v * y) / m + f | |
}; | |
nr(e.edge, c, p, x), | |
l.edge = Ke(c, n, null , x), | |
e.edge = Ke(n, p, null , x), | |
$e(t), | |
$e(e) | |
} | |
} | |
function Oe(n, t) { | |
var e = n.site | |
, r = e.x | |
, u = e.y | |
, i = u - t; | |
if (!i) | |
return r; | |
var a = n.P; | |
if (!a) | |
return -(1 / 0); | |
e = a.site; | |
var o = e.x | |
, l = e.y | |
, c = l - t; | |
if (!c) | |
return o; | |
var s = o - r | |
, f = 1 / i - 1 / c | |
, h = s / c; | |
return f ? (-h + Math.sqrt(h * h - 2 * f * (s * s / (-2 * c) - l + c / 2 + u - i / 2))) / f + r : (r + o) / 2 | |
} | |
function Ie(n, t) { | |
var e = n.N; | |
if (e) | |
return Oe(e, t); | |
var r = n.site; | |
return r.y === t ? r.x : 1 / 0 | |
} | |
function Ye(n) { | |
this.site = n, | |
this.edges = [] | |
} | |
function Ze(n) { | |
for (var t, e, r, u, i, a, o, l, c, s, f = n[0][0], h = n[1][0], g = n[0][1], p = n[1][1], v = il, d = v.length; d--; ) | |
if (i = v[d], | |
i && i.prepare()) | |
for (o = i.edges, | |
l = o.length, | |
a = 0; l > a; ) | |
s = o[a].end(), | |
r = s.x, | |
u = s.y, | |
c = o[++a % l].start(), | |
t = c.x, | |
e = c.y, | |
(Ma(r - t) > Pa || Ma(u - e) > Pa) && (o.splice(a, 0, new tr(Qe(i.site, s, Ma(r - f) < Pa && p - u > Pa ? { | |
x: f, | |
y: Ma(t - f) < Pa ? e : p | |
} : Ma(u - p) < Pa && h - r > Pa ? { | |
x: Ma(e - p) < Pa ? t : h, | |
y: p | |
} : Ma(r - h) < Pa && u - g > Pa ? { | |
x: h, | |
y: Ma(t - h) < Pa ? e : g | |
} : Ma(u - g) < Pa && r - f > Pa ? { | |
x: Ma(e - g) < Pa ? t : f, | |
y: g | |
} : null ),i.site,null )), | |
++l) | |
} | |
function Ve(n, t) { | |
return t.angle - n.angle | |
} | |
function Xe() { | |
rr(this), | |
this.x = this.y = this.arc = this.site = this.cy = null | |
} | |
function $e(n) { | |
var t = n.P | |
, e = n.N; | |
if (t && e) { | |
var r = t.site | |
, u = n.site | |
, i = e.site; | |
if (r !== i) { | |
var a = u.x | |
, o = u.y | |
, l = r.x - a | |
, c = r.y - o | |
, s = i.x - a | |
, f = i.y - o | |
, h = 2 * (l * f - c * s); | |
if (!(h >= -Ua)) { | |
var g = l * l + c * c | |
, p = s * s + f * f | |
, v = (f * g - c * p) / h | |
, d = (l * p - s * g) / h | |
, f = d + o | |
, m = sl.pop() || new Xe; | |
m.arc = n, | |
m.site = u, | |
m.x = v + a, | |
m.y = f + Math.sqrt(v * v + d * d), | |
m.cy = f, | |
n.circle = m; | |
for (var y = null , M = ll._; M; ) | |
if (m.y < M.y || m.y === M.y && m.x <= M.x) { | |
if (!M.L) { | |
y = M.P; | |
break | |
} | |
M = M.L | |
} else { | |
if (!M.R) { | |
y = M; | |
break | |
} | |
M = M.R | |
} | |
ll.insert(y, m), | |
y || (ol = m) | |
} | |
} | |
} | |
} | |
function Be(n) { | |
var t = n.circle; | |
t && (t.P || (ol = t.N), | |
ll.remove(t), | |
sl.push(t), | |
rr(t), | |
n.circle = null ) | |
} | |
function We(n) { | |
for (var t, e = ul, r = Yt(n[0][0], n[0][1], n[1][0], n[1][1]), u = e.length; u--; ) | |
t = e[u], | |
(!Je(t, n) || !r(t) || Ma(t.a.x - t.b.x) < Pa && Ma(t.a.y - t.b.y) < Pa) && (t.a = t.b = null , | |
e.splice(u, 1)) | |
} | |
function Je(n, t) { | |
var e = n.b; | |
if (e) | |
return !0; | |
var r, u, i = n.a, a = t[0][0], o = t[1][0], l = t[0][1], c = t[1][1], s = n.l, f = n.r, h = s.x, g = s.y, p = f.x, v = f.y, d = (h + p) / 2, m = (g + v) / 2; | |
if (v === g) { | |
if (a > d || d >= o) | |
return; | |
if (h > p) { | |
if (i) { | |
if (i.y >= c) | |
return | |
} else | |
i = { | |
x: d, | |
y: l | |
}; | |
e = { | |
x: d, | |
y: c | |
} | |
} else { | |
if (i) { | |
if (i.y < l) | |
return | |
} else | |
i = { | |
x: d, | |
y: c | |
}; | |
e = { | |
x: d, | |
y: l | |
} | |
} | |
} else if (r = (h - p) / (v - g), | |
u = m - r * d, | |
-1 > r || r > 1) | |
if (h > p) { | |
if (i) { | |
if (i.y >= c) | |
return | |
} else | |
i = { | |
x: (l - u) / r, | |
y: l | |
}; | |
e = { | |
x: (c - u) / r, | |
y: c | |
} | |
} else { | |
if (i) { | |
if (i.y < l) | |
return | |
} else | |
i = { | |
x: (c - u) / r, | |
y: c | |
}; | |
e = { | |
x: (l - u) / r, | |
y: l | |
} | |
} | |
else if (v > g) { | |
if (i) { | |
if (i.x >= o) | |
return | |
} else | |
i = { | |
x: a, | |
y: r * a + u | |
}; | |
e = { | |
x: o, | |
y: r * o + u | |
} | |
} else { | |
if (i) { | |
if (i.x < a) | |
return | |
} else | |
i = { | |
x: o, | |
y: r * o + u | |
}; | |
e = { | |
x: a, | |
y: r * a + u | |
} | |
} | |
return n.a = i, | |
n.b = e, | |
!0 | |
} | |
function Ge(n, t) { | |
this.l = n, | |
this.r = t, | |
this.a = this.b = null | |
} | |
function Ke(n, t, e, r) { | |
var u = new Ge(n,t); | |
return ul.push(u), | |
e && nr(u, n, t, e), | |
r && nr(u, t, n, r), | |
il[n.i].edges.push(new tr(u,n,t)), | |
il[t.i].edges.push(new tr(u,t,n)), | |
u | |
} | |
function Qe(n, t, e) { | |
var r = new Ge(n,null ); | |
return r.a = t, | |
r.b = e, | |
ul.push(r), | |
r | |
} | |
function nr(n, t, e, r) { | |
n.a || n.b ? n.l === e ? n.b = r : n.a = r : (n.a = r, | |
n.l = t, | |
n.r = e) | |
} | |
function tr(n, t, e) { | |
var r = n.a | |
, u = n.b; | |
this.edge = n, | |
this.site = t, | |
this.angle = e ? Math.atan2(e.y - t.y, e.x - t.x) : n.l === t ? Math.atan2(u.x - r.x, r.y - u.y) : Math.atan2(r.x - u.x, u.y - r.y) | |
} | |
function er() { | |
this._ = null | |
} | |
function rr(n) { | |
n.U = n.C = n.L = n.R = n.P = n.N = null | |
} | |
function ur(n, t) { | |
var e = t | |
, r = t.R | |
, u = e.U; | |
u ? u.L === e ? u.L = r : u.R = r : n._ = r, | |
r.U = u, | |
e.U = r, | |
e.R = r.L, | |
e.R && (e.R.U = e), | |
r.L = e | |
} | |
function ir(n, t) { | |
var e = t | |
, r = t.L | |
, u = e.U; | |
u ? u.L === e ? u.L = r : u.R = r : n._ = r, | |
r.U = u, | |
e.U = r, | |
e.L = r.R, | |
e.L && (e.L.U = e), | |
r.R = e | |
} | |
function ar(n) { | |
for (; n.L; ) | |
n = n.L; | |
return n | |
} | |
function or(n, t) { | |
var e, r, u, i = n.sort(lr).pop(); | |
for (ul = [], | |
il = new Array(n.length), | |
al = new er, | |
ll = new er; ; ) | |
if (u = ol, | |
i && (!u || i.y < u.y || i.y === u.y && i.x < u.x)) | |
(i.x !== e || i.y !== r) && (il[i.i] = new Ye(i), | |
He(i), | |
e = i.x, | |
r = i.y), | |
i = n.pop(); | |
else { | |
if (!u) | |
break; | |
Fe(u.arc) | |
} | |
t && (We(t), | |
Ze(t)); | |
var a = { | |
cells: il, | |
edges: ul | |
}; | |
return al = ll = ul = il = null , | |
a | |
} | |
function lr(n, t) { | |
return t.y - n.y || t.x - n.x | |
} | |
function cr(n, t, e) { | |
return (n.x - e.x) * (t.y - n.y) - (n.x - t.x) * (e.y - n.y) | |
} | |
function sr(n) { | |
return n.x | |
} | |
function fr(n) { | |
return n.y | |
} | |
function hr() { | |
return { | |
leaf: !0, | |
nodes: [], | |
point: null , | |
x: null , | |
y: null | |
} | |
} | |
function gr(n, t, e, r, u, i) { | |
if (!n(t, e, r, u, i)) { | |
var a = .5 * (e + u) | |
, o = .5 * (r + i) | |
, l = t.nodes; | |
l[0] && gr(n, l[0], e, r, a, o), | |
l[1] && gr(n, l[1], a, r, u, o), | |
l[2] && gr(n, l[2], e, o, a, i), | |
l[3] && gr(n, l[3], a, o, u, i) | |
} | |
} | |
function pr(n, t, e, r, u, i, a) { | |
var o, l = 1 / 0; | |
return function c(n, s, f, h, g) { | |
if (!(s > i || f > a || r > h || u > g)) { | |
if (p = n.point) { | |
var p, v = t - n.x, d = e - n.y, m = v * v + d * d; | |
if (l > m) { | |
var y = Math.sqrt(l = m); | |
r = t - y, | |
u = e - y, | |
i = t + y, | |
a = e + y, | |
o = p | |
} | |
} | |
for (var M = n.nodes, x = .5 * (s + h), b = .5 * (f + g), _ = t >= x, w = e >= b, S = w << 1 | _, k = S + 4; k > S; ++S) | |
if (n = M[3 & S]) | |
switch (3 & S) { | |
case 0: | |
c(n, s, f, x, b); | |
break; | |
case 1: | |
c(n, x, f, h, b); | |
break; | |
case 2: | |
c(n, s, b, x, g); | |
break; | |
case 3: | |
c(n, x, b, h, g) | |
} | |
} | |
}(n, r, u, i, a), | |
o | |
} | |
function vr(n, t) { | |
n = oa.rgb(n), | |
t = oa.rgb(t); | |
var e = n.r | |
, r = n.g | |
, u = n.b | |
, i = t.r - e | |
, a = t.g - r | |
, o = t.b - u; | |
return function(n) { | |
return "#" + bn(Math.round(e + i * n)) + bn(Math.round(r + a * n)) + bn(Math.round(u + o * n)) | |
} | |
} | |
function dr(n, t) { | |
var e, r = {}, u = {}; | |
for (e in n) | |
e in t ? r[e] = Mr(n[e], t[e]) : u[e] = n[e]; | |
for (e in t) | |
e in n || (u[e] = t[e]); | |
return function(n) { | |
for (e in r) | |
u[e] = r[e](n); | |
return u | |
} | |
} | |
function mr(n, t) { | |
return n = +n, | |
t = +t, | |
function(e) { | |
return n * (1 - e) + t * e | |
} | |
} | |
function yr(n, t) { | |
var e, r, u, i = hl.lastIndex = gl.lastIndex = 0, a = -1, o = [], l = []; | |
for (n += "", | |
t += ""; (e = hl.exec(n)) && (r = gl.exec(t)); ) | |
(u = r.index) > i && (u = t.slice(i, u), | |
o[a] ? o[a] += u : o[++a] = u), | |
(e = e[0]) === (r = r[0]) ? o[a] ? o[a] += r : o[++a] = r : (o[++a] = null , | |
l.push({ | |
i: a, | |
x: mr(e, r) | |
})), | |
i = gl.lastIndex; | |
return i < t.length && (u = t.slice(i), | |
o[a] ? o[a] += u : o[++a] = u), | |
o.length < 2 ? l[0] ? (t = l[0].x, | |
function(n) { | |
return t(n) + "" | |
} | |
) : function() { | |
return t | |
} | |
: (t = l.length, | |
function(n) { | |
for (var e, r = 0; t > r; ++r) | |
o[(e = l[r]).i] = e.x(n); | |
return o.join("") | |
} | |
) | |
} | |
function Mr(n, t) { | |
for (var e, r = oa.interpolators.length; --r >= 0 && !(e = oa.interpolators[r](n, t)); ) | |
; | |
return e | |
} | |
function xr(n, t) { | |
var e, r = [], u = [], i = n.length, a = t.length, o = Math.min(n.length, t.length); | |
for (e = 0; o > e; ++e) | |
r.push(Mr(n[e], t[e])); | |
for (; i > e; ++e) | |
u[e] = n[e]; | |
for (; a > e; ++e) | |
u[e] = t[e]; | |
return function(n) { | |
for (e = 0; o > e; ++e) | |
u[e] = r[e](n); | |
return u | |
} | |
} | |
function br(n) { | |
return function(t) { | |
return 0 >= t ? 0 : t >= 1 ? 1 : n(t) | |
} | |
} | |
function _r(n) { | |
return function(t) { | |
return 1 - n(1 - t) | |
} | |
} | |
function wr(n) { | |
return function(t) { | |
return .5 * (.5 > t ? n(2 * t) : 2 - n(2 - 2 * t)) | |
} | |
} | |
function Sr(n) { | |
return n * n | |
} | |
function kr(n) { | |
return n * n * n | |
} | |
function Nr(n) { | |
if (0 >= n) | |
return 0; | |
if (n >= 1) | |
return 1; | |
var t = n * n | |
, e = t * n; | |
return 4 * (.5 > n ? e : 3 * (n - t) + e - .75) | |
} | |
function Er(n) { | |
return function(t) { | |
return Math.pow(t, n) | |
} | |
} | |
function Ar(n) { | |
return 1 - Math.cos(n * Oa) | |
} | |
function Cr(n) { | |
return Math.pow(2, 10 * (n - 1)) | |
} | |
function zr(n) { | |
return 1 - Math.sqrt(1 - n * n) | |
} | |
function Lr(n, t) { | |
var e; | |
return arguments.length < 2 && (t = .45), | |
arguments.length ? e = t / Fa * Math.asin(1 / n) : (n = 1, | |
e = t / 4), | |
function(r) { | |
return 1 + n * Math.pow(2, -10 * r) * Math.sin((r - e) * Fa / t) | |
} | |
} | |
function qr(n) { | |
return n || (n = 1.70158), | |
function(t) { | |
return t * t * ((n + 1) * t - n) | |
} | |
} | |
function Tr(n) { | |
return 1 / 2.75 > n ? 7.5625 * n * n : 2 / 2.75 > n ? 7.5625 * (n -= 1.5 / 2.75) * n + .75 : 2.5 / 2.75 > n ? 7.5625 * (n -= 2.25 / 2.75) * n + .9375 : 7.5625 * (n -= 2.625 / 2.75) * n + .984375 | |
} | |
function Rr(n, t) { | |
n = oa.hcl(n), | |
t = oa.hcl(t); | |
var e = n.h | |
, r = n.c | |
, u = n.l | |
, i = t.h - e | |
, a = t.c - r | |
, o = t.l - u; | |
return isNaN(a) && (a = 0, | |
r = isNaN(r) ? t.c : r), | |
isNaN(i) ? (i = 0, | |
e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), | |
function(n) { | |
return fn(e + i * n, r + a * n, u + o * n) + "" | |
} | |
} | |
function Dr(n, t) { | |
n = oa.hsl(n), | |
t = oa.hsl(t); | |
var e = n.h | |
, r = n.s | |
, u = n.l | |
, i = t.h - e | |
, a = t.s - r | |
, o = t.l - u; | |
return isNaN(a) && (a = 0, | |
r = isNaN(r) ? t.s : r), | |
isNaN(i) ? (i = 0, | |
e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), | |
function(n) { | |
return cn(e + i * n, r + a * n, u + o * n) + "" | |
} | |
} | |
function Pr(n, t) { | |
n = oa.lab(n), | |
t = oa.lab(t); | |
var e = n.l | |
, r = n.a | |
, u = n.b | |
, i = t.l - e | |
, a = t.a - r | |
, o = t.b - u; | |
return function(n) { | |
return gn(e + i * n, r + a * n, u + o * n) + "" | |
} | |
} | |
function Ur(n, t) { | |
return t -= n, | |
function(e) { | |
return Math.round(n + t * e) | |
} | |
} | |
function jr(n) { | |
var t = [n.a, n.b] | |
, e = [n.c, n.d] | |
, r = Hr(t) | |
, u = Fr(t, e) | |
, i = Hr(Or(e, t, -u)) || 0; | |
t[0] * e[1] < e[0] * t[1] && (t[0] *= -1, | |
t[1] *= -1, | |
r *= -1, | |
u *= -1), | |
this.rotate = (r ? Math.atan2(t[1], t[0]) : Math.atan2(-e[0], e[1])) * Ya, | |
this.translate = [n.e, n.f], | |
this.scale = [r, i], | |
this.skew = i ? Math.atan2(u, i) * Ya : 0 | |
} | |
function Fr(n, t) { | |
return n[0] * t[0] + n[1] * t[1] | |
} | |
function Hr(n) { | |
var t = Math.sqrt(Fr(n, n)); | |
return t && (n[0] /= t, | |
n[1] /= t), | |
t | |
} | |
function Or(n, t, e) { | |
return n[0] += e * t[0], | |
n[1] += e * t[1], | |
n | |
} | |
function Ir(n) { | |
return n.length ? n.pop() + "," : "" | |
} | |
function Yr(n, t, e, r) { | |
if (n[0] !== t[0] || n[1] !== t[1]) { | |
var u = e.push("translate(", null , ",", null , ")"); | |
r.push({ | |
i: u - 4, | |
x: mr(n[0], t[0]) | |
}, { | |
i: u - 2, | |
x: mr(n[1], t[1]) | |
}) | |
} else | |
(t[0] || t[1]) && e.push("translate(" + t + ")") | |
} | |
function Zr(n, t, e, r) { | |
n !== t ? (n - t > 180 ? t += 360 : t - n > 180 && (n += 360), | |
r.push({ | |
i: e.push(Ir(e) + "rotate(", null , ")") - 2, | |
x: mr(n, t) | |
})) : t && e.push(Ir(e) + "rotate(" + t + ")") | |
} | |
function Vr(n, t, e, r) { | |
n !== t ? r.push({ | |
i: e.push(Ir(e) + "skewX(", null , ")") - 2, | |
x: mr(n, t) | |
}) : t && e.push(Ir(e) + "skewX(" + t + ")") | |
} | |
function Xr(n, t, e, r) { | |
if (n[0] !== t[0] || n[1] !== t[1]) { | |
var u = e.push(Ir(e) + "scale(", null , ",", null , ")"); | |
r.push({ | |
i: u - 4, | |
x: mr(n[0], t[0]) | |
}, { | |
i: u - 2, | |
x: mr(n[1], t[1]) | |
}) | |
} else | |
(1 !== t[0] || 1 !== t[1]) && e.push(Ir(e) + "scale(" + t + ")") | |
} | |
function $r(n, t) { | |
var e = [] | |
, r = []; | |
return n = oa.transform(n), | |
t = oa.transform(t), | |
Yr(n.translate, t.translate, e, r), | |
Zr(n.rotate, t.rotate, e, r), | |
Vr(n.skew, t.skew, e, r), | |
Xr(n.scale, t.scale, e, r), | |
n = t = null , | |
function(n) { | |
for (var t, u = -1, i = r.length; ++u < i; ) | |
e[(t = r[u]).i] = t.x(n); | |
return e.join("") | |
} | |
} | |
function Br(n, t) { | |
return t = (t -= n = +n) || 1 / t, | |
function(e) { | |
return (e - n) / t | |
} | |
} | |
function Wr(n, t) { | |
return t = (t -= n = +n) || 1 / t, | |
function(e) { | |
return Math.max(0, Math.min(1, (e - n) / t)) | |
} | |
} | |
function Jr(n) { | |
for (var t = n.source, e = n.target, r = Kr(t, e), u = [t]; t !== r; ) | |
t = t.parent, | |
u.push(t); | |
for (var i = u.length; e !== r; ) | |
u.splice(i, 0, e), | |
e = e.parent; | |
return u | |
} | |
function Gr(n) { | |
for (var t = [], e = n.parent; null != e; ) | |
t.push(n), | |
n = e, | |
e = e.parent; | |
return t.push(n), | |
t | |
} | |
function Kr(n, t) { | |
if (n === t) | |
return n; | |
for (var e = Gr(n), r = Gr(t), u = e.pop(), i = r.pop(), a = null ; u === i; ) | |
a = u, | |
u = e.pop(), | |
i = r.pop(); | |
return a | |
} | |
function Qr(n) { | |
n.fixed |= 2 | |
} | |
function nu(n) { | |
n.fixed &= -7 | |
} | |
function tu(n) { | |
n.fixed |= 4, | |
n.px = n.x, | |
n.py = n.y | |
} | |
function eu(n) { | |
n.fixed &= -5 | |
} | |
function ru(n, t, e) { | |
var r = 0 | |
, u = 0; | |
if (n.charge = 0, | |
!n.leaf) | |
for (var i, a = n.nodes, o = a.length, l = -1; ++l < o; ) | |
i = a[l], | |
null != i && (ru(i, t, e), | |
n.charge += i.charge, | |
r += i.charge * i.cx, | |
u += i.charge * i.cy); | |
if (n.point) { | |
n.leaf || (n.point.x += Math.random() - .5, | |
n.point.y += Math.random() - .5); | |
var c = t * e[n.point.index]; | |
n.charge += n.pointCharge = c, | |
r += c * n.point.x, | |
u += c * n.point.y | |
} | |
n.cx = r / n.charge, | |
n.cy = u / n.charge | |
} | |
function uu(n, t) { | |
return oa.rebind(n, t, "sort", "children", "value"), | |
n.nodes = n, | |
n.links = su, | |
n | |
} | |
function iu(n, t) { | |
for (var e = [n]; null != (n = e.pop()); ) | |
if (t(n), | |
(u = n.children) && (r = u.length)) | |
for (var r, u; --r >= 0; ) | |
e.push(u[r]) | |
} | |
function au(n, t) { | |
for (var e = [n], r = []; null != (n = e.pop()); ) | |
if (r.push(n), | |
(i = n.children) && (u = i.length)) | |
for (var u, i, a = -1; ++a < u; ) | |
e.push(i[a]); | |
for (; null != (n = r.pop()); ) | |
t(n) | |
} | |
function ou(n) { | |
return n.children | |
} | |
function lu(n) { | |
return n.value | |
} | |
function cu(n, t) { | |
return t.value - n.value | |
} | |
function su(n) { | |
return oa.merge(n.map(function(n) { | |
return (n.children || []).map(function(t) { | |
return { | |
source: n, | |
target: t | |
} | |
}) | |
})) | |
} | |
function fu(n) { | |
return n.x | |
} | |
function hu(n) { | |
return n.y | |
} | |
function gu(n, t, e) { | |
n.y0 = t, | |
n.y = e | |
} | |
function pu(n) { | |
return oa.range(n.length) | |
} | |
function vu(n) { | |
for (var t = -1, e = n[0].length, r = []; ++t < e; ) | |
r[t] = 0; | |
return r | |
} | |
function du(n) { | |
for (var t, e = 1, r = 0, u = n[0][1], i = n.length; i > e; ++e) | |
(t = n[e][1]) > u && (r = e, | |
u = t); | |
return r | |
} | |
function mu(n) { | |
return n.reduce(yu, 0) | |
} | |
function yu(n, t) { | |
return n + t[1] | |
} | |
function Mu(n, t) { | |
return xu(n, Math.ceil(Math.log(t.length) / Math.LN2 + 1)) | |
} | |
function xu(n, t) { | |
for (var e = -1, r = +n[0], u = (n[1] - r) / t, i = []; ++e <= t; ) | |
i[e] = u * e + r; | |
return i | |
} | |
function bu(n) { | |
return [oa.min(n), oa.max(n)] | |
} | |
function _u(n, t) { | |
return n.value - t.value | |
} | |
function wu(n, t) { | |
var e = n._pack_next; | |
n._pack_next = t, | |
t._pack_prev = n, | |
t._pack_next = e, | |
e._pack_prev = t | |
} | |
function Su(n, t) { | |
n._pack_next = t, | |
t._pack_prev = n | |
} | |
function ku(n, t) { | |
var e = t.x - n.x | |
, r = t.y - n.y | |
, u = n.r + t.r; | |
return .999 * u * u > e * e + r * r | |
} | |
function Nu(n) { | |
function t(n) { | |
s = Math.min(n.x - n.r, s), | |
f = Math.max(n.x + n.r, f), | |
h = Math.min(n.y - n.r, h), | |
g = Math.max(n.y + n.r, g) | |
} | |
if ((e = n.children) && (c = e.length)) { | |
var e, r, u, i, a, o, l, c, s = 1 / 0, f = -(1 / 0), h = 1 / 0, g = -(1 / 0); | |
if (e.forEach(Eu), | |
r = e[0], | |
r.x = -r.r, | |
r.y = 0, | |
t(r), | |
c > 1 && (u = e[1], | |
u.x = u.r, | |
u.y = 0, | |
t(u), | |
c > 2)) | |
for (i = e[2], | |
zu(r, u, i), | |
t(i), | |
wu(r, i), | |
r._pack_prev = i, | |
wu(i, u), | |
u = r._pack_next, | |
a = 3; c > a; a++) { | |
zu(r, u, i = e[a]); | |
var p = 0 | |
, v = 1 | |
, d = 1; | |
for (o = u._pack_next; o !== u; o = o._pack_next, | |
v++) | |
if (ku(o, i)) { | |
p = 1; | |
break | |
} | |
if (1 == p) | |
for (l = r._pack_prev; l !== o._pack_prev && !ku(l, i); l = l._pack_prev, | |
d++) | |
; | |
p ? (d > v || v == d && u.r < r.r ? Su(r, u = o) : Su(r = l, u), | |
a--) : (wu(r, i), | |
u = i, | |
t(i)) | |
} | |
var m = (s + f) / 2 | |
, y = (h + g) / 2 | |
, M = 0; | |
for (a = 0; c > a; a++) | |
i = e[a], | |
i.x -= m, | |
i.y -= y, | |
M = Math.max(M, i.r + Math.sqrt(i.x * i.x + i.y * i.y)); | |
n.r = M, | |
e.forEach(Au) | |
} | |
} | |
function Eu(n) { | |
n._pack_next = n._pack_prev = n | |
} | |
function Au(n) { | |
delete n._pack_next, | |
delete n._pack_prev | |
} | |
function Cu(n, t, e, r) { | |
var u = n.children; | |
if (n.x = t += r * n.x, | |
n.y = e += r * n.y, | |
n.r *= r, | |
u) | |
for (var i = -1, a = u.length; ++i < a; ) | |
Cu(u[i], t, e, r) | |
} | |
function zu(n, t, e) { | |
var r = n.r + e.r | |
, u = t.x - n.x | |
, i = t.y - n.y; | |
if (r && (u || i)) { | |
var a = t.r + e.r | |
, o = u * u + i * i; | |
a *= a, | |
r *= r; | |
var l = .5 + (r - a) / (2 * o) | |
, c = Math.sqrt(Math.max(0, 2 * a * (r + o) - (r -= o) * r - a * a)) / (2 * o); | |
e.x = n.x + l * u + c * i, | |
e.y = n.y + l * i - c * u | |
} else | |
e.x = n.x + r, | |
e.y = n.y | |
} | |
function Lu(n, t) { | |
return n.parent == t.parent ? 1 : 2 | |
} | |
function qu(n) { | |
var t = n.children; | |
return t.length ? t[0] : n.t | |
} | |
function Tu(n) { | |
var t, e = n.children; | |
return (t = e.length) ? e[t - 1] : n.t | |
} | |
function Ru(n, t, e) { | |
var r = e / (t.i - n.i); | |
t.c -= r, | |
t.s += e, | |
n.c += r, | |
t.z += e, | |
t.m += e | |
} | |
function Du(n) { | |
for (var t, e = 0, r = 0, u = n.children, i = u.length; --i >= 0; ) | |
t = u[i], | |
t.z += e, | |
t.m += e, | |
e += t.s + (r += t.c) | |
} | |
function Pu(n, t, e) { | |
return n.a.parent === t.parent ? n.a : e | |
} | |
function Uu(n) { | |
return 1 + oa.max(n, function(n) { | |
return n.y | |
}) | |
} | |
function ju(n) { | |
return n.reduce(function(n, t) { | |
return n + t.x | |
}, 0) / n.length | |
} | |
function Fu(n) { | |
var t = n.children; | |
return t && t.length ? Fu(t[0]) : n | |
} | |
function Hu(n) { | |
var t, e = n.children; | |
return e && (t = e.length) ? Hu(e[t - 1]) : n | |
} | |
function Ou(n) { | |
return { | |
x: n.x, | |
y: n.y, | |
dx: n.dx, | |
dy: n.dy | |
} | |
} | |
function Iu(n, t) { | |
var e = n.x + t[3] | |
, r = n.y + t[0] | |
, u = n.dx - t[1] - t[3] | |
, i = n.dy - t[0] - t[2]; | |
return 0 > u && (e += u / 2, | |
u = 0), | |
0 > i && (r += i / 2, | |
i = 0), | |
{ | |
x: e, | |
y: r, | |
dx: u, | |
dy: i | |
} | |
} | |
function Yu(n) { | |
var t = n[0] | |
, e = n[n.length - 1]; | |
return e > t ? [t, e] : [e, t] | |
} | |
function Zu(n) { | |
return n.rangeExtent ? n.rangeExtent() : Yu(n.range()) | |
} | |
function Vu(n, t, e, r) { | |
var u = e(n[0], n[1]) | |
, i = r(t[0], t[1]); | |
return function(n) { | |
return i(u(n)) | |
} | |
} | |
function Xu(n, t) { | |
var e, r = 0, u = n.length - 1, i = n[r], a = n[u]; | |
return i > a && (e = r, | |
r = u, | |
u = e, | |
e = i, | |
i = a, | |
a = e), | |
n[r] = t.floor(i), | |
n[u] = t.ceil(a), | |
n | |
} | |
function $u(n) { | |
return n ? { | |
floor: function(t) { | |
return Math.floor(t / n) * n | |
}, | |
ceil: function(t) { | |
return Math.ceil(t / n) * n | |
} | |
} : Sl | |
} | |
function Bu(n, t, e, r) { | |
var u = [] | |
, i = [] | |
, a = 0 | |
, o = Math.min(n.length, t.length) - 1; | |
for (n[o] < n[0] && (n = n.slice().reverse(), | |
t = t.slice().reverse()); ++a <= o; ) | |
u.push(e(n[a - 1], n[a])), | |
i.push(r(t[a - 1], t[a])); | |
return function(t) { | |
var e = oa.bisect(n, t, 1, o) - 1; | |
return i[e](u[e](t)) | |
} | |
} | |
function Wu(n, t, e, r) { | |
function u() { | |
var u = Math.min(n.length, t.length) > 2 ? Bu : Vu | |
, l = r ? Wr : Br; | |
return a = u(n, t, l, e), | |
o = u(t, n, l, Mr), | |
i | |
} | |
function i(n) { | |
return a(n) | |
} | |
var a, o; | |
return i.invert = function(n) { | |
return o(n) | |
} | |
, | |
i.domain = function(t) { | |
return arguments.length ? (n = t.map(Number), | |
u()) : n | |
} | |
, | |
i.range = function(n) { | |
return arguments.length ? (t = n, | |
u()) : t | |
} | |
, | |
i.rangeRound = function(n) { | |
return i.range(n).interpolate(Ur) | |
} | |
, | |
i.clamp = function(n) { | |
return arguments.length ? (r = n, | |
u()) : r | |
} | |
, | |
i.interpolate = function(n) { | |
return arguments.length ? (e = n, | |
u()) : e | |
} | |
, | |
i.ticks = function(t) { | |
return Qu(n, t) | |
} | |
, | |
i.tickFormat = function(t, e) { | |
return ni(n, t, e) | |
} | |
, | |
i.nice = function(t) { | |
return Gu(n, t), | |
u() | |
} | |
, | |
i.copy = function() { | |
return Wu(n, t, e, r) | |
} | |
, | |
u() | |
} | |
function Ju(n, t) { | |
return oa.rebind(n, t, "range", "rangeRound", "interpolate", "clamp") | |
} | |
function Gu(n, t) { | |
return Xu(n, $u(Ku(n, t)[2])), | |
Xu(n, $u(Ku(n, t)[2])), | |
n | |
} | |
function Ku(n, t) { | |
null == t && (t = 10); | |
var e = Yu(n) | |
, r = e[1] - e[0] | |
, u = Math.pow(10, Math.floor(Math.log(r / t) / Math.LN10)) | |
, i = t / r * u; | |
return .15 >= i ? u *= 10 : .35 >= i ? u *= 5 : .75 >= i && (u *= 2), | |
e[0] = Math.ceil(e[0] / u) * u, | |
e[1] = Math.floor(e[1] / u) * u + .5 * u, | |
e[2] = u, | |
e | |
} | |
function Qu(n, t) { | |
return oa.range.apply(oa, Ku(n, t)) | |
} | |
function ni(n, t, e) { | |
var r = Ku(n, t); | |
if (e) { | |
var u = fo.exec(e); | |
if (u.shift(), | |
"s" === u[8]) { | |
var i = oa.formatPrefix(Math.max(Ma(r[0]), Ma(r[1]))); | |
return u[7] || (u[7] = "." + ti(i.scale(r[2]))), | |
u[8] = "f", | |
e = oa.format(u.join("")), | |
function(n) { | |
return e(i.scale(n)) + i.symbol | |
} | |
} | |
u[7] || (u[7] = "." + ei(u[8], r)), | |
e = u.join("") | |
} else | |
e = ",." + ti(r[2]) + "f"; | |
return oa.format(e) | |
} | |
function ti(n) { | |
return -Math.floor(Math.log(n) / Math.LN10 + .01) | |
} | |
function ei(n, t) { | |
var e = ti(t[2]); | |
return n in kl ? Math.abs(e - ti(Math.max(Ma(t[0]), Ma(t[1])))) + +("e" !== n) : e - 2 * ("%" === n) | |
} | |
function ri(n, t, e, r) { | |
function u(n) { | |
return (e ? Math.log(0 > n ? 0 : n) : -Math.log(n > 0 ? 0 : -n)) / Math.log(t) | |
} | |
function i(n) { | |
return e ? Math.pow(t, n) : -Math.pow(t, -n) | |
} | |
function a(t) { | |
return n(u(t)) | |
} | |
return a.invert = function(t) { | |
return i(n.invert(t)) | |
} | |
, | |
a.domain = function(t) { | |
return arguments.length ? (e = t[0] >= 0, | |
n.domain((r = t.map(Number)).map(u)), | |
a) : r | |
} | |
, | |
a.base = function(e) { | |
return arguments.length ? (t = +e, | |
n.domain(r.map(u)), | |
a) : t | |
} | |
, | |
a.nice = function() { | |
var t = Xu(r.map(u), e ? Math : El); | |
return n.domain(t), | |
r = t.map(i), | |
a | |
} | |
, | |
a.ticks = function() { | |
var n = Yu(r) | |
, a = [] | |
, o = n[0] | |
, l = n[1] | |
, c = Math.floor(u(o)) | |
, s = Math.ceil(u(l)) | |
, f = t % 1 ? 2 : t; | |
if (isFinite(s - c)) { | |
if (e) { | |
for (; s > c; c++) | |
for (var h = 1; f > h; h++) | |
a.push(i(c) * h); | |
a.push(i(c)) | |
} else | |
for (a.push(i(c)); c++ < s; ) | |
for (var h = f - 1; h > 0; h--) | |
a.push(i(c) * h); | |
for (c = 0; a[c] < o; c++) | |
; | |
for (s = a.length; a[s - 1] > l; s--) | |
; | |
a = a.slice(c, s) | |
} | |
return a | |
} | |
, | |
a.tickFormat = function(n, e) { | |
if (!arguments.length) | |
return Nl; | |
arguments.length < 2 ? e = Nl : "function" != typeof e && (e = oa.format(e)); | |
var r = Math.max(1, t * n / a.ticks().length); | |
return function(n) { | |
var a = n / i(Math.round(u(n))); | |
return t - .5 > a * t && (a *= t), | |
r >= a ? e(n) : "" | |
} | |
} | |
, | |
a.copy = function() { | |
return ri(n.copy(), t, e, r) | |
} | |
, | |
Ju(a, n) | |
} | |
function ui(n, t, e) { | |
function r(t) { | |
return n(u(t)) | |
} | |
var u = ii(t) | |
, i = ii(1 / t); | |
return r.invert = function(t) { | |
return i(n.invert(t)) | |
} | |
, | |
r.domain = function(t) { | |
return arguments.length ? (n.domain((e = t.map(Number)).map(u)), | |
r) : e | |
} | |
, | |
r.ticks = function(n) { | |
return Qu(e, n) | |
} | |
, | |
r.tickFormat = function(n, t) { | |
return ni(e, n, t) | |
} | |
, | |
r.nice = function(n) { | |
return r.domain(Gu(e, n)) | |
} | |
, | |
r.exponent = function(a) { | |
return arguments.length ? (u = ii(t = a), | |
i = ii(1 / t), | |
n.domain(e.map(u)), | |
r) : t | |
} | |
, | |
r.copy = function() { | |
return ui(n.copy(), t, e) | |
} | |
, | |
Ju(r, n) | |
} | |
function ii(n) { | |
return function(t) { | |
return 0 > t ? -Math.pow(-t, n) : Math.pow(t, n) | |
} | |
} | |
function ai(n, t) { | |
function e(e) { | |
return i[((u.get(e) || ("range" === t.t ? u.set(e, n.push(e)) : NaN)) - 1) % i.length] | |
} | |
function r(t, e) { | |
return oa.range(n.length).map(function(n) { | |
return t + e * n | |
}) | |
} | |
var u, i, a; | |
return e.domain = function(r) { | |
if (!arguments.length) | |
return n; | |
n = [], | |
u = new c; | |
for (var i, a = -1, o = r.length; ++a < o; ) | |
u.has(i = r[a]) || u.set(i, n.push(i)); | |
return e[t.t].apply(e, t.a) | |
} | |
, | |
e.range = function(n) { | |
return arguments.length ? (i = n, | |
a = 0, | |
t = { | |
t: "range", | |
a: arguments | |
}, | |
e) : i | |
} | |
, | |
e.rangePoints = function(u, o) { | |
arguments.length < 2 && (o = 0); | |
var l = u[0] | |
, c = u[1] | |
, s = n.length < 2 ? (l = (l + c) / 2, | |
0) : (c - l) / (n.length - 1 + o); | |
return i = r(l + s * o / 2, s), | |
a = 0, | |
t = { | |
t: "rangePoints", | |
a: arguments | |
}, | |
e | |
} | |
, | |
e.rangeRoundPoints = function(u, o) { | |
arguments.length < 2 && (o = 0); | |
var l = u[0] | |
, c = u[1] | |
, s = n.length < 2 ? (l = c = Math.round((l + c) / 2), | |
0) : (c - l) / (n.length - 1 + o) | 0; | |
return i = r(l + Math.round(s * o / 2 + (c - l - (n.length - 1 + o) * s) / 2), s), | |
a = 0, | |
t = { | |
t: "rangeRoundPoints", | |
a: arguments | |
}, | |
e | |
} | |
, | |
e.rangeBands = function(u, o, l) { | |
arguments.length < 2 && (o = 0), | |
arguments.length < 3 && (l = o); | |
var c = u[1] < u[0] | |
, s = u[c - 0] | |
, f = u[1 - c] | |
, h = (f - s) / (n.length - o + 2 * l); | |
return i = r(s + h * l, h), | |
c && i.reverse(), | |
a = h * (1 - o), | |
t = { | |
t: "rangeBands", | |
a: arguments | |
}, | |
e | |
} | |
, | |
e.rangeRoundBands = function(u, o, l) { | |
arguments.length < 2 && (o = 0), | |
arguments.length < 3 && (l = o); | |
var c = u[1] < u[0] | |
, s = u[c - 0] | |
, f = u[1 - c] | |
, h = Math.floor((f - s) / (n.length - o + 2 * l)); | |
return i = r(s + Math.round((f - s - (n.length - o) * h) / 2), h), | |
c && i.reverse(), | |
a = Math.round(h * (1 - o)), | |
t = { | |
t: "rangeRoundBands", | |
a: arguments | |
}, | |
e | |
} | |
, | |
e.rangeBand = function() { | |
return a | |
} | |
, | |
e.rangeExtent = function() { | |
return Yu(t.a[0]) | |
} | |
, | |
e.copy = function() { | |
return ai(n, t) | |
} | |
, | |
e.domain(n) | |
} | |
function oi(n, t) { | |
function i() { | |
var e = 0 | |
, r = t.length; | |
for (o = []; ++e < r; ) | |
o[e - 1] = oa.quantile(n, e / r); | |
return a | |
} | |
function a(n) { | |
return isNaN(n = +n) ? void 0 : t[oa.bisect(o, n)] | |
} | |
var o; | |
return a.domain = function(t) { | |
return arguments.length ? (n = t.map(r).filter(u).sort(e), | |
i()) : n | |
} | |
, | |
a.range = function(n) { | |
return arguments.length ? (t = n, | |
i()) : t | |
} | |
, | |
a.quantiles = function() { | |
return o | |
} | |
, | |
a.invertExtent = function(e) { | |
return e = t.indexOf(e), | |
0 > e ? [NaN, NaN] : [e > 0 ? o[e - 1] : n[0], e < o.length ? o[e] : n[n.length - 1]] | |
} | |
, | |
a.copy = function() { | |
return oi(n, t) | |
} | |
, | |
i() | |
} | |
function li(n, t, e) { | |
function r(t) { | |
return e[Math.max(0, Math.min(a, Math.floor(i * (t - n))))] | |
} | |
function u() { | |
return i = e.length / (t - n), | |
a = e.length - 1, | |
r | |
} | |
var i, a; | |
return r.domain = function(e) { | |
return arguments.length ? (n = +e[0], | |
t = +e[e.length - 1], | |
u()) : [n, t] | |
} | |
, | |
r.range = function(n) { | |
return arguments.length ? (e = n, | |
u()) : e | |
} | |
, | |
r.invertExtent = function(t) { | |
return t = e.indexOf(t), | |
t = 0 > t ? NaN : t / i + n, | |
[t, t + 1 / i] | |
} | |
, | |
r.copy = function() { | |
return li(n, t, e) | |
} | |
, | |
u() | |
} | |
function ci(n, t) { | |
function e(e) { | |
return e >= e ? t[oa.bisect(n, e)] : void 0 | |
} | |
return e.domain = function(t) { | |
return arguments.length ? (n = t, | |
e) : n | |
} | |
, | |
e.range = function(n) { | |
return arguments.length ? (t = n, | |
e) : t | |
} | |
, | |
e.invertExtent = function(e) { | |
return e = t.indexOf(e), | |
[n[e - 1], n[e]] | |
} | |
, | |
e.copy = function() { | |
return ci(n, t) | |
} | |
, | |
e | |
} | |
function si(n) { | |
function t(n) { | |
return +n | |
} | |
return t.invert = t, | |
t.domain = t.range = function(e) { | |
return arguments.length ? (n = e.map(t), | |
t) : n | |
} | |
, | |
t.ticks = function(t) { | |
return Qu(n, t) | |
} | |
, | |
t.tickFormat = function(t, e) { | |
return ni(n, t, e) | |
} | |
, | |
t.copy = function() { | |
return si(n) | |
} | |
, | |
t | |
} | |
function fi() { | |
return 0 | |
} | |
function hi(n) { | |
return n.innerRadius | |
} | |
function gi(n) { | |
return n.outerRadius | |
} | |
function pi(n) { | |
return n.startAngle | |
} | |
function vi(n) { | |
return n.endAngle | |
} | |
function di(n) { | |
return n && n.padAngle | |
} | |
function mi(n, t, e, r) { | |
return (n - e) * t - (t - r) * n > 0 ? 0 : 1 | |
} | |
function yi(n, t, e, r, u) { | |
var i = n[0] - t[0] | |
, a = n[1] - t[1] | |
, o = (u ? r : -r) / Math.sqrt(i * i + a * a) | |
, l = o * a | |
, c = -o * i | |
, s = n[0] + l | |
, f = n[1] + c | |
, h = t[0] + l | |
, g = t[1] + c | |
, p = (s + h) / 2 | |
, v = (f + g) / 2 | |
, d = h - s | |
, m = g - f | |
, y = d * d + m * m | |
, M = e - r | |
, x = s * g - h * f | |
, b = (0 > m ? -1 : 1) * Math.sqrt(Math.max(0, M * M * y - x * x)) | |
, _ = (x * m - d * b) / y | |
, w = (-x * d - m * b) / y | |
, S = (x * m + d * b) / y | |
, k = (-x * d + m * b) / y | |
, N = _ - p | |
, E = w - v | |
, A = S - p | |
, C = k - v; | |
return N * N + E * E > A * A + C * C && (_ = S, | |
w = k), | |
[[_ - l, w - c], [_ * e / M, w * e / M]] | |
} | |
function Mi(n) { | |
function t(t) { | |
function a() { | |
c.push("M", i(n(s), o)) | |
} | |
for (var l, c = [], s = [], f = -1, h = t.length, g = En(e), p = En(r); ++f < h; ) | |
u.call(this, l = t[f], f) ? s.push([+g.call(this, l, f), +p.call(this, l, f)]) : s.length && (a(), | |
s = []); | |
return s.length && a(), | |
c.length ? c.join("") : null | |
} | |
var e = Ce | |
, r = ze | |
, u = zt | |
, i = xi | |
, a = i.key | |
, o = .7; | |
return t.x = function(n) { | |
return arguments.length ? (e = n, | |
t) : e | |
} | |
, | |
t.y = function(n) { | |
return arguments.length ? (r = n, | |
t) : r | |
} | |
, | |
t.defined = function(n) { | |
return arguments.length ? (u = n, | |
t) : u | |
} | |
, | |
t.interpolate = function(n) { | |
return arguments.length ? (a = "function" == typeof n ? i = n : (i = Tl.get(n) || xi).key, | |
t) : a | |
} | |
, | |
t.tension = function(n) { | |
return arguments.length ? (o = n, | |
t) : o | |
} | |
, | |
t | |
} | |
function xi(n) { | |
return n.length > 1 ? n.join("L") : n + "Z" | |
} | |
function bi(n) { | |
return n.join("L") + "Z" | |
} | |
function _i(n) { | |
for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e; ) | |
u.push("H", (r[0] + (r = n[t])[0]) / 2, "V", r[1]); | |
return e > 1 && u.push("H", r[0]), | |
u.join("") | |
} | |
function wi(n) { | |
for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e; ) | |
u.push("V", (r = n[t])[1], "H", r[0]); | |
return u.join("") | |
} | |
function Si(n) { | |
for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e; ) | |
u.push("H", (r = n[t])[0], "V", r[1]); | |
return u.join("") | |
} | |
function ki(n, t) { | |
return n.length < 4 ? xi(n) : n[1] + Ai(n.slice(1, -1), Ci(n, t)) | |
} | |
function Ni(n, t) { | |
return n.length < 3 ? bi(n) : n[0] + Ai((n.push(n[0]), | |
n), Ci([n[n.length - 2]].concat(n, [n[1]]), t)) | |
} | |
function Ei(n, t) { | |
return n.length < 3 ? xi(n) : n[0] + Ai(n, Ci(n, t)) | |
} | |
function Ai(n, t) { | |
if (t.length < 1 || n.length != t.length && n.length != t.length + 2) | |
return xi(n); | |
var e = n.length != t.length | |
, r = "" | |
, u = n[0] | |
, i = n[1] | |
, a = t[0] | |
, o = a | |
, l = 1; | |
if (e && (r += "Q" + (i[0] - 2 * a[0] / 3) + "," + (i[1] - 2 * a[1] / 3) + "," + i[0] + "," + i[1], | |
u = n[1], | |
l = 2), | |
t.length > 1) { | |
o = t[1], | |
i = n[l], | |
l++, | |
r += "C" + (u[0] + a[0]) + "," + (u[1] + a[1]) + "," + (i[0] - o[0]) + "," + (i[1] - o[1]) + "," + i[0] + "," + i[1]; | |
for (var c = 2; c < t.length; c++, | |
l++) | |
i = n[l], | |
o = t[c], | |
r += "S" + (i[0] - o[0]) + "," + (i[1] - o[1]) + "," + i[0] + "," + i[1] | |
} | |
if (e) { | |
var s = n[l]; | |
r += "Q" + (i[0] + 2 * o[0] / 3) + "," + (i[1] + 2 * o[1] / 3) + "," + s[0] + "," + s[1] | |
} | |
return r | |
} | |
function Ci(n, t) { | |
for (var e, r = [], u = (1 - t) / 2, i = n[0], a = n[1], o = 1, l = n.length; ++o < l; ) | |
e = i, | |
i = a, | |
a = n[o], | |
r.push([u * (a[0] - e[0]), u * (a[1] - e[1])]); | |
return r | |
} | |
function zi(n) { | |
if (n.length < 3) | |
return xi(n); | |
var t = 1 | |
, e = n.length | |
, r = n[0] | |
, u = r[0] | |
, i = r[1] | |
, a = [u, u, u, (r = n[1])[0]] | |
, o = [i, i, i, r[1]] | |
, l = [u, ",", i, "L", Ri(Pl, a), ",", Ri(Pl, o)]; | |
for (n.push(n[e - 1]); ++t <= e; ) | |
r = n[t], | |
a.shift(), | |
a.push(r[0]), | |
o.shift(), | |
o.push(r[1]), | |
Di(l, a, o); | |
return n.pop(), | |
l.push("L", r), | |
l.join("") | |
} | |
function Li(n) { | |
if (n.length < 4) | |
return xi(n); | |
for (var t, e = [], r = -1, u = n.length, i = [0], a = [0]; ++r < 3; ) | |
t = n[r], | |
i.push(t[0]), | |
a.push(t[1]); | |
for (e.push(Ri(Pl, i) + "," + Ri(Pl, a)), | |
--r; ++r < u; ) | |
t = n[r], | |
i.shift(), | |
i.push(t[0]), | |
a.shift(), | |
a.push(t[1]), | |
Di(e, i, a); | |
return e.join("") | |
} | |
function qi(n) { | |
for (var t, e, r = -1, u = n.length, i = u + 4, a = [], o = []; ++r < 4; ) | |
e = n[r % u], | |
a.push(e[0]), | |
o.push(e[1]); | |
for (t = [Ri(Pl, a), ",", Ri(Pl, o)], | |
--r; ++r < i; ) | |
e = n[r % u], | |
a.shift(), | |
a.push(e[0]), | |
o.shift(), | |
o.push(e[1]), | |
Di(t, a, o); | |
return t.join("") | |
} | |
function Ti(n, t) { | |
var e = n.length - 1; | |
if (e) | |
for (var r, u, i = n[0][0], a = n[0][1], o = n[e][0] - i, l = n[e][1] - a, c = -1; ++c <= e; ) | |
r = n[c], | |
u = c / e, | |
r[0] = t * r[0] + (1 - t) * (i + u * o), | |
r[1] = t * r[1] + (1 - t) * (a + u * l); | |
return zi(n) | |
} | |
function Ri(n, t) { | |
return n[0] * t[0] + n[1] * t[1] + n[2] * t[2] + n[3] * t[3] | |
} | |
function Di(n, t, e) { | |
n.push("C", Ri(Rl, t), ",", Ri(Rl, e), ",", Ri(Dl, t), ",", Ri(Dl, e), ",", Ri(Pl, t), ",", Ri(Pl, e)) | |
} | |
function Pi(n, t) { | |
return (t[1] - n[1]) / (t[0] - n[0]) | |
} | |
function Ui(n) { | |
for (var t = 0, e = n.length - 1, r = [], u = n[0], i = n[1], a = r[0] = Pi(u, i); ++t < e; ) | |
r[t] = (a + (a = Pi(u = i, i = n[t + 1]))) / 2; | |
return r[t] = a, | |
r | |
} | |
function ji(n) { | |
for (var t, e, r, u, i = [], a = Ui(n), o = -1, l = n.length - 1; ++o < l; ) | |
t = Pi(n[o], n[o + 1]), | |
Ma(t) < Pa ? a[o] = a[o + 1] = 0 : (e = a[o] / t, | |
r = a[o + 1] / t, | |
u = e * e + r * r, | |
u > 9 && (u = 3 * t / Math.sqrt(u), | |
a[o] = u * e, | |
a[o + 1] = u * r)); | |
for (o = -1; ++o <= l; ) | |
u = (n[Math.min(l, o + 1)][0] - n[Math.max(0, o - 1)][0]) / (6 * (1 + a[o] * a[o])), | |
i.push([u || 0, a[o] * u || 0]); | |
return i | |
} | |
function Fi(n) { | |
return n.length < 3 ? xi(n) : n[0] + Ai(n, ji(n)) | |
} | |
function Hi(n) { | |
for (var t, e, r, u = -1, i = n.length; ++u < i; ) | |
t = n[u], | |
e = t[0], | |
r = t[1] - Oa, | |
t[0] = e * Math.cos(r), | |
t[1] = e * Math.sin(r); | |
return n | |
} | |
function Oi(n) { | |
function t(t) { | |
function l() { | |
v.push("M", o(n(m), f), s, c(n(d.reverse()), f), "Z") | |
} | |
for (var h, g, p, v = [], d = [], m = [], y = -1, M = t.length, x = En(e), b = En(u), _ = e === r ? function() { | |
return g | |
} | |
: En(r), w = u === i ? function() { | |
return p | |
} | |
: En(i); ++y < M; ) | |
a.call(this, h = t[y], y) ? (d.push([g = +x.call(this, h, y), p = +b.call(this, h, y)]), | |
m.push([+_.call(this, h, y), +w.call(this, h, y)])) : d.length && (l(), | |
d = [], | |
m = []); | |
return d.length && l(), | |
v.length ? v.join("") : null | |
} | |
var e = Ce | |
, r = Ce | |
, u = 0 | |
, i = ze | |
, a = zt | |
, o = xi | |
, l = o.key | |
, c = o | |
, s = "L" | |
, f = .7; | |
return t.x = function(n) { | |
return arguments.length ? (e = r = n, | |
t) : r | |
} | |
, | |
t.x0 = function(n) { | |
return arguments.length ? (e = n, | |
t) : e | |
} | |
, | |
t.x1 = function(n) { | |
return arguments.length ? (r = n, | |
t) : r | |
} | |
, | |
t.y = function(n) { | |
return arguments.length ? (u = i = n, | |
t) : i | |
} | |
, | |
t.y0 = function(n) { | |
return arguments.length ? (u = n, | |
t) : u | |
} | |
, | |
t.y1 = function(n) { | |
return arguments.length ? (i = n, | |
t) : i | |
} | |
, | |
t.defined = function(n) { | |
return arguments.length ? (a = n, | |
t) : a | |
} | |
, | |
t.interpolate = function(n) { | |
return arguments.length ? (l = "function" == typeof n ? o = n : (o = Tl.get(n) || xi).key, | |
c = o.reverse || o, | |
s = o.closed ? "M" : "L", | |
t) : l | |
} | |
, | |
t.tension = function(n) { | |
return arguments.length ? (f = n, | |
t) : f | |
} | |
, | |
t | |
} | |
function Ii(n) { | |
return n.radius | |
} | |
function Yi(n) { | |
return [n.x, n.y] | |
} | |
function Zi(n) { | |
return function() { | |
var t = n.apply(this, arguments) | |
, e = t[0] | |
, r = t[1] - Oa; | |
return [e * Math.cos(r), e * Math.sin(r)] | |
} | |
} | |
function Vi() { | |
return 64 | |
} | |
function Xi() { | |
return "circle" | |
} | |
function $i(n) { | |
var t = Math.sqrt(n / ja); | |
return "M0," + t + "A" + t + "," + t + " 0 1,1 0," + -t + "A" + t + "," + t + " 0 1,1 0," + t + "Z" | |
} | |
function Bi(n) { | |
return function() { | |
var t, e, r; | |
(t = this[n]) && (r = t[e = t.active]) && (r.timer.c = null , | |
r.timer.t = NaN, | |
--t.count ? delete t[e] : delete this[n], | |
t.active += .5, | |
r.event && r.event.interrupt.call(this, this.__data__, r.index)) | |
} | |
} | |
function Wi(n, t, e) { | |
return Sa(n, Yl), | |
n.namespace = t, | |
n.id = e, | |
n | |
} | |
function Ji(n, t, e, r) { | |
var u = n.id | |
, i = n.namespace; | |
return Y(n, "function" == typeof e ? function(n, a, o) { | |
n[i][u].tween.set(t, r(e.call(n, n.__data__, a, o))) | |
} | |
: (e = r(e), | |
function(n) { | |
n[i][u].tween.set(t, e) | |
} | |
)) | |
} | |
function Gi(n) { | |
return null == n && (n = ""), | |
function() { | |
this.textContent = n | |
} | |
} | |
function Ki(n) { | |
return null == n ? "__transition__" : "__transition_" + n + "__" | |
} | |
function Qi(n, t, e, r, u) { | |
function i(n) { | |
var t = v.delay; | |
return s.t = t + l, | |
n >= t ? a(n - t) : void (s.c = a) | |
} | |
function a(e) { | |
var u = p.active | |
, i = p[u]; | |
i && (i.timer.c = null , | |
i.timer.t = NaN, | |
--p.count, | |
delete p[u], | |
i.event && i.event.interrupt.call(n, n.__data__, i.index)); | |
for (var a in p) | |
if (r > +a) { | |
var c = p[a]; | |
c.timer.c = null , | |
c.timer.t = NaN, | |
--p.count, | |
delete p[a] | |
} | |
s.c = o, | |
qn(function() { | |
return s.c && o(e || 1) && (s.c = null , | |
s.t = NaN), | |
1 | |
}, 0, l), | |
p.active = r, | |
v.event && v.event.start.call(n, n.__data__, t), | |
g = [], | |
v.tween.forEach(function(e, r) { | |
(r = r.call(n, n.__data__, t)) && g.push(r) | |
}), | |
h = v.ease, | |
f = v.duration | |
} | |
function o(u) { | |
for (var i = u / f, a = h(i), o = g.length; o > 0; ) | |
g[--o].call(n, a); | |
return i >= 1 ? (v.event && v.event.end.call(n, n.__data__, t), | |
--p.count ? delete p[r] : delete n[e], | |
1) : void 0 | |
} | |
var l, s, f, h, g, p = n[e] || (n[e] = { | |
active: 0, | |
count: 0 | |
}), v = p[r]; | |
v || (l = u.time, | |
s = qn(i, 0, l), | |
v = p[r] = { | |
tween: new c, | |
time: l, | |
timer: s, | |
delay: u.delay, | |
duration: u.duration, | |
ease: u.ease, | |
index: t | |
}, | |
u = null , | |
++p.count) | |
} | |
function na(n, t, e) { | |
n.attr("transform", function(n) { | |
var r = t(n); | |
return "translate(" + (isFinite(r) ? r : e(n)) + ",0)" | |
}) | |
} | |
function ta(n, t, e) { | |
n.attr("transform", function(n) { | |
var r = t(n); | |
return "translate(0," + (isFinite(r) ? r : e(n)) + ")" | |
}) | |
} | |
function ea(n) { | |
return n.toISOString() | |
} | |
function ra(n, t, e) { | |
function r(t) { | |
return n(t) | |
} | |
function u(n, e) { | |
var r = n[1] - n[0] | |
, u = r / e | |
, i = oa.bisect(Kl, u); | |
return i == Kl.length ? [t.year, Ku(n.map(function(n) { | |
return n / 31536e6 | |
}), e)[2]] : i ? t[u / Kl[i - 1] < Kl[i] / u ? i - 1 : i] : [tc, Ku(n, e)[2]] | |
} | |
return r.invert = function(t) { | |
return ua(n.invert(t)) | |
} | |
, | |
r.domain = function(t) { | |
return arguments.length ? (n.domain(t), | |
r) : n.domain().map(ua) | |
} | |
, | |
r.nice = function(n, t) { | |
function e(e) { | |
return !isNaN(e) && !n.range(e, ua(+e + 1), t).length | |
} | |
var i = r.domain() | |
, a = Yu(i) | |
, o = null == n ? u(a, 10) : "number" == typeof n && u(a, n); | |
return o && (n = o[0], | |
t = o[1]), | |
r.domain(Xu(i, t > 1 ? { | |
floor: function(t) { | |
for (; e(t = n.floor(t)); ) | |
t = ua(t - 1); | |
return t | |
}, | |
ceil: function(t) { | |
for (; e(t = n.ceil(t)); ) | |
t = ua(+t + 1); | |
return t | |
} | |
} : n)) | |
} | |
, | |
r.ticks = function(n, t) { | |
var e = Yu(r.domain()) | |
, i = null == n ? u(e, 10) : "number" == typeof n ? u(e, n) : !n.range && [{ | |
range: n | |
}, t]; | |
return i && (n = i[0], | |
t = i[1]), | |
n.range(e[0], ua(+e[1] + 1), 1 > t ? 1 : t) | |
} | |
, | |
r.tickFormat = function() { | |
return e | |
} | |
, | |
r.copy = function() { | |
return ra(n.copy(), t, e) | |
} | |
, | |
Ju(r, n) | |
} | |
function ua(n) { | |
return new Date(n) | |
} | |
function ia(n) { | |
return JSON.parse(n.responseText) | |
} | |
function aa(n) { | |
var t = sa.createRange(); | |
return t.selectNode(sa.body), | |
t.createContextualFragment(n.responseText) | |
} | |
var oa = { | |
version: "3.5.16" | |
} | |
, la = [].slice | |
, ca = function(n) { | |
return la.call(n) | |
} | |
, sa = this.document; | |
if (sa) | |
try { | |
ca(sa.documentElement.childNodes)[0].nodeType | |
} catch (fa) { | |
ca = function(n) { | |
for (var t = n.length, e = new Array(t); t--; ) | |
e[t] = n[t]; | |
return e | |
} | |
} | |
if (Date.now || (Date.now = function() { | |
return +new Date | |
} | |
), | |
sa) | |
try { | |
sa.createElement("DIV").style.setProperty("opacity", 0, "") | |
} catch (ha) { | |
var ga = this.Element.prototype | |
, pa = ga.setAttribute | |
, va = ga.setAttributeNS | |
, da = this.CSSStyleDeclaration.prototype | |
, ma = da.setProperty; | |
ga.setAttribute = function(n, t) { | |
pa.call(this, n, t + "") | |
} | |
, | |
ga.setAttributeNS = function(n, t, e) { | |
va.call(this, n, t, e + "") | |
} | |
, | |
da.setProperty = function(n, t, e) { | |
ma.call(this, n, t + "", e) | |
} | |
} | |
oa.ascending = e, | |
oa.descending = function(n, t) { | |
return n > t ? -1 : t > n ? 1 : t >= n ? 0 : NaN | |
} | |
, | |
oa.min = function(n, t) { | |
var e, r, u = -1, i = n.length; | |
if (1 === arguments.length) { | |
for (; ++u < i; ) | |
if (null != (r = n[u]) && r >= r) { | |
e = r; | |
break | |
} | |
for (; ++u < i; ) | |
null != (r = n[u]) && e > r && (e = r) | |
} else { | |
for (; ++u < i; ) | |
if (null != (r = t.call(n, n[u], u)) && r >= r) { | |
e = r; | |
break | |
} | |
for (; ++u < i; ) | |
null != (r = t.call(n, n[u], u)) && e > r && (e = r) | |
} | |
return e | |
} | |
, | |
oa.max = function(n, t) { | |
var e, r, u = -1, i = n.length; | |
if (1 === arguments.length) { | |
for (; ++u < i; ) | |
if (null != (r = n[u]) && r >= r) { | |
e = r; | |
break | |
} | |
for (; ++u < i; ) | |
null != (r = n[u]) && r > e && (e = r) | |
} else { | |
for (; ++u < i; ) | |
if (null != (r = t.call(n, n[u], u)) && r >= r) { | |
e = r; | |
break | |
} | |
for (; ++u < i; ) | |
null != (r = t.call(n, n[u], u)) && r > e && (e = r) | |
} | |
return e | |
} | |
, | |
oa.extent = function(n, t) { | |
var e, r, u, i = -1, a = n.length; | |
if (1 === arguments.length) { | |
for (; ++i < a; ) | |
if (null != (r = n[i]) && r >= r) { | |
e = u = r; | |
break | |
} | |
for (; ++i < a; ) | |
null != (r = n[i]) && (e > r && (e = r), | |
r > u && (u = r)) | |
} else { | |
for (; ++i < a; ) | |
if (null != (r = t.call(n, n[i], i)) && r >= r) { | |
e = u = r; | |
break | |
} | |
for (; ++i < a; ) | |
null != (r = t.call(n, n[i], i)) && (e > r && (e = r), | |
r > u && (u = r)) | |
} | |
return [e, u] | |
} | |
, | |
oa.sum = function(n, t) { | |
var e, r = 0, i = n.length, a = -1; | |
if (1 === arguments.length) | |
for (; ++a < i; ) | |
u(e = +n[a]) && (r += e); | |
else | |
for (; ++a < i; ) | |
u(e = +t.call(n, n[a], a)) && (r += e); | |
return r | |
} | |
, | |
oa.mean = function(n, t) { | |
var e, i = 0, a = n.length, o = -1, l = a; | |
if (1 === arguments.length) | |
for (; ++o < a; ) | |
u(e = r(n[o])) ? i += e : --l; | |
else | |
for (; ++o < a; ) | |
u(e = r(t.call(n, n[o], o))) ? i += e : --l; | |
return l ? i / l : void 0 | |
} | |
, | |
oa.quantile = function(n, t) { | |
var e = (n.length - 1) * t + 1 | |
, r = Math.floor(e) | |
, u = +n[r - 1] | |
, i = e - r; | |
return i ? u + i * (n[r] - u) : u | |
} | |
, | |
oa.median = function(n, t) { | |
var i, a = [], o = n.length, l = -1; | |
if (1 === arguments.length) | |
for (; ++l < o; ) | |
u(i = r(n[l])) && a.push(i); | |
else | |
for (; ++l < o; ) | |
u(i = r(t.call(n, n[l], l))) && a.push(i); | |
return a.length ? oa.quantile(a.sort(e), .5) : void 0 | |
} | |
, | |
oa.variance = function(n, t) { | |
var e, i, a = n.length, o = 0, l = 0, c = -1, s = 0; | |
if (1 === arguments.length) | |
for (; ++c < a; ) | |
u(e = r(n[c])) && (i = e - o, | |
o += i / ++s, | |
l += i * (e - o)); | |
else | |
for (; ++c < a; ) | |
u(e = r(t.call(n, n[c], c))) && (i = e - o, | |
o += i / ++s, | |
l += i * (e - o)); | |
return s > 1 ? l / (s - 1) : void 0 | |
} | |
, | |
oa.deviation = function() { | |
var n = oa.variance.apply(this, arguments); | |
return n ? Math.sqrt(n) : n | |
} | |
; | |
var ya = i(e); | |
oa.bisectLeft = ya.left, | |
oa.bisect = oa.bisectRight = ya.right, | |
oa.bisector = function(n) { | |
return i(1 === n.length ? function(t, r) { | |
return e(n(t), r) | |
} | |
: n) | |
} | |
, | |
oa.shuffle = function(n, t, e) { | |
(i = arguments.length) < 3 && (e = n.length, | |
2 > i && (t = 0)); | |
for (var r, u, i = e - t; i; ) | |
u = Math.random() * i-- | 0, | |
r = n[i + t], | |
n[i + t] = n[u + t], | |
n[u + t] = r; | |
return n | |
} | |
, | |
oa.permute = function(n, t) { | |
for (var e = t.length, r = new Array(e); e--; ) | |
r[e] = n[t[e]]; | |
return r | |
} | |
, | |
oa.pairs = function(n) { | |
for (var t, e = 0, r = n.length - 1, u = n[0], i = new Array(0 > r ? 0 : r); r > e; ) | |
i[e] = [t = u, u = n[++e]]; | |
return i | |
} | |
, | |
oa.transpose = function(n) { | |
if (!(u = n.length)) | |
return []; | |
for (var t = -1, e = oa.min(n, a), r = new Array(e); ++t < e; ) | |
for (var u, i = -1, o = r[t] = new Array(u); ++i < u; ) | |
o[i] = n[i][t]; | |
return r | |
} | |
, | |
oa.zip = function() { | |
return oa.transpose(arguments) | |
} | |
, | |
oa.keys = function(n) { | |
var t = []; | |
for (var e in n) | |
t.push(e); | |
return t | |
} | |
, | |
oa.values = function(n) { | |
var t = []; | |
for (var e in n) | |
t.push(n[e]); | |
return t | |
} | |
, | |
oa.entries = function(n) { | |
var t = []; | |
for (var e in n) | |
t.push({ | |
key: e, | |
value: n[e] | |
}); | |
return t | |
} | |
, | |
oa.merge = function(n) { | |
for (var t, e, r, u = n.length, i = -1, a = 0; ++i < u; ) | |
a += n[i].length; | |
for (e = new Array(a); --u >= 0; ) | |
for (r = n[u], | |
t = r.length; --t >= 0; ) | |
e[--a] = r[t]; | |
return e | |
} | |
; | |
var Ma = Math.abs; | |
oa.range = function(n, t, e) { | |
if (arguments.length < 3 && (e = 1, | |
arguments.length < 2 && (t = n, | |
n = 0)), | |
(t - n) / e === 1 / 0) | |
throw new Error("infinite range"); | |
var r, u = [], i = o(Ma(e)), a = -1; | |
if (n *= i, | |
t *= i, | |
e *= i, | |
0 > e) | |
for (; (r = n + e * ++a) > t; ) | |
u.push(r / i); | |
else | |
for (; (r = n + e * ++a) < t; ) | |
u.push(r / i); | |
return u | |
} | |
, | |
oa.map = function(n, t) { | |
var e = new c; | |
if (n instanceof c) | |
n.forEach(function(n, t) { | |
e.set(n, t) | |
}); | |
else if (Array.isArray(n)) { | |
var r, u = -1, i = n.length; | |
if (1 === arguments.length) | |
for (; ++u < i; ) | |
e.set(u, n[u]); | |
else | |
for (; ++u < i; ) | |
e.set(t.call(n, r = n[u], u), r) | |
} else | |
for (var a in n) | |
e.set(a, n[a]); | |
return e | |
} | |
; | |
var xa = "__proto__" | |
, ba = "\x00"; | |
l(c, { | |
has: h, | |
get: function(n) { | |
return this._[s(n)] | |
}, | |
set: function(n, t) { | |
return this._[s(n)] = t | |
}, | |
remove: g, | |
keys: p, | |
values: function() { | |
var n = []; | |
for (var t in this._) | |
n.push(this._[t]); | |
return n | |
}, | |
entries: function() { | |
var n = []; | |
for (var t in this._) | |
n.push({ | |
key: f(t), | |
value: this._[t] | |
}); | |
return n | |
}, | |
size: v, | |
empty: d, | |
forEach: function(n) { | |
for (var t in this._) | |
n.call(this, f(t), this._[t]) | |
} | |
}), | |
oa.nest = function() { | |
function n(t, a, o) { | |
if (o >= i.length) | |
return r ? r.call(u, a) : e ? a.sort(e) : a; | |
for (var l, s, f, h, g = -1, p = a.length, v = i[o++], d = new c; ++g < p; ) | |
(h = d.get(l = v(s = a[g]))) ? h.push(s) : d.set(l, [s]); | |
return t ? (s = t(), | |
f = function(e, r) { | |
s.set(e, n(t, r, o)) | |
} | |
) : (s = {}, | |
f = function(e, r) { | |
s[e] = n(t, r, o) | |
} | |
), | |
d.forEach(f), | |
s | |
} | |
function t(n, e) { | |
if (e >= i.length) | |
return n; | |
var r = [] | |
, u = a[e++]; | |
return n.forEach(function(n, u) { | |
r.push({ | |
key: n, | |
values: t(u, e) | |
}) | |
}), | |
u ? r.sort(function(n, t) { | |
return u(n.key, t.key) | |
}) : r | |
} | |
var e, r, u = {}, i = [], a = []; | |
return u.map = function(t, e) { | |
return n(e, t, 0) | |
} | |
, | |
u.entries = function(e) { | |
return t(n(oa.map, e, 0), 0) | |
} | |
, | |
u.key = function(n) { | |
return i.push(n), | |
u | |
} | |
, | |
u.sortKeys = function(n) { | |
return a[i.length - 1] = n, | |
u | |
} | |
, | |
u.sortValues = function(n) { | |
return e = n, | |
u | |
} | |
, | |
u.rollup = function(n) { | |
return r = n, | |
u | |
} | |
, | |
u | |
} | |
, | |
oa.set = function(n) { | |
var t = new m; | |
if (n) | |
for (var e = 0, r = n.length; r > e; ++e) | |
t.add(n[e]); | |
return t | |
} | |
, | |
l(m, { | |
has: h, | |
add: function(n) { | |
return this._[s(n += "")] = !0, | |
n | |
}, | |
remove: g, | |
values: p, | |
size: v, | |
empty: d, | |
forEach: function(n) { | |
for (var t in this._) | |
n.call(this, f(t)) | |
} | |
}), | |
oa.behavior = {}, | |
oa.rebind = function(n, t) { | |
for (var e, r = 1, u = arguments.length; ++r < u; ) | |
n[e = arguments[r]] = M(n, t, t[e]); | |
return n | |
} | |
; | |
var _a = ["webkit", "ms", "moz", "Moz", "o", "O"]; | |
oa.dispatch = function() { | |
for (var n = new _, t = -1, e = arguments.length; ++t < e; ) | |
n[arguments[t]] = w(n); | |
return n | |
} | |
, | |
_.prototype.on = function(n, t) { | |
var e = n.indexOf(".") | |
, r = ""; | |
if (e >= 0 && (r = n.slice(e + 1), | |
n = n.slice(0, e)), | |
n) | |
return arguments.length < 2 ? this[n].on(r) : this[n].on(r, t); | |
if (2 === arguments.length) { | |
if (null == t) | |
for (n in this) | |
this.hasOwnProperty(n) && this[n].on(r, null ); | |
return this | |
} | |
} | |
, | |
oa.event = null , | |
oa.requote = function(n) { | |
return n.replace(wa, "\\$&") | |
} | |
; | |
var wa = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g | |
, Sa = {}.__proto__ ? function(n, t) { | |
n.__proto__ = t | |
} | |
: function(n, t) { | |
for (var e in t) | |
n[e] = t[e] | |
} | |
, ka = function(n, t) { | |
return t.querySelector(n) | |
} | |
, Na = function(n, t) { | |
return t.querySelectorAll(n) | |
} | |
, Ea = function(n, t) { | |
var e = n.matches || n[x(n, "matchesSelector")]; | |
return (Ea = function(n, t) { | |
return e.call(n, t) | |
} | |
)(n, t) | |
} | |
; | |
"function" == typeof Sizzle && (ka = function(n, t) { | |
return Sizzle(n, t)[0] || null | |
} | |
, | |
Na = Sizzle, | |
Ea = Sizzle.matchesSelector), | |
oa.selection = function() { | |
return oa.select(sa.documentElement) | |
} | |
; | |
var Aa = oa.selection.prototype = []; | |
Aa.select = function(n) { | |
var t, e, r, u, i = []; | |
n = A(n); | |
for (var a = -1, o = this.length; ++a < o; ) { | |
i.push(t = []), | |
t.parentNode = (r = this[a]).parentNode; | |
for (var l = -1, c = r.length; ++l < c; ) | |
(u = r[l]) ? (t.push(e = n.call(u, u.__data__, l, a)), | |
e && "__data__" in u && (e.__data__ = u.__data__)) : t.push(null ) | |
} | |
return E(i) | |
} | |
, | |
Aa.selectAll = function(n) { | |
var t, e, r = []; | |
n = C(n); | |
for (var u = -1, i = this.length; ++u < i; ) | |
for (var a = this[u], o = -1, l = a.length; ++o < l; ) | |
(e = a[o]) && (r.push(t = ca(n.call(e, e.__data__, o, u))), | |
t.parentNode = e); | |
return E(r) | |
} | |
; | |
var Ca = "http://www.w3.org/1999/xhtml" | |
, za = { | |
svg: "http://www.w3.org/2000/svg", | |
xhtml: Ca, | |
xlink: "http://www.w3.org/1999/xlink", | |
xml: "http://www.w3.org/XML/1998/namespace", | |
xmlns: "http://www.w3.org/2000/xmlns/" | |
}; | |
oa.ns = { | |
prefix: za, | |
qualify: function(n) { | |
var t = n.indexOf(":") | |
, e = n; | |
return t >= 0 && "xmlns" !== (e = n.slice(0, t)) && (n = n.slice(t + 1)), | |
za.hasOwnProperty(e) ? { | |
space: za[e], | |
local: n | |
} : n | |
} | |
}, | |
Aa.attr = function(n, t) { | |
if (arguments.length < 2) { | |
if ("string" == typeof n) { | |
var e = this.node(); | |
return n = oa.ns.qualify(n), | |
n.local ? e.getAttributeNS(n.space, n.local) : e.getAttribute(n) | |
} | |
for (t in n) | |
this.each(z(t, n[t])); | |
return this | |
} | |
return this.each(z(n, t)) | |
} | |
, | |
Aa.classed = function(n, t) { | |
if (arguments.length < 2) { | |
if ("string" == typeof n) { | |
var e = this.node() | |
, r = (n = T(n)).length | |
, u = -1; | |
if (t = e.classList) { | |
for (; ++u < r; ) | |
if (!t.contains(n[u])) | |
return !1 | |
} else | |
for (t = e.getAttribute("class"); ++u < r; ) | |
if (!q(n[u]).test(t)) | |
return !1; | |
return !0 | |
} | |
for (t in n) | |
this.each(R(t, n[t])); | |
return this | |
} | |
return this.each(R(n, t)) | |
} | |
, | |
Aa.style = function(n, e, r) { | |
var u = arguments.length; | |
if (3 > u) { | |
if ("string" != typeof n) { | |
2 > u && (e = ""); | |
for (r in n) | |
this.each(P(r, n[r], e)); | |
return this | |
} | |
if (2 > u) { | |
var i = this.node(); | |
return t(i).getComputedStyle(i, null ).getPropertyValue(n) | |
} | |
r = "" | |
} | |
return this.each(P(n, e, r)) | |
} | |
, | |
Aa.property = function(n, t) { | |
if (arguments.length < 2) { | |
if ("string" == typeof n) | |
return this.node()[n]; | |
for (t in n) | |
this.each(U(t, n[t])); | |
return this | |
} | |
return this.each(U(n, t)) | |
} | |
, | |
Aa.text = function(n) { | |
return arguments.length ? this.each("function" == typeof n ? function() { | |
var t = n.apply(this, arguments); | |
this.textContent = null == t ? "" : t | |
} | |
: null == n ? function() { | |
this.textContent = "" | |
} | |
: function() { | |
this.textContent = n | |
} | |
) : this.node().textContent | |
} | |
, | |
Aa.html = function(n) { | |
return arguments.length ? this.each("function" == typeof n ? function() { | |
var t = n.apply(this, arguments); | |
this.innerHTML = null == t ? "" : t | |
} | |
: null == n ? function() { | |
this.innerHTML = "" | |
} | |
: function() { | |
this.innerHTML = n | |
} | |
) : this.node().innerHTML | |
} | |
, | |
Aa.append = function(n) { | |
return n = j(n), | |
this.select(function() { | |
return this.appendChild(n.apply(this, arguments)) | |
}) | |
} | |
, | |
Aa.insert = function(n, t) { | |
return n = j(n), | |
t = A(t), | |
this.select(function() { | |
return this.insertBefore(n.apply(this, arguments), t.apply(this, arguments) || null ) | |
}) | |
} | |
, | |
Aa.remove = function() { | |
return this.each(F) | |
} | |
, | |
Aa.data = function(n, t) { | |
function e(n, e) { | |
var r, u, i, a = n.length, f = e.length, h = Math.min(a, f), g = new Array(f), p = new Array(f), v = new Array(a); | |
if (t) { | |
var d, m = new c, y = new Array(a); | |
for (r = -1; ++r < a; ) | |
(u = n[r]) && (m.has(d = t.call(u, u.__data__, r)) ? v[r] = u : m.set(d, u), | |
y[r] = d); | |
for (r = -1; ++r < f; ) | |
(u = m.get(d = t.call(e, i = e[r], r))) ? u !== !0 && (g[r] = u, | |
u.__data__ = i) : p[r] = H(i), | |
m.set(d, !0); | |
for (r = -1; ++r < a; ) | |
r in y && m.get(y[r]) !== !0 && (v[r] = n[r]) | |
} else { | |
for (r = -1; ++r < h; ) | |
u = n[r], | |
i = e[r], | |
u ? (u.__data__ = i, | |
g[r] = u) : p[r] = H(i); | |
for (; f > r; ++r) | |
p[r] = H(e[r]); | |
for (; a > r; ++r) | |
v[r] = n[r] | |
} | |
p.update = g, | |
p.parentNode = g.parentNode = v.parentNode = n.parentNode, | |
o.push(p), | |
l.push(g), | |
s.push(v) | |
} | |
var r, u, i = -1, a = this.length; | |
if (!arguments.length) { | |
for (n = new Array(a = (r = this[0]).length); ++i < a; ) | |
(u = r[i]) && (n[i] = u.__data__); | |
return n | |
} | |
var o = Z([]) | |
, l = E([]) | |
, s = E([]); | |
if ("function" == typeof n) | |
for (; ++i < a; ) | |
e(r = this[i], n.call(r, r.parentNode.__data__, i)); | |
else | |
for (; ++i < a; ) | |
e(r = this[i], n); | |
return l.enter = function() { | |
return o | |
} | |
, | |
l.exit = function() { | |
return s | |
} | |
, | |
l | |
} | |
, | |
Aa.datum = function(n) { | |
return arguments.length ? this.property("__data__", n) : this.property("__data__") | |
} | |
, | |
Aa.filter = function(n) { | |
var t, e, r, u = []; | |
"function" != typeof n && (n = O(n)); | |
for (var i = 0, a = this.length; a > i; i++) { | |
u.push(t = []), | |
t.parentNode = (e = this[i]).parentNode; | |
for (var o = 0, l = e.length; l > o; o++) | |
(r = e[o]) && n.call(r, r.__data__, o, i) && t.push(r) | |
} | |
return E(u) | |
} | |
, | |
Aa.order = function() { | |
for (var n = -1, t = this.length; ++n < t; ) | |
for (var e, r = this[n], u = r.length - 1, i = r[u]; --u >= 0; ) | |
(e = r[u]) && (i && i !== e.nextSibling && i.parentNode.insertBefore(e, i), | |
i = e); | |
return this | |
} | |
, | |
Aa.sort = function(n) { | |
n = I.apply(this, arguments); | |
for (var t = -1, e = this.length; ++t < e; ) | |
this[t].sort(n); | |
return this.order() | |
} | |
, | |
Aa.each = function(n) { | |
return Y(this, function(t, e, r) { | |
n.call(t, t.__data__, e, r) | |
}) | |
} | |
, | |
Aa.call = function(n) { | |
var t = ca(arguments); | |
return n.apply(t[0] = this, t), | |
this | |
} | |
, | |
Aa.empty = function() { | |
return !this.node() | |
} | |
, | |
Aa.node = function() { | |
for (var n = 0, t = this.length; t > n; n++) | |
for (var e = this[n], r = 0, u = e.length; u > r; r++) { | |
var i = e[r]; | |
if (i) | |
return i | |
} | |
return null | |
} | |
, | |
Aa.size = function() { | |
var n = 0; | |
return Y(this, function() { | |
++n | |
}), | |
n | |
} | |
; | |
var La = []; | |
oa.selection.enter = Z, | |
oa.selection.enter.prototype = La, | |
La.append = Aa.append, | |
La.empty = Aa.empty, | |
La.node = Aa.node, | |
La.call = Aa.call, | |
La.size = Aa.size, | |
La.select = function(n) { | |
for (var t, e, r, u, i, a = [], o = -1, l = this.length; ++o < l; ) { | |
r = (u = this[o]).update, | |
a.push(t = []), | |
t.parentNode = u.parentNode; | |
for (var c = -1, s = u.length; ++c < s; ) | |
(i = u[c]) ? (t.push(r[c] = e = n.call(u.parentNode, i.__data__, c, o)), | |
e.__data__ = i.__data__) : t.push(null ) | |
} | |
return E(a) | |
} | |
, | |
La.insert = function(n, t) { | |
return arguments.length < 2 && (t = V(this)), | |
Aa.insert.call(this, n, t) | |
} | |
, | |
oa.select = function(t) { | |
var e; | |
return "string" == typeof t ? (e = [ka(t, sa)], | |
e.parentNode = sa.documentElement) : (e = [t], | |
e.parentNode = n(t)), | |
E([e]) | |
} | |
, | |
oa.selectAll = function(n) { | |
var t; | |
return "string" == typeof n ? (t = ca(Na(n, sa)), | |
t.parentNode = sa.documentElement) : (t = ca(n), | |
t.parentNode = null ), | |
E([t]) | |
} | |
, | |
Aa.on = function(n, t, e) { | |
var r = arguments.length; | |
if (3 > r) { | |
if ("string" != typeof n) { | |
2 > r && (t = !1); | |
for (e in n) | |
this.each(X(e, n[e], t)); | |
return this | |
} | |
if (2 > r) | |
return (r = this.node()["__on" + n]) && r._; | |
e = !1 | |
} | |
return this.each(X(n, t, e)) | |
} | |
; | |
var qa = oa.map({ | |
mouseenter: "mouseover", | |
mouseleave: "mouseout" | |
}); | |
sa && qa.forEach(function(n) { | |
"on" + n in sa && qa.remove(n) | |
}); | |
var Ta, Ra = 0; | |
oa.mouse = function(n) { | |
return J(n, k()) | |
} | |
; | |
var Da = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0; | |
oa.touch = function(n, t, e) { | |
if (arguments.length < 3 && (e = t, | |
t = k().changedTouches), | |
t) | |
for (var r, u = 0, i = t.length; i > u; ++u) | |
if ((r = t[u]).identifier === e) | |
return J(n, r) | |
} | |
, | |
oa.behavior.drag = function() { | |
function n() { | |
this.on("mousedown.drag", i).on("touchstart.drag", a) | |
} | |
function e(n, t, e, i, a) { | |
return function() { | |
function o() { | |
var n, e, r = t(h, v); | |
r && (n = r[0] - M[0], | |
e = r[1] - M[1], | |
p |= n | e, | |
M = r, | |
g({ | |
type: "drag", | |
x: r[0] + c[0], | |
y: r[1] + c[1], | |
dx: n, | |
dy: e | |
})) | |
} | |
function l() { | |
t(h, v) && (m.on(i + d, null ).on(a + d, null ), | |
y(p), | |
g({ | |
type: "dragend" | |
})) | |
} | |
var c, s = this, f = oa.event.target.correspondingElement || oa.event.target, h = s.parentNode, g = r.of(s, arguments), p = 0, v = n(), d = ".drag" + (null == v ? "" : "-" + v), m = oa.select(e(f)).on(i + d, o).on(a + d, l), y = W(f), M = t(h, v); | |
u ? (c = u.apply(s, arguments), | |
c = [c.x - M[0], c.y - M[1]]) : c = [0, 0], | |
g({ | |
type: "dragstart" | |
}) | |
} | |
} | |
var r = N(n, "drag", "dragstart", "dragend") | |
, u = null | |
, i = e(b, oa.mouse, t, "mousemove", "mouseup") | |
, a = e(G, oa.touch, y, "touchmove", "touchend"); | |
return n.origin = function(t) { | |
return arguments.length ? (u = t, | |
n) : u | |
} | |
, | |
oa.rebind(n, r, "on") | |
} | |
, | |
oa.touches = function(n, t) { | |
return arguments.length < 2 && (t = k().touches), | |
t ? ca(t).map(function(t) { | |
var e = J(n, t); | |
return e.identifier = t.identifier, | |
e | |
}) : [] | |
} | |
; | |
var Pa = 1e-6 | |
, Ua = Pa * Pa | |
, ja = Math.PI | |
, Fa = 2 * ja | |
, Ha = Fa - Pa | |
, Oa = ja / 2 | |
, Ia = ja / 180 | |
, Ya = 180 / ja | |
, Za = Math.SQRT2 | |
, Va = 2 | |
, Xa = 4; | |
oa.interpolateZoom = function(n, t) { | |
var e, r, u = n[0], i = n[1], a = n[2], o = t[0], l = t[1], c = t[2], s = o - u, f = l - i, h = s * s + f * f; | |
if (Ua > h) | |
r = Math.log(c / a) / Za, | |
e = function(n) { | |
return [u + n * s, i + n * f, a * Math.exp(Za * n * r)] | |
} | |
; | |
else { | |
var g = Math.sqrt(h) | |
, p = (c * c - a * a + Xa * h) / (2 * a * Va * g) | |
, v = (c * c - a * a - Xa * h) / (2 * c * Va * g) | |
, d = Math.log(Math.sqrt(p * p + 1) - p) | |
, m = Math.log(Math.sqrt(v * v + 1) - v); | |
r = (m - d) / Za, | |
e = function(n) { | |
var t = n * r | |
, e = rn(d) | |
, o = a / (Va * g) * (e * un(Za * t + d) - en(d)); | |
return [u + o * s, i + o * f, a * e / rn(Za * t + d)] | |
} | |
} | |
return e.duration = 1e3 * r, | |
e | |
} | |
, | |
oa.behavior.zoom = function() { | |
function n(n) { | |
n.on(L, f).on(Ba + ".zoom", g).on("dblclick.zoom", p).on(R, h) | |
} | |
function e(n) { | |
return [(n[0] - k.x) / k.k, (n[1] - k.y) / k.k] | |
} | |
function r(n) { | |
return [n[0] * k.k + k.x, n[1] * k.k + k.y] | |
} | |
function u(n) { | |
k.k = Math.max(A[0], Math.min(A[1], n)) | |
} | |
function i(n, t) { | |
t = r(t), | |
k.x += n[0] - t[0], | |
k.y += n[1] - t[1] | |
} | |
function a(t, e, r, a) { | |
t.__chart__ = { | |
x: k.x, | |
y: k.y, | |
k: k.k | |
}, | |
u(Math.pow(2, a)), | |
i(d = e, r), | |
t = oa.select(t), | |
C > 0 && (t = t.transition().duration(C)), | |
t.call(n.event) | |
} | |
function o() { | |
b && b.domain(x.range().map(function(n) { | |
return (n - k.x) / k.k | |
}).map(x.invert)), | |
w && w.domain(_.range().map(function(n) { | |
return (n - k.y) / k.k | |
}).map(_.invert)) | |
} | |
function l(n) { | |
z++ || n({ | |
type: "zoomstart" | |
}) | |
} | |
function c(n) { | |
o(), | |
n({ | |
type: "zoom", | |
scale: k.k, | |
translate: [k.x, k.y] | |
}) | |
} | |
function s(n) { | |
--z || (n({ | |
type: "zoomend" | |
}), | |
d = null ) | |
} | |
function f() { | |
function n() { | |
o = 1, | |
i(oa.mouse(u), h), | |
c(a) | |
} | |
function r() { | |
f.on(q, null ).on(T, null ), | |
g(o), | |
s(a) | |
} | |
var u = this | |
, a = D.of(u, arguments) | |
, o = 0 | |
, f = oa.select(t(u)).on(q, n).on(T, r) | |
, h = e(oa.mouse(u)) | |
, g = W(u); | |
Il.call(u), | |
l(a) | |
} | |
function h() { | |
function n() { | |
var n = oa.touches(p); | |
return g = k.k, | |
n.forEach(function(n) { | |
n.identifier in d && (d[n.identifier] = e(n)) | |
}), | |
n | |
} | |
function t() { | |
var t = oa.event.target; | |
oa.select(t).on(x, r).on(b, o), | |
_.push(t); | |
for (var e = oa.event.changedTouches, u = 0, i = e.length; i > u; ++u) | |
d[e[u].identifier] = null ; | |
var l = n() | |
, c = Date.now(); | |
if (1 === l.length) { | |
if (500 > c - M) { | |
var s = l[0]; | |
a(p, s, d[s.identifier], Math.floor(Math.log(k.k) / Math.LN2) + 1), | |
S() | |
} | |
M = c | |
} else if (l.length > 1) { | |
var s = l[0] | |
, f = l[1] | |
, h = s[0] - f[0] | |
, g = s[1] - f[1]; | |
m = h * h + g * g | |
} | |
} | |
function r() { | |
var n, t, e, r, a = oa.touches(p); | |
Il.call(p); | |
for (var o = 0, l = a.length; l > o; ++o, | |
r = null ) | |
if (e = a[o], | |
r = d[e.identifier]) { | |
if (t) | |
break; | |
n = e, | |
t = r | |
} | |
if (r) { | |
var s = (s = e[0] - n[0]) * s + (s = e[1] - n[1]) * s | |
, f = m && Math.sqrt(s / m); | |
n = [(n[0] + e[0]) / 2, (n[1] + e[1]) / 2], | |
t = [(t[0] + r[0]) / 2, (t[1] + r[1]) / 2], | |
u(f * g) | |
} | |
M = null , | |
i(n, t), | |
c(v) | |
} | |
function o() { | |
if (oa.event.touches.length) { | |
for (var t = oa.event.changedTouches, e = 0, r = t.length; r > e; ++e) | |
delete d[t[e].identifier]; | |
for (var u in d) | |
return void n() | |
} | |
oa.selectAll(_).on(y, null ), | |
w.on(L, f).on(R, h), | |
N(), | |
s(v) | |
} | |
var g, p = this, v = D.of(p, arguments), d = {}, m = 0, y = ".zoom-" + oa.event.changedTouches[0].identifier, x = "touchmove" + y, b = "touchend" + y, _ = [], w = oa.select(p), N = W(p); | |
t(), | |
l(v), | |
w.on(L, null ).on(R, t) | |
} | |
function g() { | |
var n = D.of(this, arguments); | |
y ? clearTimeout(y) : (Il.call(this), | |
v = e(d = m || oa.mouse(this)), | |
l(n)), | |
y = setTimeout(function() { | |
y = null , | |
s(n) | |
}, 50), | |
S(), | |
u(Math.pow(2, .002 * $a()) * k.k), | |
i(d, v), | |
c(n) | |
} | |
function p() { | |
var n = oa.mouse(this) | |
, t = Math.log(k.k) / Math.LN2; | |
a(this, n, e(n), oa.event.shiftKey ? Math.ceil(t) - 1 : Math.floor(t) + 1) | |
} | |
var v, d, m, y, M, x, b, _, w, k = { | |
x: 0, | |
y: 0, | |
k: 1 | |
}, E = [960, 500], A = Wa, C = 250, z = 0, L = "mousedown.zoom", q = "mousemove.zoom", T = "mouseup.zoom", R = "touchstart.zoom", D = N(n, "zoomstart", "zoom", "zoomend"); | |
return Ba || (Ba = "onwheel" in sa ? ($a = function() { | |
return -oa.event.deltaY * (oa.event.deltaMode ? 120 : 1) | |
} | |
, | |
"wheel") : "onmousewheel" in sa ? ($a = function() { | |
return oa.event.wheelDelta | |
} | |
, | |
"mousewheel") : ($a = function() { | |
return -oa.event.detail | |
} | |
, | |
"MozMousePixelScroll")), | |
n.event = function(n) { | |
n.each(function() { | |
var n = D.of(this, arguments) | |
, t = k; | |
Hl ? oa.select(this).transition().each("start.zoom", function() { | |
k = this.__chart__ || { | |
x: 0, | |
y: 0, | |
k: 1 | |
}, | |
l(n) | |
}).tween("zoom:zoom", function() { | |
var e = E[0] | |
, r = E[1] | |
, u = d ? d[0] : e / 2 | |
, i = d ? d[1] : r / 2 | |
, a = oa.interpolateZoom([(u - k.x) / k.k, (i - k.y) / k.k, e / k.k], [(u - t.x) / t.k, (i - t.y) / t.k, e / t.k]); | |
return function(t) { | |
var r = a(t) | |
, o = e / r[2]; | |
this.__chart__ = k = { | |
x: u - r[0] * o, | |
y: i - r[1] * o, | |
k: o | |
}, | |
c(n) | |
} | |
}).each("interrupt.zoom", function() { | |
s(n) | |
}).each("end.zoom", function() { | |
s(n) | |
}) : (this.__chart__ = k, | |
l(n), | |
c(n), | |
s(n)) | |
}) | |
} | |
, | |
n.translate = function(t) { | |
return arguments.length ? (k = { | |
x: +t[0], | |
y: +t[1], | |
k: k.k | |
}, | |
o(), | |
n) : [k.x, k.y] | |
} | |
, | |
n.scale = function(t) { | |
return arguments.length ? (k = { | |
x: k.x, | |
y: k.y, | |
k: null | |
}, | |
u(+t), | |
o(), | |
n) : k.k | |
} | |
, | |
n.scaleExtent = function(t) { | |
return arguments.length ? (A = null == t ? Wa : [+t[0], +t[1]], | |
n) : A | |
} | |
, | |
n.center = function(t) { | |
return arguments.length ? (m = t && [+t[0], +t[1]], | |
n) : m | |
} | |
, | |
n.size = function(t) { | |
return arguments.length ? (E = t && [+t[0], +t[1]], | |
n) : E | |
} | |
, | |
n.duration = function(t) { | |
return arguments.length ? (C = +t, | |
n) : C | |
} | |
, | |
n.x = function(t) { | |
return arguments.length ? (b = t, | |
x = t.copy(), | |
k = { | |
x: 0, | |
y: 0, | |
k: 1 | |
}, | |
n) : b | |
} | |
, | |
n.y = function(t) { | |
return arguments.length ? (w = t, | |
_ = t.copy(), | |
k = { | |
x: 0, | |
y: 0, | |
k: 1 | |
}, | |
n) : w | |
} | |
, | |
oa.rebind(n, D, "on") | |
} | |
; | |
var $a, Ba, Wa = [0, 1 / 0]; | |
oa.color = on, | |
on.prototype.toString = function() { | |
return this.rgb() + "" | |
} | |
, | |
oa.hsl = ln; | |
var Ja = ln.prototype = new on; | |
Ja.brighter = function(n) { | |
return n = Math.pow(.7, arguments.length ? n : 1), | |
new ln(this.h,this.s,this.l / n) | |
} | |
, | |
Ja.darker = function(n) { | |
return n = Math.pow(.7, arguments.length ? n : 1), | |
new ln(this.h,this.s,n * this.l) | |
} | |
, | |
Ja.rgb = function() { | |
return cn(this.h, this.s, this.l) | |
} | |
, | |
oa.hcl = sn; | |
var Ga = sn.prototype = new on; | |
Ga.brighter = function(n) { | |
return new sn(this.h,this.c,Math.min(100, this.l + Ka * (arguments.length ? n : 1))) | |
} | |
, | |
Ga.darker = function(n) { | |
return new sn(this.h,this.c,Math.max(0, this.l - Ka * (arguments.length ? n : 1))) | |
} | |
, | |
Ga.rgb = function() { | |
return fn(this.h, this.c, this.l).rgb() | |
} | |
, | |
oa.lab = hn; | |
var Ka = 18 | |
, Qa = .95047 | |
, no = 1 | |
, to = 1.08883 | |
, eo = hn.prototype = new on; | |
eo.brighter = function(n) { | |
return new hn(Math.min(100, this.l + Ka * (arguments.length ? n : 1)),this.a,this.b) | |
} | |
, | |
eo.darker = function(n) { | |
return new hn(Math.max(0, this.l - Ka * (arguments.length ? n : 1)),this.a,this.b) | |
} | |
, | |
eo.rgb = function() { | |
return gn(this.l, this.a, this.b) | |
} | |
, | |
oa.rgb = yn; | |
var ro = yn.prototype = new on; | |
ro.brighter = function(n) { | |
n = Math.pow(.7, arguments.length ? n : 1); | |
var t = this.r | |
, e = this.g | |
, r = this.b | |
, u = 30; | |
return t || e || r ? (t && u > t && (t = u), | |
e && u > e && (e = u), | |
r && u > r && (r = u), | |
new yn(Math.min(255, t / n),Math.min(255, e / n),Math.min(255, r / n))) : new yn(u,u,u) | |
} | |
, | |
ro.darker = function(n) { | |
return n = Math.pow(.7, arguments.length ? n : 1), | |
new yn(n * this.r,n * this.g,n * this.b) | |
} | |
, | |
ro.hsl = function() { | |
return wn(this.r, this.g, this.b) | |
} | |
, | |
ro.toString = function() { | |
return "#" + bn(this.r) + bn(this.g) + bn(this.b) | |
} | |
; | |
var uo = oa.map({ | |
aliceblue: 15792383, | |
antiquewhite: 16444375, | |
aqua: 65535, | |
aquamarine: 8388564, | |
azure: 15794175, | |
beige: 16119260, | |
bisque: 16770244, | |
black: 0, | |
blanchedalmond: 16772045, | |
blue: 255, | |
blueviolet: 9055202, | |
brown: 10824234, | |
burlywood: 14596231, | |
cadetblue: 6266528, | |
chartreuse: 8388352, | |
chocolate: 13789470, | |
coral: 16744272, | |
cornflowerblue: 6591981, | |
cornsilk: 16775388, | |
crimson: 14423100, | |
cyan: 65535, | |
darkblue: 139, | |
darkcyan: 35723, | |
darkgoldenrod: 12092939, | |
darkgray: 11119017, | |
darkgreen: 25600, | |
darkgrey: 11119017, | |
darkkhaki: 12433259, | |
darkmagenta: 9109643, | |
darkolivegreen: 5597999, | |
darkorange: 16747520, | |
darkorchid: 10040012, | |
darkred: 9109504, | |
darksalmon: 15308410, | |
darkseagreen: 9419919, | |
darkslateblue: 4734347, | |
darkslategray: 3100495, | |
darkslategrey: 3100495, | |
darkturquoise: 52945, | |
darkviolet: 9699539, | |
deeppink: 16716947, | |
deepskyblue: 49151, | |
dimgray: 6908265, | |
dimgrey: 6908265, | |
dodgerblue: 2003199, | |
firebrick: 11674146, | |
floralwhite: 16775920, | |
forestgreen: 2263842, | |
fuchsia: 16711935, | |
gainsboro: 14474460, | |
ghostwhite: 16316671, | |
gold: 16766720, | |
goldenrod: 14329120, | |
gray: 8421504, | |
green: 32768, | |
greenyellow: 11403055, | |
grey: 8421504, | |
honeydew: 15794160, | |
hotpink: 16738740, | |
indianred: 13458524, | |
indigo: 4915330, | |
ivory: 16777200, | |
khaki: 15787660, | |
lavender: 15132410, | |
lavenderblush: 16773365, | |
lawngreen: 8190976, | |
lemonchiffon: 16775885, | |
lightblue: 11393254, | |
lightcoral: 15761536, | |
lightcyan: 14745599, | |
lightgoldenrodyellow: 16448210, | |
lightgray: 13882323, | |
lightgreen: 9498256, | |
lightgrey: 13882323, | |
lightpink: 16758465, | |
lightsalmon: 16752762, | |
lightseagreen: 2142890, | |
lightskyblue: 8900346, | |
lightslategray: 7833753, | |
lightslategrey: 7833753, | |
lightsteelblue: 11584734, | |
lightyellow: 16777184, | |
lime: 65280, | |
limegreen: 3329330, | |
linen: 16445670, | |
magenta: 16711935, | |
maroon: 8388608, | |
mediumaquamarine: 6737322, | |
mediumblue: 205, | |
mediumorchid: 12211667, | |
mediumpurple: 9662683, | |
mediumseagreen: 3978097, | |
mediumslateblue: 8087790, | |
mediumspringgreen: 64154, | |
mediumturquoise: 4772300, | |
mediumvioletred: 13047173, | |
midnightblue: 1644912, | |
mintcream: 16121850, | |
mistyrose: 16770273, | |
moccasin: 16770229, | |
navajowhite: 16768685, | |
navy: 128, | |
oldlace: 16643558, | |
olive: 8421376, | |
olivedrab: 7048739, | |
orange: 16753920, | |
orangered: 16729344, | |
orchid: 14315734, | |
palegoldenrod: 15657130, | |
palegreen: 10025880, | |
paleturquoise: 11529966, | |
palevioletred: 14381203, | |
papayawhip: 16773077, | |
peachpuff: 16767673, | |
peru: 13468991, | |
pink: 16761035, | |
plum: 14524637, | |
powderblue: 11591910, | |
purple: 8388736, | |
rebeccapurple: 6697881, | |
red: 16711680, | |
rosybrown: 12357519, | |
royalblue: 4286945, | |
saddlebrown: 9127187, | |
salmon: 16416882, | |
sandybrown: 16032864, | |
seagreen: 3050327, | |
seashell: 16774638, | |
sienna: 10506797, | |
silver: 12632256, | |
skyblue: 8900331, | |
slateblue: 6970061, | |
slategray: 7372944, | |
slategrey: 7372944, | |
snow: 16775930, | |
springgreen: 65407, | |
steelblue: 4620980, | |
tan: 13808780, | |
teal: 32896, | |
thistle: 14204888, | |
tomato: 16737095, | |
turquoise: 4251856, | |
violet: 15631086, | |
wheat: 16113331, | |
white: 16777215, | |
whitesmoke: 16119285, | |
yellow: 16776960, | |
yellowgreen: 10145074 | |
}); | |
uo.forEach(function(n, t) { | |
uo.set(n, Mn(t)) | |
}), | |
oa.functor = En, | |
oa.xhr = An(y), | |
oa.dsv = function(n, t) { | |
function e(n, e, i) { | |
arguments.length < 3 && (i = e, | |
e = null ); | |
var a = Cn(n, t, null == e ? r : u(e), i); | |
return a.row = function(n) { | |
return arguments.length ? a.response(null == (e = n) ? r : u(n)) : e | |
} | |
, | |
a | |
} | |
function r(n) { | |
return e.parse(n.responseText) | |
} | |
function u(n) { | |
return function(t) { | |
return e.parse(t.responseText, n) | |
} | |
} | |
function i(t) { | |
return t.map(a).join(n) | |
} | |
function a(n) { | |
return o.test(n) ? '"' + n.replace(/\"/g, '""') + '"' : n | |
} | |
var o = new RegExp('["' + n + "\n]") | |
, l = n.charCodeAt(0); | |
return e.parse = function(n, t) { | |
var r; | |
return e.parseRows(n, function(n, e) { | |
if (r) | |
return r(n, e - 1); | |
var u = new Function("d","return {" + n.map(function(n, t) { | |
return JSON.stringify(n) + ": d[" + t + "]" | |
}).join(",") + "}"); | |
r = t ? function(n, e) { | |
return t(u(n), e) | |
} | |
: u | |
}) | |
} | |
, | |
e.parseRows = function(n, t) { | |
function e() { | |
if (s >= c) | |
return a; | |
if (u) | |
return u = !1, | |
i; | |
var t = s; | |
if (34 === n.charCodeAt(t)) { | |
for (var e = t; e++ < c; ) | |
if (34 === n.charCodeAt(e)) { | |
if (34 !== n.charCodeAt(e + 1)) | |
break; | |
++e | |
} | |
s = e + 2; | |
var r = n.charCodeAt(e + 1); | |
return 13 === r ? (u = !0, | |
10 === n.charCodeAt(e + 2) && ++s) : 10 === r && (u = !0), | |
n.slice(t + 1, e).replace(/""/g, '"') | |
} | |
for (; c > s; ) { | |
var r = n.charCodeAt(s++) | |
, o = 1; | |
if (10 === r) | |
u = !0; | |
else if (13 === r) | |
u = !0, | |
10 === n.charCodeAt(s) && (++s, | |
++o); | |
else if (r !== l) | |
continue;return n.slice(t, s - o) | |
} | |
return n.slice(t) | |
} | |
for (var r, u, i = {}, a = {}, o = [], c = n.length, s = 0, f = 0; (r = e()) !== a; ) { | |
for (var h = []; r !== i && r !== a; ) | |
h.push(r), | |
r = e(); | |
t && null == (h = t(h, f++)) || o.push(h) | |
} | |
return o | |
} | |
, | |
e.format = function(t) { | |
if (Array.isArray(t[0])) | |
return e.formatRows(t); | |
var r = new m | |
, u = []; | |
return t.forEach(function(n) { | |
for (var t in n) | |
r.has(t) || u.push(r.add(t)) | |
}), | |
[u.map(a).join(n)].concat(t.map(function(t) { | |
return u.map(function(n) { | |
return a(t[n]) | |
}).join(n) | |
})).join("\n") | |
} | |
, | |
e.formatRows = function(n) { | |
return n.map(i).join("\n") | |
} | |
, | |
e | |
} | |
, | |
oa.csv = oa.dsv(",", "text/csv"), | |
oa.tsv = oa.dsv(" ", "text/tab-separated-values"); | |
var io, ao, oo, lo, co = this[x(this, "requestAnimationFrame")] || function(n) { | |
setTimeout(n, 17) | |
} | |
; | |
oa.timer = function() { | |
qn.apply(this, arguments) | |
} | |
, | |
oa.timer.flush = function() { | |
Rn(), | |
Dn() | |
} | |
, | |
oa.round = function(n, t) { | |
return t ? Math.round(n * (t = Math.pow(10, t))) / t : Math.round(n) | |
} | |
; | |
var so = ["y", "z", "a", "f", "p", "n", "\xb5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"].map(Un); | |
oa.formatPrefix = function(n, t) { | |
var e = 0; | |
return (n = +n) && (0 > n && (n *= -1), | |
t && (n = oa.round(n, Pn(n, t))), | |
e = 1 + Math.floor(1e-12 + Math.log(n) / Math.LN10), | |
e = Math.max(-24, Math.min(24, 3 * Math.floor((e - 1) / 3)))), | |
so[8 + e / 3] | |
} | |
; | |
var fo = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i | |
, ho = oa.map({ | |
b: function(n) { | |
return n.toString(2) | |
}, | |
c: function(n) { | |
return String.fromCharCode(n) | |
}, | |
o: function(n) { | |
return n.toString(8) | |
}, | |
x: function(n) { | |
return n.toString(16) | |
}, | |
X: function(n) { | |
return n.toString(16).toUpperCase() | |
}, | |
g: function(n, t) { | |
return n.toPrecision(t) | |
}, | |
e: function(n, t) { | |
return n.toExponential(t) | |
}, | |
f: function(n, t) { | |
return n.toFixed(t) | |
}, | |
r: function(n, t) { | |
return (n = oa.round(n, Pn(n, t))).toFixed(Math.max(0, Math.min(20, Pn(n * (1 + 1e-15), t)))) | |
} | |
}) | |
, go = oa.time = {} | |
, po = Date; | |
Hn.prototype = { | |
getDate: function() { | |
return this._.getUTCDate() | |
}, | |
getDay: function() { | |
return this._.getUTCDay() | |
}, | |
getFullYear: function() { | |
return this._.getUTCFullYear() | |
}, | |
getHours: function() { | |
return this._.getUTCHours() | |
}, | |
getMilliseconds: function() { | |
return this._.getUTCMilliseconds() | |
}, | |
getMinutes: function() { | |
return this._.getUTCMinutes() | |
}, | |
getMonth: function() { | |
return this._.getUTCMonth() | |
}, | |
getSeconds: function() { | |
return this._.getUTCSeconds() | |
}, | |
getTime: function() { | |
return this._.getTime() | |
}, | |
getTimezoneOffset: function() { | |
return 0 | |
}, | |
valueOf: function() { | |
return this._.valueOf() | |
}, | |
setDate: function() { | |
vo.setUTCDate.apply(this._, arguments) | |
}, | |
setDay: function() { | |
vo.setUTCDay.apply(this._, arguments) | |
}, | |
setFullYear: function() { | |
vo.setUTCFullYear.apply(this._, arguments) | |
}, | |
setHours: function() { | |
vo.setUTCHours.apply(this._, arguments) | |
}, | |
setMilliseconds: function() { | |
vo.setUTCMilliseconds.apply(this._, arguments) | |
}, | |
setMinutes: function() { | |
vo.setUTCMinutes.apply(this._, arguments) | |
}, | |
setMonth: function() { | |
vo.setUTCMonth.apply(this._, arguments) | |
}, | |
setSeconds: function() { | |
vo.setUTCSeconds.apply(this._, arguments) | |
}, | |
setTime: function() { | |
vo.setTime.apply(this._, arguments) | |
} | |
}; | |
var vo = Date.prototype; | |
go.year = On(function(n) { | |
return n = go.day(n), | |
n.setMonth(0, 1), | |
n | |
}, function(n, t) { | |
n.setFullYear(n.getFullYear() + t) | |
}, function(n) { | |
return n.getFullYear() | |
}), | |
go.years = go.year.range, | |
go.years.utc = go.year.utc.range, | |
go.day = On(function(n) { | |
var t = new po(2e3,0); | |
return t.setFullYear(n.getFullYear(), n.getMonth(), n.getDate()), | |
t | |
}, function(n, t) { | |
n.setDate(n.getDate() + t) | |
}, function(n) { | |
return n.getDate() - 1 | |
}), | |
go.days = go.day.range, | |
go.days.utc = go.day.utc.range, | |
go.dayOfYear = function(n) { | |
var t = go.year(n); | |
return Math.floor((n - t - 6e4 * (n.getTimezoneOffset() - t.getTimezoneOffset())) / 864e5) | |
} | |
, | |
["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"].forEach(function(n, t) { | |
t = 7 - t; | |
var e = go[n] = On(function(n) { | |
return (n = go.day(n)).setDate(n.getDate() - (n.getDay() + t) % 7), | |
n | |
}, function(n, t) { | |
n.setDate(n.getDate() + 7 * Math.floor(t)) | |
}, function(n) { | |
var e = go.year(n).getDay(); | |
return Math.floor((go.dayOfYear(n) + (e + t) % 7) / 7) - (e !== t) | |
}); | |
go[n + "s"] = e.range, | |
go[n + "s"].utc = e.utc.range, | |
go[n + "OfYear"] = function(n) { | |
var e = go.year(n).getDay(); | |
return Math.floor((go.dayOfYear(n) + (e + t) % 7) / 7) | |
} | |
}), | |
go.week = go.sunday, | |
go.weeks = go.sunday.range, | |
go.weeks.utc = go.sunday.utc.range, | |
go.weekOfYear = go.sundayOfYear; | |
var mo = { | |
"-": "", | |
_: " ", | |
0: "0" | |
} | |
, yo = /^\s*\d+/ | |
, Mo = /^%/; | |
oa.locale = function(n) { | |
return { | |
numberFormat: jn(n), | |
timeFormat: Yn(n) | |
} | |
} | |
; | |
var xo = oa.locale({ | |
decimal: ".", | |
thousands: ",", | |
grouping: [3], | |
currency: ["$", ""], | |
dateTime: "%a %b %e %X %Y", | |
date: "%m/%d/%Y", | |
time: "%H:%M:%S", | |
periods: ["AM", "PM"], | |
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], | |
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], | |
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], | |
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] | |
}); | |
oa.format = xo.numberFormat, | |
oa.geo = {}, | |
st.prototype = { | |
s: 0, | |
t: 0, | |
add: function(n) { | |
ft(n, this.t, bo), | |
ft(bo.s, this.s, this), | |
this.s ? this.t += bo.t : this.s = bo.t | |
}, | |
reset: function() { | |
this.s = this.t = 0 | |
}, | |
valueOf: function() { | |
return this.s | |
} | |
}; | |
var bo = new st; | |
oa.geo.stream = function(n, t) { | |
n && _o.hasOwnProperty(n.type) ? _o[n.type](n, t) : ht(n, t) | |
} | |
; | |
var _o = { | |
Feature: function(n, t) { | |
ht(n.geometry, t) | |
}, | |
FeatureCollection: function(n, t) { | |
for (var e = n.features, r = -1, u = e.length; ++r < u; ) | |
ht(e[r].geometry, t) | |
} | |
} | |
, wo = { | |
Sphere: function(n, t) { | |
t.sphere() | |
}, | |
Point: function(n, t) { | |
n = n.coordinates, | |
t.point(n[0], n[1], n[2]) | |
}, | |
MultiPoint: function(n, t) { | |
for (var e = n.coordinates, r = -1, u = e.length; ++r < u; ) | |
n = e[r], | |
t.point(n[0], n[1], n[2]) | |
}, | |
LineString: function(n, t) { | |
gt(n.coordinates, t, 0) | |
}, | |
MultiLineString: function(n, t) { | |
for (var e = n.coordinates, r = -1, u = e.length; ++r < u; ) | |
gt(e[r], t, 0) | |
}, | |
Polygon: function(n, t) { | |
pt(n.coordinates, t) | |
}, | |
MultiPolygon: function(n, t) { | |
for (var e = n.coordinates, r = -1, u = e.length; ++r < u; ) | |
pt(e[r], t) | |
}, | |
GeometryCollection: function(n, t) { | |
for (var e = n.geometries, r = -1, u = e.length; ++r < u; ) | |
ht(e[r], t) | |
} | |
}; | |
oa.geo.area = function(n) { | |
return So = 0, | |
oa.geo.stream(n, No), | |
So | |
} | |
; | |
var So, ko = new st, No = { | |
sphere: function() { | |
So += 4 * ja | |
}, | |
point: b, | |
lineStart: b, | |
lineEnd: b, | |
polygonStart: function() { | |
ko.reset(), | |
No.lineStart = vt | |
}, | |
polygonEnd: function() { | |
var n = 2 * ko; | |
So += 0 > n ? 4 * ja + n : n, | |
No.lineStart = No.lineEnd = No.point = b | |
} | |
}; | |
oa.geo.bounds = function() { | |
function n(n, t) { | |
M.push(x = [s = n, h = n]), | |
f > t && (f = t), | |
t > g && (g = t) | |
} | |
function t(t, e) { | |
var r = dt([t * Ia, e * Ia]); | |
if (m) { | |
var u = yt(m, r) | |
, i = [u[1], -u[0], 0] | |
, a = yt(i, u); | |
bt(a), | |
a = _t(a); | |
var l = t - p | |
, c = l > 0 ? 1 : -1 | |
, v = a[0] * Ya * c | |
, d = Ma(l) > 180; | |
if (d ^ (v > c * p && c * t > v)) { | |
var y = a[1] * Ya; | |
y > g && (g = y) | |
} else if (v = (v + 360) % 360 - 180, | |
d ^ (v > c * p && c * t > v)) { | |
var y = -a[1] * Ya; | |
f > y && (f = y) | |
} else | |
f > e && (f = e), | |
e > g && (g = e); | |
d ? p > t ? o(s, t) > o(s, h) && (h = t) : o(t, h) > o(s, h) && (s = t) : h >= s ? (s > t && (s = t), | |
t > h && (h = t)) : t > p ? o(s, t) > o(s, h) && (h = t) : o(t, h) > o(s, h) && (s = t) | |
} else | |
n(t, e); | |
m = r, | |
p = t | |
} | |
function e() { | |
b.point = t | |
} | |
function r() { | |
x[0] = s, | |
x[1] = h, | |
b.point = n, | |
m = null | |
} | |
function u(n, e) { | |
if (m) { | |
var r = n - p; | |
y += Ma(r) > 180 ? r + (r > 0 ? 360 : -360) : r | |
} else | |
v = n, | |
d = e; | |
No.point(n, e), | |
t(n, e) | |
} | |
function i() { | |
No.lineStart() | |
} | |
function a() { | |
u(v, d), | |
No.lineEnd(), | |
Ma(y) > Pa && (s = -(h = 180)), | |
x[0] = s, | |
x[1] = h, | |
m = null | |
} | |
function o(n, t) { | |
return (t -= n) < 0 ? t + 360 : t | |
} | |
function l(n, t) { | |
return n[0] - t[0] | |
} | |
function c(n, t) { | |
return t[0] <= t[1] ? t[0] <= n && n <= t[1] : n < t[0] || t[1] < n | |
} | |
var s, f, h, g, p, v, d, m, y, M, x, b = { | |
point: n, | |
lineStart: e, | |
lineEnd: r, | |
polygonStart: function() { | |
b.point = u, | |
b.lineStart = i, | |
b.lineEnd = a, | |
y = 0, | |
No.polygonStart() | |
}, | |
polygonEnd: function() { | |
No.polygonEnd(), | |
b.point = n, | |
b.lineStart = e, | |
b.lineEnd = r, | |
0 > ko ? (s = -(h = 180), | |
f = -(g = 90)) : y > Pa ? g = 90 : -Pa > y && (f = -90), | |
x[0] = s, | |
x[1] = h | |
} | |
}; | |
return function(n) { | |
g = h = -(s = f = 1 / 0), | |
M = [], | |
oa.geo.stream(n, b); | |
var t = M.length; | |
if (t) { | |
M.sort(l); | |
for (var e, r = 1, u = M[0], i = [u]; t > r; ++r) | |
e = M[r], | |
c(e[0], u) || c(e[1], u) ? (o(u[0], e[1]) > o(u[0], u[1]) && (u[1] = e[1]), | |
o(e[0], u[1]) > o(u[0], u[1]) && (u[0] = e[0])) : i.push(u = e); | |
for (var a, e, p = -(1 / 0), t = i.length - 1, r = 0, u = i[t]; t >= r; u = e, | |
++r) | |
e = i[r], | |
(a = o(u[1], e[0])) > p && (p = a, | |
s = e[0], | |
h = u[1]) | |
} | |
return M = x = null , | |
s === 1 / 0 || f === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[s, f], [h, g]] | |
} | |
}(), | |
oa.geo.centroid = function(n) { | |
Eo = Ao = Co = zo = Lo = qo = To = Ro = Do = Po = Uo = 0, | |
oa.geo.stream(n, jo); | |
var t = Do | |
, e = Po | |
, r = Uo | |
, u = t * t + e * e + r * r; | |
return Ua > u && (t = qo, | |
e = To, | |
r = Ro, | |
Pa > Ao && (t = Co, | |
e = zo, | |
r = Lo), | |
u = t * t + e * e + r * r, | |
Ua > u) ? [NaN, NaN] : [Math.atan2(e, t) * Ya, tn(r / Math.sqrt(u)) * Ya] | |
} | |
; | |
var Eo, Ao, Co, zo, Lo, qo, To, Ro, Do, Po, Uo, jo = { | |
sphere: b, | |
point: St, | |
lineStart: Nt, | |
lineEnd: Et, | |
polygonStart: function() { | |
jo.lineStart = At | |
}, | |
polygonEnd: function() { | |
jo.lineStart = Nt | |
} | |
}, Fo = Rt(zt, jt, Ht, [-ja, -ja / 2]), Ho = 1e9; | |
oa.geo.clipExtent = function() { | |
var n, t, e, r, u, i, a = { | |
stream: function(n) { | |
return u && (u.valid = !1), | |
u = i(n), | |
u.valid = !0, | |
u | |
}, | |
extent: function(o) { | |
return arguments.length ? (i = Zt(n = +o[0][0], t = +o[0][1], e = +o[1][0], r = +o[1][1]), | |
u && (u.valid = !1, | |
u = null ), | |
a) : [[n, t], [e, r]] | |
} | |
}; | |
return a.extent([[0, 0], [960, 500]]) | |
} | |
, | |
(oa.geo.conicEqualArea = function() { | |
return Vt(Xt) | |
} | |
).raw = Xt, | |
oa.geo.albers = function() { | |
return oa.geo.conicEqualArea().rotate([96, 0]).center([-.6, 38.7]).parallels([29.5, 45.5]).scale(1070) | |
} | |
, | |
oa.geo.albersUsa = function() { | |
function n(n) { | |
var i = n[0] | |
, a = n[1]; | |
return t = null , | |
e(i, a), | |
t || (r(i, a), | |
t) || u(i, a), | |
t | |
} | |
var t, e, r, u, i = oa.geo.albers(), a = oa.geo.conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), o = oa.geo.conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), l = { | |
point: function(n, e) { | |
t = [n, e] | |
} | |
}; | |
return n.invert = function(n) { | |
var t = i.scale() | |
, e = i.translate() | |
, r = (n[0] - e[0]) / t | |
, u = (n[1] - e[1]) / t; | |
return (u >= .12 && .234 > u && r >= -.425 && -.214 > r ? a : u >= .166 && .234 > u && r >= -.214 && -.115 > r ? o : i).invert(n) | |
} | |
, | |
n.stream = function(n) { | |
var t = i.stream(n) | |
, e = a.stream(n) | |
, r = o.stream(n); | |
return { | |
point: function(n, u) { | |
t.point(n, u), | |
e.point(n, u), | |
r.point(n, u) | |
}, | |
sphere: function() { | |
t.sphere(), | |
e.sphere(), | |
r.sphere() | |
}, | |
lineStart: function() { | |
t.lineStart(), | |
e.lineStart(), | |
r.lineStart() | |
}, | |
lineEnd: function() { | |
t.lineEnd(), | |
e.lineEnd(), | |
r.lineEnd() | |
}, | |
polygonStart: function() { | |
t.polygonStart(), | |
e.polygonStart(), | |
r.polygonStart() | |
}, | |
polygonEnd: function() { | |
t.polygonEnd(), | |
e.polygonEnd(), | |
r.polygonEnd() | |
} | |
} | |
} | |
, | |
n.precision = function(t) { | |
return arguments.length ? (i.precision(t), | |
a.precision(t), | |
o.precision(t), | |
n) : i.precision() | |
} | |
, | |
n.scale = function(t) { | |
return arguments.length ? (i.scale(t), | |
a.scale(.35 * t), | |
o.scale(t), | |
n.translate(i.translate())) : i.scale() | |
} | |
, | |
n.translate = function(t) { | |
if (!arguments.length) | |
return i.translate(); | |
var c = i.scale() | |
, s = +t[0] | |
, f = +t[1]; | |
return e = i.translate(t).clipExtent([[s - .455 * c, f - .238 * c], [s + .455 * c, f + .238 * c]]).stream(l).point, | |
r = a.translate([s - .307 * c, f + .201 * c]).clipExtent([[s - .425 * c + Pa, f + .12 * c + Pa], [s - .214 * c - Pa, f + .234 * c - Pa]]).stream(l).point, | |
u = o.translate([s - .205 * c, f + .212 * c]).clipExtent([[s - .214 * c + Pa, f + .166 * c + Pa], [s - .115 * c - Pa, f + .234 * c - Pa]]).stream(l).point, | |
n | |
} | |
, | |
n.scale(1070) | |
} | |
; | |
var Oo, Io, Yo, Zo, Vo, Xo, $o = { | |
point: b, | |
lineStart: b, | |
lineEnd: b, | |
polygonStart: function() { | |
Io = 0, | |
$o.lineStart = $t | |
}, | |
polygonEnd: function() { | |
$o.lineStart = $o.lineEnd = $o.point = b, | |
Oo += Ma(Io / 2) | |
} | |
}, Bo = { | |
point: Bt, | |
lineStart: b, | |
lineEnd: b, | |
polygonStart: b, | |
polygonEnd: b | |
}, Wo = { | |
point: Gt, | |
lineStart: Kt, | |
lineEnd: Qt, | |
polygonStart: function() { | |
Wo.lineStart = ne | |
}, | |
polygonEnd: function() { | |
Wo.point = Gt, | |
Wo.lineStart = Kt, | |
Wo.lineEnd = Qt | |
} | |
}; | |
oa.geo.path = function() { | |
function n(n) { | |
return n && ("function" == typeof o && i.pointRadius(+o.apply(this, arguments)), | |
a && a.valid || (a = u(i)), | |
oa.geo.stream(n, a)), | |
i.result() | |
} | |
function t() { | |
return a = null , | |
n | |
} | |
var e, r, u, i, a, o = 4.5; | |
return n.area = function(n) { | |
return Oo = 0, | |
oa.geo.stream(n, u($o)), | |
Oo | |
} | |
, | |
n.centroid = function(n) { | |
return Co = zo = Lo = qo = To = Ro = Do = Po = Uo = 0, | |
oa.geo.stream(n, u(Wo)), | |
Uo ? [Do / Uo, Po / Uo] : Ro ? [qo / Ro, To / Ro] : Lo ? [Co / Lo, zo / Lo] : [NaN, NaN] | |
} | |
, | |
n.bounds = function(n) { | |
return Vo = Xo = -(Yo = Zo = 1 / 0), | |
oa.geo.stream(n, u(Bo)), | |
[[Yo, Zo], [Vo, Xo]] | |
} | |
, | |
n.projection = function(n) { | |
return arguments.length ? (u = (e = n) ? n.stream || re(n) : y, | |
t()) : e | |
} | |
, | |
n.context = function(n) { | |
return arguments.length ? (i = null == (r = n) ? new Wt : new te(n), | |
"function" != typeof o && i.pointRadius(o), | |
t()) : r | |
} | |
, | |
n.pointRadius = function(t) { | |
return arguments.length ? (o = "function" == typeof t ? t : (i.pointRadius(+t), | |
+t), | |
n) : o | |
} | |
, | |
n.projection(oa.geo.albersUsa()).context(null ) | |
} | |
, | |
oa.geo.transform = function(n) { | |
return { | |
stream: function(t) { | |
var e = new ue(t); | |
for (var r in n) | |
e[r] = n[r]; | |
return e | |
} | |
} | |
} | |
, | |
ue.prototype = { | |
point: function(n, t) { | |
this.stream.point(n, t) | |
}, | |
sphere: function() { | |
this.stream.sphere() | |
}, | |
lineStart: function() { | |
this.stream.lineStart() | |
}, | |
lineEnd: function() { | |
this.stream.lineEnd() | |
}, | |
polygonStart: function() { | |
this.stream.polygonStart() | |
}, | |
polygonEnd: function() { | |
this.stream.polygonEnd() | |
} | |
}, | |
oa.geo.projection = ae, | |
oa.geo.projectionMutator = oe, | |
(oa.geo.equirectangular = function() { | |
return ae(ce) | |
} | |
).raw = ce.invert = ce, | |
oa.geo.rotation = function(n) { | |
function t(t) { | |
return t = n(t[0] * Ia, t[1] * Ia), | |
t[0] *= Ya, | |
t[1] *= Ya, | |
t | |
} | |
return n = fe(n[0] % 360 * Ia, n[1] * Ia, n.length > 2 ? n[2] * Ia : 0), | |
t.invert = function(t) { | |
return t = n.invert(t[0] * Ia, t[1] * Ia), | |
t[0] *= Ya, | |
t[1] *= Ya, | |
t | |
} | |
, | |
t | |
} | |
, | |
se.invert = ce, | |
oa.geo.circle = function() { | |
function n() { | |
var n = "function" == typeof r ? r.apply(this, arguments) : r | |
, t = fe(-n[0] * Ia, -n[1] * Ia, 0).invert | |
, u = []; | |
return e(null , null , 1, { | |
point: function(n, e) { | |
u.push(n = t(n, e)), | |
n[0] *= Ya, | |
n[1] *= Ya | |
} | |
}), | |
{ | |
type: "Polygon", | |
coordinates: [u] | |
} | |
} | |
var t, e, r = [0, 0], u = 6; | |
return n.origin = function(t) { | |
return arguments.length ? (r = t, | |
n) : r | |
} | |
, | |
n.angle = function(r) { | |
return arguments.length ? (e = ve((t = +r) * Ia, u * Ia), | |
n) : t | |
} | |
, | |
n.precision = function(r) { | |
return arguments.length ? (e = ve(t * Ia, (u = +r) * Ia), | |
n) : u | |
} | |
, | |
n.angle(90) | |
} | |
, | |
oa.geo.distance = function(n, t) { | |
var e, r = (t[0] - n[0]) * Ia, u = n[1] * Ia, i = t[1] * Ia, a = Math.sin(r), o = Math.cos(r), l = Math.sin(u), c = Math.cos(u), s = Math.sin(i), f = Math.cos(i); | |
return Math.atan2(Math.sqrt((e = f * a) * e + (e = c * s - l * f * o) * e), l * s + c * f * o) | |
} | |
, | |
oa.geo.graticule = function() { | |
function n() { | |
return { | |
type: "MultiLineString", | |
coordinates: t() | |
} | |
} | |
function t() { | |
return oa.range(Math.ceil(i / d) * d, u, d).map(h).concat(oa.range(Math.ceil(c / m) * m, l, m).map(g)).concat(oa.range(Math.ceil(r / p) * p, e, p).filter(function(n) { | |
return Ma(n % d) > Pa | |
}).map(s)).concat(oa.range(Math.ceil(o / v) * v, a, v).filter(function(n) { | |
return Ma(n % m) > Pa | |
}).map(f)) | |
} | |
var e, r, u, i, a, o, l, c, s, f, h, g, p = 10, v = p, d = 90, m = 360, y = 2.5; | |
return n.lines = function() { | |
return t().map(function(n) { | |
return { | |
type: "LineString", | |
coordinates: n | |
} | |
}) | |
} | |
, | |
n.outline = function() { | |
return { | |
type: "Polygon", | |
coordinates: [h(i).concat(g(l).slice(1), h(u).reverse().slice(1), g(c).reverse().slice(1))] | |
} | |
} | |
, | |
n.extent = function(t) { | |
return arguments.length ? n.majorExtent(t).minorExtent(t) : n.minorExtent() | |
} | |
, | |
n.majorExtent = function(t) { | |
return arguments.length ? (i = +t[0][0], | |
u = +t[1][0], | |
c = +t[0][1], | |
l = +t[1][1], | |
i > u && (t = i, | |
i = u, | |
u = t), | |
c > l && (t = c, | |
c = l, | |
l = t), | |
n.precision(y)) : [[i, c], [u, l]] | |
} | |
, | |
n.minorExtent = function(t) { | |
return arguments.length ? (r = +t[0][0], | |
e = +t[1][0], | |
o = +t[0][1], | |
a = +t[1][1], | |
r > e && (t = r, | |
r = e, | |
e = t), | |
o > a && (t = o, | |
o = a, | |
a = t), | |
n.precision(y)) : [[r, o], [e, a]] | |
} | |
, | |
n.step = function(t) { | |
return arguments.length ? n.majorStep(t).minorStep(t) : n.minorStep() | |
} | |
, | |
n.majorStep = function(t) { | |
return arguments.length ? (d = +t[0], | |
m = +t[1], | |
n) : [d, m] | |
} | |
, | |
n.minorStep = function(t) { | |
return arguments.length ? (p = +t[0], | |
v = +t[1], | |
n) : [p, v] | |
} | |
, | |
n.precision = function(t) { | |
return arguments.length ? (y = +t, | |
s = me(o, a, 90), | |
f = ye(r, e, y), | |
h = me(c, l, 90), | |
g = ye(i, u, y), | |
n) : y | |
} | |
, | |
n.majorExtent([[-180, -90 + Pa], [180, 90 - Pa]]).minorExtent([[-180, -80 - Pa], [180, 80 + Pa]]) | |
} | |
, | |
oa.geo.greatArc = function() { | |
function n() { | |
return { | |
type: "LineString", | |
coordinates: [t || r.apply(this, arguments), e || u.apply(this, arguments)] | |
} | |
} | |
var t, e, r = Me, u = xe; | |
return n.distance = function() { | |
return oa.geo.distance(t || r.apply(this, arguments), e || u.apply(this, arguments)) | |
} | |
, | |
n.source = function(e) { | |
return arguments.length ? (r = e, | |
t = "function" == typeof e ? null : e, | |
n) : r | |
} | |
, | |
n.target = function(t) { | |
return arguments.length ? (u = t, | |
e = "function" == typeof t ? null : t, | |
n) : u | |
} | |
, | |
n.precision = function() { | |
return arguments.length ? n : 0 | |
} | |
, | |
n | |
} | |
, | |
oa.geo.interpolate = function(n, t) { | |
return be(n[0] * Ia, n[1] * Ia, t[0] * Ia, t[1] * Ia) | |
} | |
, | |
oa.geo.length = function(n) { | |
return Jo = 0, | |
oa.geo.stream(n, Go), | |
Jo | |
} | |
; | |
var Jo, Go = { | |
sphere: b, | |
point: b, | |
lineStart: _e, | |
lineEnd: b, | |
polygonStart: b, | |
polygonEnd: b | |
}, Ko = we(function(n) { | |
return Math.sqrt(2 / (1 + n)) | |
}, function(n) { | |
return 2 * Math.asin(n / 2) | |
}); | |
(oa.geo.azimuthalEqualArea = function() { | |
return ae(Ko) | |
} | |
).raw = Ko; | |
var Qo = we(function(n) { | |
var t = Math.acos(n); | |
return t && t / Math.sin(t) | |
}, y); | |
(oa.geo.azimuthalEquidistant = function() { | |
return ae(Qo) | |
} | |
).raw = Qo, | |
(oa.geo.conicConformal = function() { | |
return Vt(Se) | |
} | |
).raw = Se, | |
(oa.geo.conicEquidistant = function() { | |
return Vt(ke) | |
} | |
).raw = ke; | |
var nl = we(function(n) { | |
return 1 / n | |
}, Math.atan); | |
(oa.geo.gnomonic = function() { | |
return ae(nl) | |
} | |
).raw = nl, | |
Ne.invert = function(n, t) { | |
return [n, 2 * Math.atan(Math.exp(t)) - Oa] | |
} | |
, | |
(oa.geo.mercator = function() { | |
return Ee(Ne) | |
} | |
).raw = Ne; | |
var tl = we(function() { | |
return 1 | |
}, Math.asin); | |
(oa.geo.orthographic = function() { | |
return ae(tl) | |
} | |
).raw = tl; | |
var el = we(function(n) { | |
return 1 / (1 + n) | |
}, function(n) { | |
return 2 * Math.atan(n) | |
}); | |
(oa.geo.stereographic = function() { | |
return ae(el) | |
} | |
).raw = el, | |
Ae.invert = function(n, t) { | |
return [-t, 2 * Math.atan(Math.exp(n)) - Oa] | |
} | |
, | |
(oa.geo.transverseMercator = function() { | |
var n = Ee(Ae) | |
, t = n.center | |
, e = n.rotate; | |
return n.center = function(n) { | |
return n ? t([-n[1], n[0]]) : (n = t(), | |
[n[1], -n[0]]) | |
} | |
, | |
n.rotate = function(n) { | |
return n ? e([n[0], n[1], n.length > 2 ? n[2] + 90 : 90]) : (n = e(), | |
[n[0], n[1], n[2] - 90]) | |
} | |
, | |
e([0, 0, 90]) | |
} | |
).raw = Ae, | |
oa.geom = {}, | |
oa.geom.hull = function(n) { | |
function t(n) { | |
if (n.length < 3) | |
return []; | |
var t, u = En(e), i = En(r), a = n.length, o = [], l = []; | |
for (t = 0; a > t; t++) | |
o.push([+u.call(this, n[t], t), +i.call(this, n[t], t), t]); | |
for (o.sort(qe), | |
t = 0; a > t; t++) | |
l.push([o[t][0], -o[t][1]]); | |
var c = Le(o) | |
, s = Le(l) | |
, f = s[0] === c[0] | |
, h = s[s.length - 1] === c[c.length - 1] | |
, g = []; | |
for (t = c.length - 1; t >= 0; --t) | |
g.push(n[o[c[t]][2]]); | |
for (t = +f; t < s.length - h; ++t) | |
g.push(n[o[s[t]][2]]); | |
return g | |
} | |
var e = Ce | |
, r = ze; | |
return arguments.length ? t(n) : (t.x = function(n) { | |
return arguments.length ? (e = n, | |
t) : e | |
} | |
, | |
t.y = function(n) { | |
return arguments.length ? (r = n, | |
t) : r | |
} | |
, | |
t) | |
} | |
, | |
oa.geom.polygon = function(n) { | |
return Sa(n, rl), | |
n | |
} | |
; | |
var rl = oa.geom.polygon.prototype = []; | |
rl.area = function() { | |
for (var n, t = -1, e = this.length, r = this[e - 1], u = 0; ++t < e; ) | |
n = r, | |
r = this[t], | |
u += n[1] * r[0] - n[0] * r[1]; | |
return .5 * u | |
} | |
, | |
rl.centroid = function(n) { | |
var t, e, r = -1, u = this.length, i = 0, a = 0, o = this[u - 1]; | |
for (arguments.length || (n = -1 / (6 * this.area())); ++r < u; ) | |
t = o, | |
o = this[r], | |
e = t[0] * o[1] - o[0] * t[1], | |
i += (t[0] + o[0]) * e, | |
a += (t[1] + o[1]) * e; | |
return [i * n, a * n] | |
} | |
, | |
rl.clip = function(n) { | |
for (var t, e, r, u, i, a, o = De(n), l = -1, c = this.length - De(this), s = this[c - 1]; ++l < c; ) { | |
for (t = n.slice(), | |
n.length = 0, | |
u = this[l], | |
i = t[(r = t.length - o) - 1], | |
e = -1; ++e < r; ) | |
a = t[e], | |
Te(a, s, u) ? (Te(i, s, u) || n.push(Re(i, a, s, u)), | |
n.push(a)) : Te(i, s, u) && n.push(Re(i, a, s, u)), | |
i = a; | |
o && n.push(n[0]), | |
s = u | |
} | |
return n | |
} | |
; | |
var ul, il, al, ol, ll, cl = [], sl = []; | |
Ye.prototype.prepare = function() { | |
for (var n, t = this.edges, e = t.length; e--; ) | |
n = t[e].edge, | |
n.b && n.a || t.splice(e, 1); | |
return t.sort(Ve), | |
t.length | |
} | |
, | |
tr.prototype = { | |
start: function() { | |
return this.edge.l === this.site ? this.edge.a : this.edge.b | |
}, | |
end: function() { | |
return this.edge.l === this.site ? this.edge.b : this.edge.a | |
} | |
}, | |
er.prototype = { | |
insert: function(n, t) { | |
var e, r, u; | |
if (n) { | |
if (t.P = n, | |
t.N = n.N, | |
n.N && (n.N.P = t), | |
n.N = t, | |
n.R) { | |
for (n = n.R; n.L; ) | |
n = n.L; | |
n.L = t | |
} else | |
n.R = t; | |
e = n | |
} else | |
this._ ? (n = ar(this._), | |
t.P = null , | |
t.N = n, | |
n.P = n.L = t, | |
e = n) : (t.P = t.N = null , | |
this._ = t, | |
e = null ); | |
for (t.L = t.R = null , | |
t.U = e, | |
t.C = !0, | |
n = t; e && e.C; ) | |
r = e.U, | |
e === r.L ? (u = r.R, | |
u && u.C ? (e.C = u.C = !1, | |
r.C = !0, | |
n = r) : (n === e.R && (ur(this, e), | |
n = e, | |
e = n.U), | |
e.C = !1, | |
r.C = !0, | |
ir(this, r))) : (u = r.L, | |
u && u.C ? (e.C = u.C = !1, | |
r.C = !0, | |
n = r) : (n === e.L && (ir(this, e), | |
n = e, | |
e = n.U), | |
e.C = !1, | |
r.C = !0, | |
ur(this, r))), | |
e = n.U; | |
this._.C = !1 | |
}, | |
remove: function(n) { | |
n.N && (n.N.P = n.P), | |
n.P && (n.P.N = n.N), | |
n.N = n.P = null ; | |
var t, e, r, u = n.U, i = n.L, a = n.R; | |
if (e = i ? a ? ar(a) : i : a, | |
u ? u.L === n ? u.L = e : u.R = e : this._ = e, | |
i && a ? (r = e.C, | |
e.C = n.C, | |
e.L = i, | |
i.U = e, | |
e !== a ? (u = e.U, | |
e.U = n.U, | |
n = e.R, | |
u.L = n, | |
e.R = a, | |
a.U = e) : (e.U = u, | |
u = e, | |
n = e.R)) : (r = n.C, | |
n = e), | |
n && (n.U = u), | |
!r) { | |
if (n && n.C) | |
return void (n.C = !1); | |
do { | |
if (n === this._) | |
break; | |
if (n === u.L) { | |
if (t = u.R, | |
t.C && (t.C = !1, | |
u.C = !0, | |
ur(this, u), | |
t = u.R), | |
t.L && t.L.C || t.R && t.R.C) { | |
t.R && t.R.C || (t.L.C = !1, | |
t.C = !0, | |
ir(this, t), | |
t = u.R), | |
t.C = u.C, | |
u.C = t.R.C = !1, | |
ur(this, u), | |
n = this._; | |
break | |
} | |
} else if (t = u.L, | |
t.C && (t.C = !1, | |
u.C = !0, | |
ir(this, u), | |
t = u.L), | |
t.L && t.L.C || t.R && t.R.C) { | |
t.L && t.L.C || (t.R.C = !1, | |
t.C = !0, | |
ur(this, t), | |
t = u.L), | |
t.C = u.C, | |
u.C = t.L.C = !1, | |
ir(this, u), | |
n = this._; | |
break | |
} | |
t.C = !0, | |
n = u, | |
u = u.U | |
} while (!n.C);n && (n.C = !1) | |
} | |
} | |
}, | |
oa.geom.voronoi = function(n) { | |
function t(n) { | |
var t = new Array(n.length) | |
, r = o[0][0] | |
, u = o[0][1] | |
, i = o[1][0] | |
, a = o[1][1]; | |
return or(e(n), o).cells.forEach(function(e, o) { | |
var l = e.edges | |
, c = e.site | |
, s = t[o] = l.length ? l.map(function(n) { | |
var t = n.start(); | |
return [t.x, t.y] | |
}) : c.x >= r && c.x <= i && c.y >= u && c.y <= a ? [[r, a], [i, a], [i, u], [r, u]] : []; | |
s.point = n[o] | |
}), | |
t | |
} | |
function e(n) { | |
return n.map(function(n, t) { | |
return { | |
x: Math.round(i(n, t) / Pa) * Pa, | |
y: Math.round(a(n, t) / Pa) * Pa, | |
i: t | |
} | |
}) | |
} | |
var r = Ce | |
, u = ze | |
, i = r | |
, a = u | |
, o = fl; | |
return n ? t(n) : (t.links = function(n) { | |
return or(e(n)).edges.filter(function(n) { | |
return n.l && n.r | |
}).map(function(t) { | |
return { | |
source: n[t.l.i], | |
target: n[t.r.i] | |
} | |
}) | |
} | |
, | |
t.triangles = function(n) { | |
var t = []; | |
return or(e(n)).cells.forEach(function(e, r) { | |
for (var u, i, a = e.site, o = e.edges.sort(Ve), l = -1, c = o.length, s = o[c - 1].edge, f = s.l === a ? s.r : s.l; ++l < c; ) | |
u = s, | |
i = f, | |
s = o[l].edge, | |
f = s.l === a ? s.r : s.l, | |
r < i.i && r < f.i && cr(a, i, f) < 0 && t.push([n[r], n[i.i], n[f.i]]) | |
}), | |
t | |
} | |
, | |
t.x = function(n) { | |
return arguments.length ? (i = En(r = n), | |
t) : r | |
} | |
, | |
t.y = function(n) { | |
return arguments.length ? (a = En(u = n), | |
t) : u | |
} | |
, | |
t.clipExtent = function(n) { | |
return arguments.length ? (o = null == n ? fl : n, | |
t) : o === fl ? null : o | |
} | |
, | |
t.size = function(n) { | |
return arguments.length ? t.clipExtent(n && [[0, 0], n]) : o === fl ? null : o && o[1] | |
} | |
, | |
t) | |
} | |
; | |
var fl = [[-1e6, -1e6], [1e6, 1e6]]; | |
oa.geom.delaunay = function(n) { | |
return oa.geom.voronoi().triangles(n) | |
} | |
, | |
oa.geom.quadtree = function(n, t, e, r, u) { | |
function i(n) { | |
function i(n, t, e, r, u, i, a, o) { | |
if (!isNaN(e) && !isNaN(r)) | |
if (n.leaf) { | |
var l = n.x | |
, s = n.y; | |
if (null != l) | |
if (Ma(l - e) + Ma(s - r) < .01) | |
c(n, t, e, r, u, i, a, o); | |
else { | |
var f = n.point; | |
n.x = n.y = n.point = null , | |
c(n, f, l, s, u, i, a, o), | |
c(n, t, e, r, u, i, a, o) | |
} | |
else | |
n.x = e, | |
n.y = r, | |
n.point = t | |
} else | |
c(n, t, e, r, u, i, a, o) | |
} | |
function c(n, t, e, r, u, a, o, l) { | |
var c = .5 * (u + o) | |
, s = .5 * (a + l) | |
, f = e >= c | |
, h = r >= s | |
, g = h << 1 | f; | |
n.leaf = !1, | |
n = n.nodes[g] || (n.nodes[g] = hr()), | |
f ? u = c : o = c, | |
h ? a = s : l = s, | |
i(n, t, e, r, u, a, o, l) | |
} | |
var s, f, h, g, p, v, d, m, y, M = En(o), x = En(l); | |
if (null != t) | |
v = t, | |
d = e, | |
m = r, | |
y = u; | |
else if (m = y = -(v = d = 1 / 0), | |
f = [], | |
h = [], | |
p = n.length, | |
a) | |
for (g = 0; p > g; ++g) | |
s = n[g], | |
s.x < v && (v = s.x), | |
s.y < d && (d = s.y), | |
s.x > m && (m = s.x), | |
s.y > y && (y = s.y), | |
f.push(s.x), | |
h.push(s.y); | |
else | |
for (g = 0; p > g; ++g) { | |
var b = +M(s = n[g], g) | |
, _ = +x(s, g); | |
v > b && (v = b), | |
d > _ && (d = _), | |
b > m && (m = b), | |
_ > y && (y = _), | |
f.push(b), | |
h.push(_) | |
} | |
var w = m - v | |
, S = y - d; | |
w > S ? y = d + w : m = v + S; | |
var k = hr(); | |
if (k.add = function(n) { | |
i(k, n, +M(n, ++g), +x(n, g), v, d, m, y) | |
} | |
, | |
k.visit = function(n) { | |
gr(n, k, v, d, m, y) | |
} | |
, | |
k.find = function(n) { | |
return pr(k, n[0], n[1], v, d, m, y) | |
} | |
, | |
g = -1, | |
null == t) { | |
for (; ++g < p; ) | |
i(k, n[g], f[g], h[g], v, d, m, y); | |
--g | |
} else | |
n.forEach(k.add); | |
return f = h = n = s = null , | |
k | |
} | |
var a, o = Ce, l = ze; | |
return (a = arguments.length) ? (o = sr, | |
l = fr, | |
3 === a && (u = e, | |
r = t, | |
e = t = 0), | |
i(n)) : (i.x = function(n) { | |
return arguments.length ? (o = n, | |
i) : o | |
} | |
, | |
i.y = function(n) { | |
return arguments.length ? (l = n, | |
i) : l | |
} | |
, | |
i.extent = function(n) { | |
return arguments.length ? (null == n ? t = e = r = u = null : (t = +n[0][0], | |
e = +n[0][1], | |
r = +n[1][0], | |
u = +n[1][1]), | |
i) : null == t ? null : [[t, e], [r, u]] | |
} | |
, | |
i.size = function(n) { | |
return arguments.length ? (null == n ? t = e = r = u = null : (t = e = 0, | |
r = +n[0], | |
u = +n[1]), | |
i) : null == t ? null : [r - t, u - e] | |
} | |
, | |
i) | |
} | |
, | |
oa.interpolateRgb = vr, | |
oa.interpolateObject = dr, | |
oa.interpolateNumber = mr, | |
oa.interpolateString = yr; | |
var hl = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g | |
, gl = new RegExp(hl.source,"g"); | |
oa.interpolate = Mr, | |
oa.interpolators = [function(n, t) { | |
var e = typeof t; | |
return ("string" === e ? uo.has(t.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(t) ? vr : yr : t instanceof on ? vr : Array.isArray(t) ? xr : "object" === e && isNaN(t) ? dr : mr)(n, t) | |
} | |
], | |
oa.interpolateArray = xr; | |
var pl = function() { | |
return y | |
} | |
, vl = oa.map({ | |
linear: pl, | |
poly: Er, | |
quad: function() { | |
return Sr | |
}, | |
cubic: function() { | |
return kr | |
}, | |
sin: function() { | |
return Ar | |
}, | |
exp: function() { | |
return Cr | |
}, | |
circle: function() { | |
return zr | |
}, | |
elastic: Lr, | |
back: qr, | |
bounce: function() { | |
return Tr | |
} | |
}) | |
, dl = oa.map({ | |
"in": y, | |
out: _r, | |
"in-out": wr, | |
"out-in": function(n) { | |
return wr(_r(n)) | |
} | |
}); | |
oa.ease = function(n) { | |
var t = n.indexOf("-") | |
, e = t >= 0 ? n.slice(0, t) : n | |
, r = t >= 0 ? n.slice(t + 1) : "in"; | |
return e = vl.get(e) || pl, | |
r = dl.get(r) || y, | |
br(r(e.apply(null , la.call(arguments, 1)))) | |
} | |
, | |
oa.interpolateHcl = Rr, | |
oa.interpolateHsl = Dr, | |
oa.interpolateLab = Pr, | |
oa.interpolateRound = Ur, | |
oa.transform = function(n) { | |
var t = sa.createElementNS(oa.ns.prefix.svg, "g"); | |
return (oa.transform = function(n) { | |
if (null != n) { | |
t.setAttribute("transform", n); | |
var e = t.transform.baseVal.consolidate() | |
} | |
return new jr(e ? e.matrix : ml) | |
} | |
)(n) | |
} | |
, | |
jr.prototype.toString = function() { | |
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")" | |
} | |
; | |
var ml = { | |
a: 1, | |
b: 0, | |
c: 0, | |
d: 1, | |
e: 0, | |
f: 0 | |
}; | |
oa.interpolateTransform = $r, | |
oa.layout = {}, | |
oa.layout.bundle = function() { | |
return function(n) { | |
for (var t = [], e = -1, r = n.length; ++e < r; ) | |
t.push(Jr(n[e])); | |
return t | |
} | |
} | |
, | |
oa.layout.chord = function() { | |
function n() { | |
var n, c, f, h, g, p = {}, v = [], d = oa.range(i), m = []; | |
for (e = [], | |
r = [], | |
n = 0, | |
h = -1; ++h < i; ) { | |
for (c = 0, | |
g = -1; ++g < i; ) | |
c += u[h][g]; | |
v.push(c), | |
m.push(oa.range(i)), | |
n += c | |
} | |
for (a && d.sort(function(n, t) { | |
return a(v[n], v[t]) | |
}), | |
o && m.forEach(function(n, t) { | |
n.sort(function(n, e) { | |
return o(u[t][n], u[t][e]) | |
}) | |
}), | |
n = (Fa - s * i) / n, | |
c = 0, | |
h = -1; ++h < i; ) { | |
for (f = c, | |
g = -1; ++g < i; ) { | |
var y = d[h] | |
, M = m[y][g] | |
, x = u[y][M] | |
, b = c | |
, _ = c += x * n; | |
p[y + "-" + M] = { | |
index: y, | |
subindex: M, | |
startAngle: b, | |
endAngle: _, | |
value: x | |
} | |
} | |
r[y] = { | |
index: y, | |
startAngle: f, | |
endAngle: c, | |
value: v[y] | |
}, | |
c += s | |
} | |
for (h = -1; ++h < i; ) | |
for (g = h - 1; ++g < i; ) { | |
var w = p[h + "-" + g] | |
, S = p[g + "-" + h]; | |
(w.value || S.value) && e.push(w.value < S.value ? { | |
source: S, | |
target: w | |
} : { | |
source: w, | |
target: S | |
}) | |
} | |
l && t() | |
} | |
function t() { | |
e.sort(function(n, t) { | |
return l((n.source.value + n.target.value) / 2, (t.source.value + t.target.value) / 2) | |
}) | |
} | |
var e, r, u, i, a, o, l, c = {}, s = 0; | |
return c.matrix = function(n) { | |
return arguments.length ? (i = (u = n) && u.length, | |
e = r = null , | |
c) : u | |
} | |
, | |
c.padding = function(n) { | |
return arguments.length ? (s = n, | |
e = r = null , | |
c) : s | |
} | |
, | |
c.sortGroups = function(n) { | |
return arguments.length ? (a = n, | |
e = r = null , | |
c) : a | |
} | |
, | |
c.sortSubgroups = function(n) { | |
return arguments.length ? (o = n, | |
e = null , | |
c) : o | |
} | |
, | |
c.sortChords = function(n) { | |
return arguments.length ? (l = n, | |
e && t(), | |
c) : l | |
} | |
, | |
c.chords = function() { | |
return e || n(), | |
e | |
} | |
, | |
c.groups = function() { | |
return r || n(), | |
r | |
} | |
, | |
c | |
} | |
, | |
oa.layout.force = function() { | |
function n(n) { | |
return function(t, e, r, u) { | |
if (t.point !== n) { | |
var i = t.cx - n.x | |
, a = t.cy - n.y | |
, o = u - e | |
, l = i * i + a * a; | |
if (l > o * o / m) { | |
if (v > l) { | |
var c = t.charge / l; | |
n.px -= i * c, | |
n.py -= a * c | |
} | |
return !0 | |
} | |
if (t.point && l && v > l) { | |
var c = t.pointCharge / l; | |
n.px -= i * c, | |
n.py -= a * c | |
} | |
} | |
return !t.charge | |
} | |
} | |
function t(n) { | |
n.px = oa.event.x, | |
n.py = oa.event.y, | |
l.resume() | |
} | |
var e, r, u, i, a, o, l = {}, c = oa.dispatch("start", "tick", "end"), s = [1, 1], f = .9, h = yl, g = Ml, p = -30, v = xl, d = .1, m = .64, M = [], x = []; | |
return l.tick = function() { | |
if ((u *= .99) < .005) | |
return e = null , | |
c.end({ | |
type: "end", | |
alpha: u = 0 | |
}), | |
!0; | |
var t, r, l, h, g, v, m, y, b, _ = M.length, w = x.length; | |
for (r = 0; w > r; ++r) | |
l = x[r], | |
h = l.source, | |
g = l.target, | |
y = g.x - h.x, | |
b = g.y - h.y, | |
(v = y * y + b * b) && (v = u * a[r] * ((v = Math.sqrt(v)) - i[r]) / v, | |
y *= v, | |
b *= v, | |
g.x -= y * (m = h.weight + g.weight ? h.weight / (h.weight + g.weight) : .5), | |
g.y -= b * m, | |
h.x += y * (m = 1 - m), | |
h.y += b * m); | |
if ((m = u * d) && (y = s[0] / 2, | |
b = s[1] / 2, | |
r = -1, | |
m)) | |
for (; ++r < _; ) | |
l = M[r], | |
l.x += (y - l.x) * m, | |
l.y += (b - l.y) * m; | |
if (p) | |
for (ru(t = oa.geom.quadtree(M), u, o), | |
r = -1; ++r < _; ) | |
(l = M[r]).fixed || t.visit(n(l)); | |
for (r = -1; ++r < _; ) | |
l = M[r], | |
l.fixed ? (l.x = l.px, | |
l.y = l.py) : (l.x -= (l.px - (l.px = l.x)) * f, | |
l.y -= (l.py - (l.py = l.y)) * f); | |
c.tick({ | |
type: "tick", | |
alpha: u | |
}) | |
} | |
, | |
l.nodes = function(n) { | |
return arguments.length ? (M = n, | |
l) : M | |
} | |
, | |
l.links = function(n) { | |
return arguments.length ? (x = n, | |
l) : x | |
} | |
, | |
l.size = function(n) { | |
return arguments.length ? (s = n, | |
l) : s | |
} | |
, | |
l.linkDistance = function(n) { | |
return arguments.length ? (h = "function" == typeof n ? n : +n, | |
l) : h | |
} | |
, | |
l.distance = l.linkDistance, | |
l.linkStrength = function(n) { | |
return arguments.length ? (g = "function" == typeof n ? n : +n, | |
l) : g | |
} | |
, | |
l.friction = function(n) { | |
return arguments.length ? (f = +n, | |
l) : f | |
} | |
, | |
l.charge = function(n) { | |
return arguments.length ? (p = "function" == typeof n ? n : +n, | |
l) : p | |
} | |
, | |
l.chargeDistance = function(n) { | |
return arguments.length ? (v = n * n, | |
l) : Math.sqrt(v) | |
} | |
, | |
l.gravity = function(n) { | |
return arguments.length ? (d = +n, | |
l) : d | |
} | |
, | |
l.theta = function(n) { | |
return arguments.length ? (m = n * n, | |
l) : Math.sqrt(m) | |
} | |
, | |
l.alpha = function(n) { | |
return arguments.length ? (n = +n, | |
u ? n > 0 ? u = n : (e.c = null , | |
e.t = NaN, | |
e = null , | |
c.end({ | |
type: "end", | |
alpha: u = 0 | |
})) : n > 0 && (c.start({ | |
type: "start", | |
alpha: u = n | |
}), | |
e = qn(l.tick)), | |
l) : u | |
} | |
, | |
l.start = function() { | |
function n(n, r) { | |
if (!e) { | |
for (e = new Array(u), | |
l = 0; u > l; ++l) | |
e[l] = []; | |
for (l = 0; c > l; ++l) { | |
var i = x[l]; | |
e[i.source.index].push(i.target), | |
e[i.target.index].push(i.source) | |
} | |
} | |
for (var a, o = e[t], l = -1, s = o.length; ++l < s; ) | |
if (!isNaN(a = o[l][n])) | |
return a; | |
return Math.random() * r | |
} | |
var t, e, r, u = M.length, c = x.length, f = s[0], v = s[1]; | |
for (t = 0; u > t; ++t) | |
(r = M[t]).index = t, | |
r.weight = 0; | |
for (t = 0; c > t; ++t) | |
r = x[t], | |
"number" == typeof r.source && (r.source = M[r.source]), | |
"number" == typeof r.target && (r.target = M[r.target]), | |
++r.source.weight, | |
++r.target.weight; | |
for (t = 0; u > t; ++t) | |
r = M[t], | |
isNaN(r.x) && (r.x = n("x", f)), | |
isNaN(r.y) && (r.y = n("y", v)), | |
isNaN(r.px) && (r.px = r.x), | |
isNaN(r.py) && (r.py = r.y); | |
if (i = [], | |
"function" == typeof h) | |
for (t = 0; c > t; ++t) | |
i[t] = +h.call(this, x[t], t); | |
else | |
for (t = 0; c > t; ++t) | |
i[t] = h; | |
if (a = [], | |
"function" == typeof g) | |
for (t = 0; c > t; ++t) | |
a[t] = +g.call(this, x[t], t); | |
else | |
for (t = 0; c > t; ++t) | |
a[t] = g; | |
if (o = [], | |
"function" == typeof p) | |
for (t = 0; u > t; ++t) | |
o[t] = +p.call(this, M[t], t); | |
else | |
for (t = 0; u > t; ++t) | |
o[t] = p; | |
return l.resume() | |
} | |
, | |
l.resume = function() { | |
return l.alpha(.1) | |
} | |
, | |
l.stop = function() { | |
return l.alpha(0) | |
} | |
, | |
l.drag = function() { | |
return r || (r = oa.behavior.drag().origin(y).on("dragstart.force", Qr).on("drag.force", t).on("dragend.force", nu)), | |
arguments.length ? void this.on("mouseover.force", tu).on("mouseout.force", eu).call(r) : r | |
} | |
, | |
oa.rebind(l, c, "on") | |
} | |
; | |
var yl = 20 | |
, Ml = 1 | |
, xl = 1 / 0; | |
oa.layout.hierarchy = function() { | |
function n(u) { | |
var i, a = [u], o = []; | |
for (u.depth = 0; null != (i = a.pop()); ) | |
if (o.push(i), | |
(c = e.call(n, i, i.depth)) && (l = c.length)) { | |
for (var l, c, s; --l >= 0; ) | |
a.push(s = c[l]), | |
s.parent = i, | |
s.depth = i.depth + 1; | |
r && (i.value = 0), | |
i.children = c | |
} else | |
r && (i.value = +r.call(n, i, i.depth) || 0), | |
delete i.children; | |
return au(u, function(n) { | |
var e, u; | |
t && (e = n.children) && e.sort(t), | |
r && (u = n.parent) && (u.value += n.value) | |
}), | |
o | |
} | |
var t = cu | |
, e = ou | |
, r = lu; | |
return n.sort = function(e) { | |
return arguments.length ? (t = e, | |
n) : t | |
} | |
, | |
n.children = function(t) { | |
return arguments.length ? (e = t, | |
n) : e | |
} | |
, | |
n.value = function(t) { | |
return arguments.length ? (r = t, | |
n) : r | |
} | |
, | |
n.revalue = function(t) { | |
return r && (iu(t, function(n) { | |
n.children && (n.value = 0) | |
}), | |
au(t, function(t) { | |
var e; | |
t.children || (t.value = +r.call(n, t, t.depth) || 0), | |
(e = t.parent) && (e.value += t.value) | |
})), | |
t | |
} | |
, | |
n | |
} | |
, | |
oa.layout.partition = function() { | |
function n(t, e, r, u) { | |
var i = t.children; | |
if (t.x = e, | |
t.y = t.depth * u, | |
t.dx = r, | |
t.dy = u, | |
i && (a = i.length)) { | |
var a, o, l, c = -1; | |
for (r = t.value ? r / t.value : 0; ++c < a; ) | |
n(o = i[c], e, l = o.value * r, u), | |
e += l | |
} | |
} | |
function t(n) { | |
var e = n.children | |
, r = 0; | |
if (e && (u = e.length)) | |
for (var u, i = -1; ++i < u; ) | |
r = Math.max(r, t(e[i])); | |
return 1 + r | |
} | |
function e(e, i) { | |
var a = r.call(this, e, i); | |
return n(a[0], 0, u[0], u[1] / t(a[0])), | |
a | |
} | |
var r = oa.layout.hierarchy() | |
, u = [1, 1]; | |
return e.size = function(n) { | |
return arguments.length ? (u = n, | |
e) : u | |
} | |
, | |
uu(e, r) | |
} | |
, | |
oa.layout.pie = function() { | |
function n(a) { | |
var o, l = a.length, c = a.map(function(e, r) { | |
return +t.call(n, e, r) | |
}), s = +("function" == typeof r ? r.apply(this, arguments) : r), f = ("function" == typeof u ? u.apply(this, arguments) : u) - s, h = Math.min(Math.abs(f) / l, +("function" == typeof i ? i.apply(this, arguments) : i)), g = h * (0 > f ? -1 : 1), p = oa.sum(c), v = p ? (f - l * g) / p : 0, d = oa.range(l), m = []; | |
return null != e && d.sort(e === bl ? function(n, t) { | |
return c[t] - c[n] | |
} | |
: function(n, t) { | |
return e(a[n], a[t]) | |
} | |
), | |
d.forEach(function(n) { | |
m[n] = { | |
data: a[n], | |
value: o = c[n], | |
startAngle: s, | |
endAngle: s += o * v + g, | |
padAngle: h | |
} | |
}), | |
m | |
} | |
var t = Number | |
, e = bl | |
, r = 0 | |
, u = Fa | |
, i = 0; | |
return n.value = function(e) { | |
return arguments.length ? (t = e, | |
n) : t | |
} | |
, | |
n.sort = function(t) { | |
return arguments.length ? (e = t, | |
n) : e | |
} | |
, | |
n.startAngle = function(t) { | |
return arguments.length ? (r = t, | |
n) : r | |
} | |
, | |
n.endAngle = function(t) { | |
return arguments.length ? (u = t, | |
n) : u | |
} | |
, | |
n.padAngle = function(t) { | |
return arguments.length ? (i = t, | |
n) : i | |
} | |
, | |
n | |
} | |
; | |
var bl = {}; | |
oa.layout.stack = function() { | |
function n(o, l) { | |
if (!(h = o.length)) | |
return o; | |
var c = o.map(function(e, r) { | |
return t.call(n, e, r) | |
}) | |
, s = c.map(function(t) { | |
return t.map(function(t, e) { | |
return [i.call(n, t, e), a.call(n, t, e)] | |
}) | |
}) | |
, f = e.call(n, s, l); | |
c = oa.permute(c, f), | |
s = oa.permute(s, f); | |
var h, g, p, v, d = r.call(n, s, l), m = c[0].length; | |
for (p = 0; m > p; ++p) | |
for (u.call(n, c[0][p], v = d[p], s[0][p][1]), | |
g = 1; h > g; ++g) | |
u.call(n, c[g][p], v += s[g - 1][p][1], s[g][p][1]); | |
return o | |
} | |
var t = y | |
, e = pu | |
, r = vu | |
, u = gu | |
, i = fu | |
, a = hu; | |
return n.values = function(e) { | |
return arguments.length ? (t = e, | |
n) : t | |
} | |
, | |
n.order = function(t) { | |
return arguments.length ? (e = "function" == typeof t ? t : _l.get(t) || pu, | |
n) : e | |
} | |
, | |
n.offset = function(t) { | |
return arguments.length ? (r = "function" == typeof t ? t : wl.get(t) || vu, | |
n) : r | |
} | |
, | |
n.x = function(t) { | |
return arguments.length ? (i = t, | |
n) : i | |
} | |
, | |
n.y = function(t) { | |
return arguments.length ? (a = t, | |
n) : a | |
} | |
, | |
n.out = function(t) { | |
return arguments.length ? (u = t, | |
n) : u | |
} | |
, | |
n | |
} | |
; | |
var _l = oa.map({ | |
"inside-out": function(n) { | |
var t, e, r = n.length, u = n.map(du), i = n.map(mu), a = oa.range(r).sort(function(n, t) { | |
return u[n] - u[t] | |
}), o = 0, l = 0, c = [], s = []; | |
for (t = 0; r > t; ++t) | |
e = a[t], | |
l > o ? (o += i[e], | |
c.push(e)) : (l += i[e], | |
s.push(e)); | |
return s.reverse().concat(c) | |
}, | |
reverse: function(n) { | |
return oa.range(n.length).reverse() | |
}, | |
"default": pu | |
}) | |
, wl = oa.map({ | |
silhouette: function(n) { | |
var t, e, r, u = n.length, i = n[0].length, a = [], o = 0, l = []; | |
for (e = 0; i > e; ++e) { | |
for (t = 0, | |
r = 0; u > t; t++) | |
r += n[t][e][1]; | |
r > o && (o = r), | |
a.push(r) | |
} | |
for (e = 0; i > e; ++e) | |
l[e] = (o - a[e]) / 2; | |
return l | |
}, | |
wiggle: function(n) { | |
var t, e, r, u, i, a, o, l, c, s = n.length, f = n[0], h = f.length, g = []; | |
for (g[0] = l = c = 0, | |
e = 1; h > e; ++e) { | |
for (t = 0, | |
u = 0; s > t; ++t) | |
u += n[t][e][1]; | |
for (t = 0, | |
i = 0, | |
o = f[e][0] - f[e - 1][0]; s > t; ++t) { | |
for (r = 0, | |
a = (n[t][e][1] - n[t][e - 1][1]) / (2 * o); t > r; ++r) | |
a += (n[r][e][1] - n[r][e - 1][1]) / o; | |
i += a * n[t][e][1] | |
} | |
g[e] = l -= u ? i / u * o : 0, | |
c > l && (c = l) | |
} | |
for (e = 0; h > e; ++e) | |
g[e] -= c; | |
return g | |
}, | |
expand: function(n) { | |
var t, e, r, u = n.length, i = n[0].length, a = 1 / u, o = []; | |
for (e = 0; i > e; ++e) { | |
for (t = 0, | |
r = 0; u > t; t++) | |
r += n[t][e][1]; | |
if (r) | |
for (t = 0; u > t; t++) | |
n[t][e][1] /= r; | |
else | |
for (t = 0; u > t; t++) | |
n[t][e][1] = a | |
} | |
for (e = 0; i > e; ++e) | |
o[e] = 0; | |
return o | |
}, | |
zero: vu | |
}); | |
oa.layout.histogram = function() { | |
function n(n, i) { | |
for (var a, o, l = [], c = n.map(e, this), s = r.call(this, c, i), f = u.call(this, s, c, i), i = -1, h = c.length, g = f.length - 1, p = t ? 1 : 1 / h; ++i < g; ) | |
a = l[i] = [], | |
a.dx = f[i + 1] - (a.x = f[i]), | |
a.y = 0; | |
if (g > 0) | |
for (i = -1; ++i < h; ) | |
o = c[i], | |
o >= s[0] && o <= s[1] && (a = l[oa.bisect(f, o, 1, g) - 1], | |
a.y += p, | |
a.push(n[i])); | |
return l | |
} | |
var t = !0 | |
, e = Number | |
, r = bu | |
, u = Mu; | |
return n.value = function(t) { | |
return arguments.length ? (e = t, | |
n) : e | |
} | |
, | |
n.range = function(t) { | |
return arguments.length ? (r = En(t), | |
n) : r | |
} | |
, | |
n.bins = function(t) { | |
return arguments.length ? (u = "number" == typeof t ? function(n) { | |
return xu(n, t) | |
} | |
: En(t), | |
n) : u | |
} | |
, | |
n.frequency = function(e) { | |
return arguments.length ? (t = !!e, | |
n) : t | |
} | |
, | |
n | |
} | |
, | |
oa.layout.pack = function() { | |
function n(n, i) { | |
var a = e.call(this, n, i) | |
, o = a[0] | |
, l = u[0] | |
, c = u[1] | |
, s = null == t ? Math.sqrt : "function" == typeof t ? t : function() { | |
return t | |
} | |
; | |
if (o.x = o.y = 0, | |
au(o, function(n) { | |
n.r = +s(n.value) | |
}), | |
au(o, Nu), | |
r) { | |
var f = r * (t ? 1 : Math.max(2 * o.r / l, 2 * o.r / c)) / 2; | |
au(o, function(n) { | |
n.r += f | |
}), | |
au(o, Nu), | |
au(o, function(n) { | |
n.r -= f | |
}) | |
} | |
return Cu(o, l / 2, c / 2, t ? 1 : 1 / Math.max(2 * o.r / l, 2 * o.r / c)), | |
a | |
} | |
var t, e = oa.layout.hierarchy().sort(_u), r = 0, u = [1, 1]; | |
return n.size = function(t) { | |
return arguments.length ? (u = t, | |
n) : u | |
} | |
, | |
n.radius = function(e) { | |
return arguments.length ? (t = null == e || "function" == typeof e ? e : +e, | |
n) : t | |
} | |
, | |
n.padding = function(t) { | |
return arguments.length ? (r = +t, | |
n) : r | |
} | |
, | |
uu(n, e) | |
} | |
, | |
oa.layout.tree = function() { | |
function n(n, u) { | |
var s = a.call(this, n, u) | |
, f = s[0] | |
, h = t(f); | |
if (au(h, e), | |
h.parent.m = -h.z, | |
iu(h, r), | |
c) | |
iu(f, i); | |
else { | |
var g = f | |
, p = f | |
, v = f; | |
iu(f, function(n) { | |
n.x < g.x && (g = n), | |
n.x > p.x && (p = n), | |
n.depth > v.depth && (v = n) | |
}); | |
var d = o(g, p) / 2 - g.x | |
, m = l[0] / (p.x + o(p, g) / 2 + d) | |
, y = l[1] / (v.depth || 1); | |
iu(f, function(n) { | |
n.x = (n.x + d) * m, | |
n.y = n.depth * y | |
}) | |
} | |
return s | |
} | |
function t(n) { | |
for (var t, e = { | |
A: null , | |
children: [n] | |
}, r = [e]; null != (t = r.pop()); ) | |
for (var u, i = t.children, a = 0, o = i.length; o > a; ++a) | |
r.push((i[a] = u = { | |
_: i[a], | |
parent: t, | |
children: (u = i[a].children) && u.slice() || [], | |
A: null , | |
a: null , | |
z: 0, | |
m: 0, | |
c: 0, | |
s: 0, | |
t: null , | |
i: a | |
}).a = u); | |
return e.children[0] | |
} | |
function e(n) { | |
var t = n.children | |
, e = n.parent.children | |
, r = n.i ? e[n.i - 1] : null ; | |
if (t.length) { | |
Du(n); | |
var i = (t[0].z + t[t.length - 1].z) / 2; | |
r ? (n.z = r.z + o(n._, r._), | |
n.m = n.z - i) : n.z = i | |
} else | |
r && (n.z = r.z + o(n._, r._)); | |
n.parent.A = u(n, r, n.parent.A || e[0]) | |
} | |
function r(n) { | |
n._.x = n.z + n.parent.m, | |
n.m += n.parent.m | |
} | |
function u(n, t, e) { | |
if (t) { | |
for (var r, u = n, i = n, a = t, l = u.parent.children[0], c = u.m, s = i.m, f = a.m, h = l.m; a = Tu(a), | |
u = qu(u), | |
a && u; ) | |
l = qu(l), | |
i = Tu(i), | |
i.a = n, | |
r = a.z + f - u.z - c + o(a._, u._), | |
r > 0 && (Ru(Pu(a, n, e), n, r), | |
c += r, | |
s += r), | |
f += a.m, | |
c += u.m, | |
h += l.m, | |
s += i.m; | |
a && !Tu(i) && (i.t = a, | |
i.m += f - s), | |
u && !qu(l) && (l.t = u, | |
l.m += c - h, | |
e = n) | |
} | |
return e | |
} | |
function i(n) { | |
n.x *= l[0], | |
n.y = n.depth * l[1] | |
} | |
var a = oa.layout.hierarchy().sort(null ).value(null ) | |
, o = Lu | |
, l = [1, 1] | |
, c = null ; | |
return n.separation = function(t) { | |
return arguments.length ? (o = t, | |
n) : o | |
} | |
, | |
n.size = function(t) { | |
return arguments.length ? (c = null == (l = t) ? i : null , | |
n) : c ? null : l | |
} | |
, | |
n.nodeSize = function(t) { | |
return arguments.length ? (c = null == (l = t) ? null : i, | |
n) : c ? l : null | |
} | |
, | |
uu(n, a) | |
} | |
, | |
oa.layout.cluster = function() { | |
function n(n, i) { | |
var a, o = t.call(this, n, i), l = o[0], c = 0; | |
au(l, function(n) { | |
var t = n.children; | |
t && t.length ? (n.x = ju(t), | |
n.y = Uu(t)) : (n.x = a ? c += e(n, a) : 0, | |
n.y = 0, | |
a = n) | |
}); | |
var s = Fu(l) | |
, f = Hu(l) | |
, h = s.x - e(s, f) / 2 | |
, g = f.x + e(f, s) / 2; | |
return au(l, u ? function(n) { | |
n.x = (n.x - l.x) * r[0], | |
n.y = (l.y - n.y) * r[1] | |
} | |
: function(n) { | |
n.x = (n.x - h) / (g - h) * r[0], | |
n.y = (1 - (l.y ? n.y / l.y : 1)) * r[1] | |
} | |
), | |
o | |
} | |
var t = oa.layout.hierarchy().sort(null ).value(null ) | |
, e = Lu | |
, r = [1, 1] | |
, u = !1; | |
return n.separation = function(t) { | |
return arguments.length ? (e = t, | |
n) : e | |
} | |
, | |
n.size = function(t) { | |
return arguments.length ? (u = null == (r = t), | |
n) : u ? null : r | |
} | |
, | |
n.nodeSize = function(t) { | |
return arguments.length ? (u = null != (r = t), | |
n) : u ? r : null | |
} | |
, | |
uu(n, t) | |
} | |
, | |
oa.layout.treemap = function() { | |
function n(n, t) { | |
for (var e, r, u = -1, i = n.length; ++u < i; ) | |
r = (e = n[u]).value * (0 > t ? 0 : t), | |
e.area = isNaN(r) || 0 >= r ? 0 : r | |
} | |
function t(e) { | |
var i = e.children; | |
if (i && i.length) { | |
var a, o, l, c = f(e), s = [], h = i.slice(), p = 1 / 0, v = "slice" === g ? c.dx : "dice" === g ? c.dy : "slice-dice" === g ? 1 & e.depth ? c.dy : c.dx : Math.min(c.dx, c.dy); | |
for (n(h, c.dx * c.dy / e.value), | |
s.area = 0; (l = h.length) > 0; ) | |
s.push(a = h[l - 1]), | |
s.area += a.area, | |
"squarify" !== g || (o = r(s, v)) <= p ? (h.pop(), | |
p = o) : (s.area -= s.pop().area, | |
u(s, v, c, !1), | |
v = Math.min(c.dx, c.dy), | |
s.length = s.area = 0, | |
p = 1 / 0); | |
s.length && (u(s, v, c, !0), | |
s.length = s.area = 0), | |
i.forEach(t) | |
} | |
} | |
function e(t) { | |
var r = t.children; | |
if (r && r.length) { | |
var i, a = f(t), o = r.slice(), l = []; | |
for (n(o, a.dx * a.dy / t.value), | |
l.area = 0; i = o.pop(); ) | |
l.push(i), | |
l.area += i.area, | |
null != i.z && (u(l, i.z ? a.dx : a.dy, a, !o.length), | |
l.length = l.area = 0); | |
r.forEach(e) | |
} | |
} | |
function r(n, t) { | |
for (var e, r = n.area, u = 0, i = 1 / 0, a = -1, o = n.length; ++a < o; ) | |
(e = n[a].area) && (i > e && (i = e), | |
e > u && (u = e)); | |
return r *= r, | |
t *= t, | |
r ? Math.max(t * u * p / r, r / (t * i * p)) : 1 / 0 | |
} | |
function u(n, t, e, r) { | |
var u, i = -1, a = n.length, o = e.x, c = e.y, s = t ? l(n.area / t) : 0; | |
if (t == e.dx) { | |
for ((r || s > e.dy) && (s = e.dy); ++i < a; ) | |
u = n[i], | |
u.x = o, | |
u.y = c, | |
u.dy = s, | |
o += u.dx = Math.min(e.x + e.dx - o, s ? l(u.area / s) : 0); | |
u.z = !0, | |
u.dx += e.x + e.dx - o, | |
e.y += s, | |
e.dy -= s | |
} else { | |
for ((r || s > e.dx) && (s = e.dx); ++i < a; ) | |
u = n[i], | |
u.x = o, | |
u.y = c, | |
u.dx = s, | |
c += u.dy = Math.min(e.y + e.dy - c, s ? l(u.area / s) : 0); | |
u.z = !1, | |
u.dy += e.y + e.dy - c, | |
e.x += s, | |
e.dx -= s | |
} | |
} | |
function i(r) { | |
var u = a || o(r) | |
, i = u[0]; | |
return i.x = i.y = 0, | |
i.value ? (i.dx = c[0], | |
i.dy = c[1]) : i.dx = i.dy = 0, | |
a && o.revalue(i), | |
n([i], i.dx * i.dy / i.value), | |
(a ? e : t)(i), | |
h && (a = u), | |
u | |
} | |
var a, o = oa.layout.hierarchy(), l = Math.round, c = [1, 1], s = null , f = Ou, h = !1, g = "squarify", p = .5 * (1 + Math.sqrt(5)); | |
return i.size = function(n) { | |
return arguments.length ? (c = n, | |
i) : c | |
} | |
, | |
i.padding = function(n) { | |
function t(t) { | |
var e = n.call(i, t, t.depth); | |
return null == e ? Ou(t) : Iu(t, "number" == typeof e ? [e, e, e, e] : e) | |
} | |
function e(t) { | |
return Iu(t, n) | |
} | |
if (!arguments.length) | |
return s; | |
var r; | |
return f = null == (s = n) ? Ou : "function" == (r = typeof n) ? t : "number" === r ? (n = [n, n, n, n], | |
e) : e, | |
i | |
} | |
, | |
i.round = function(n) { | |
return arguments.length ? (l = n ? Math.round : Number, | |
i) : l != Number | |
} | |
, | |
i.sticky = function(n) { | |
return arguments.length ? (h = n, | |
a = null , | |
i) : h | |
} | |
, | |
i.ratio = function(n) { | |
return arguments.length ? (p = n, | |
i) : p | |
} | |
, | |
i.mode = function(n) { | |
return arguments.length ? (g = n + "", | |
i) : g | |
} | |
, | |
uu(i, o) | |
} | |
, | |
oa.random = { | |
normal: function(n, t) { | |
var e = arguments.length; | |
return 2 > e && (t = 1), | |
1 > e && (n = 0), | |
function() { | |
var e, r, u; | |
do | |
e = 2 * Math.random() - 1, | |
r = 2 * Math.random() - 1, | |
u = e * e + r * r; | |
while (!u || u > 1);return n + t * e * Math.sqrt(-2 * Math.log(u) / u) | |
} | |
}, | |
logNormal: function() { | |
var n = oa.random.normal.apply(oa, arguments); | |
return function() { | |
return Math.exp(n()) | |
} | |
}, | |
bates: function(n) { | |
var t = oa.random.irwinHall(n); | |
return function() { | |
return t() / n | |
} | |
}, | |
irwinHall: function(n) { | |
return function() { | |
for (var t = 0, e = 0; n > e; e++) | |
t += Math.random(); | |
return t | |
} | |
} | |
}, | |
oa.scale = {}; | |
var Sl = { | |
floor: y, | |
ceil: y | |
}; | |
oa.scale.linear = function() { | |
return Wu([0, 1], [0, 1], Mr, !1) | |
} | |
; | |
var kl = { | |
s: 1, | |
g: 1, | |
p: 1, | |
r: 1, | |
e: 1 | |
}; | |
oa.scale.log = function() { | |
return ri(oa.scale.linear().domain([0, 1]), 10, !0, [1, 10]) | |
} | |
; | |
var Nl = oa.format(".0e") | |
, El = { | |
floor: function(n) { | |
return -Math.ceil(-n) | |
}, | |
ceil: function(n) { | |
return -Math.floor(-n) | |
} | |
}; | |
oa.scale.pow = function() { | |
return ui(oa.scale.linear(), 1, [0, 1]) | |
} | |
, | |
oa.scale.sqrt = function() { | |
return oa.scale.pow().exponent(.5) | |
} | |
, | |
oa.scale.ordinal = function() { | |
return ai([], { | |
t: "range", | |
a: [[]] | |
}) | |
} | |
, | |
oa.scale.category10 = function() { | |
return oa.scale.ordinal().range(Al) | |
} | |
, | |
oa.scale.category20 = function() { | |
return oa.scale.ordinal().range(Cl) | |
} | |
, | |
oa.scale.category20b = function() { | |
return oa.scale.ordinal().range(zl) | |
} | |
, | |
oa.scale.category20c = function() { | |
return oa.scale.ordinal().range(Ll) | |
} | |
; | |
var Al = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(xn) | |
, Cl = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(xn) | |
, zl = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(xn) | |
, Ll = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(xn); | |
oa.scale.quantile = function() { | |
return oi([], []) | |
} | |
, | |
oa.scale.quantize = function() { | |
return li(0, 1, [0, 1]) | |
} | |
, | |
oa.scale.threshold = function() { | |
return ci([.5], [0, 1]) | |
} | |
, | |
oa.scale.identity = function() { | |
return si([0, 1]) | |
} | |
, | |
oa.svg = {}, | |
oa.svg.arc = function() { | |
function n() { | |
var n = Math.max(0, +e.apply(this, arguments)) | |
, c = Math.max(0, +r.apply(this, arguments)) | |
, s = a.apply(this, arguments) - Oa | |
, f = o.apply(this, arguments) - Oa | |
, h = Math.abs(f - s) | |
, g = s > f ? 0 : 1; | |
if (n > c && (p = c, | |
c = n, | |
n = p), | |
h >= Ha) | |
return t(c, g) + (n ? t(n, 1 - g) : "") + "Z"; | |
var p, v, d, m, y, M, x, b, _, w, S, k, N = 0, E = 0, A = []; | |
if ((m = (+l.apply(this, arguments) || 0) / 2) && (d = i === ql ? Math.sqrt(n * n + c * c) : +i.apply(this, arguments), | |
g || (E *= -1), | |
c && (E = tn(d / c * Math.sin(m))), | |
n && (N = tn(d / n * Math.sin(m)))), | |
c) { | |
y = c * Math.cos(s + E), | |
M = c * Math.sin(s + E), | |
x = c * Math.cos(f - E), | |
b = c * Math.sin(f - E); | |
var C = Math.abs(f - s - 2 * E) <= ja ? 0 : 1; | |
if (E && mi(y, M, x, b) === g ^ C) { | |
var z = (s + f) / 2; | |
y = c * Math.cos(z), | |
M = c * Math.sin(z), | |
x = b = null | |
} | |
} else | |
y = M = 0; | |
if (n) { | |
_ = n * Math.cos(f - N), | |
w = n * Math.sin(f - N), | |
S = n * Math.cos(s + N), | |
k = n * Math.sin(s + N); | |
var L = Math.abs(s - f + 2 * N) <= ja ? 0 : 1; | |
if (N && mi(_, w, S, k) === 1 - g ^ L) { | |
var q = (s + f) / 2; | |
_ = n * Math.cos(q), | |
w = n * Math.sin(q), | |
S = k = null | |
} | |
} else | |
_ = w = 0; | |
if (h > Pa && (p = Math.min(Math.abs(c - n) / 2, +u.apply(this, arguments))) > .001) { | |
v = c > n ^ g ? 0 : 1; | |
var T = p | |
, R = p; | |
if (ja > h) { | |
var D = null == S ? [_, w] : null == x ? [y, M] : Re([y, M], [S, k], [x, b], [_, w]) | |
, P = y - D[0] | |
, U = M - D[1] | |
, j = x - D[0] | |
, F = b - D[1] | |
, H = 1 / Math.sin(Math.acos((P * j + U * F) / (Math.sqrt(P * P + U * U) * Math.sqrt(j * j + F * F))) / 2) | |
, O = Math.sqrt(D[0] * D[0] + D[1] * D[1]); | |
R = Math.min(p, (n - O) / (H - 1)), | |
T = Math.min(p, (c - O) / (H + 1)) | |
} | |
if (null != x) { | |
var I = yi(null == S ? [_, w] : [S, k], [y, M], c, T, g) | |
, Y = yi([x, b], [_, w], c, T, g); | |
p === T ? A.push("M", I[0], "A", T, ",", T, " 0 0,", v, " ", I[1], "A", c, ",", c, " 0 ", 1 - g ^ mi(I[1][0], I[1][1], Y[1][0], Y[1][1]), ",", g, " ", Y[1], "A", T, ",", T, " 0 0,", v, " ", Y[0]) : A.push("M", I[0], "A", T, ",", T, " 0 1,", v, " ", Y[0]) | |
} else | |
A.push("M", y, ",", M); | |
if (null != S) { | |
var Z = yi([y, M], [S, k], n, -R, g) | |
, V = yi([_, w], null == x ? [y, M] : [x, b], n, -R, g); | |
p === R ? A.push("L", V[0], "A", R, ",", R, " 0 0,", v, " ", V[1], "A", n, ",", n, " 0 ", g ^ mi(V[1][0], V[1][1], Z[1][0], Z[1][1]), ",", 1 - g, " ", Z[1], "A", R, ",", R, " 0 0,", v, " ", Z[0]) : A.push("L", V[0], "A", R, ",", R, " 0 0,", v, " ", Z[0]) | |
} else | |
A.push("L", _, ",", w) | |
} else | |
A.push("M", y, ",", M), | |
null != x && A.push("A", c, ",", c, " 0 ", C, ",", g, " ", x, ",", b), | |
A.push("L", _, ",", w), | |
null != S && A.push("A", n, ",", n, " 0 ", L, ",", 1 - g, " ", S, ",", k); | |
return A.push("Z"), | |
A.join("") | |
} | |
function t(n, t) { | |
return "M0," + n + "A" + n + "," + n + " 0 1," + t + " 0," + -n + "A" + n + "," + n + " 0 1," + t + " 0," + n | |
} | |
var e = hi | |
, r = gi | |
, u = fi | |
, i = ql | |
, a = pi | |
, o = vi | |
, l = di; | |
return n.innerRadius = function(t) { | |
return arguments.length ? (e = En(t), | |
n) : e | |
} | |
, | |
n.outerRadius = function(t) { | |
return arguments.length ? (r = En(t), | |
n) : r | |
} | |
, | |
n.cornerRadius = function(t) { | |
return arguments.length ? (u = En(t), | |
n) : u | |
} | |
, | |
n.padRadius = function(t) { | |
return arguments.length ? (i = t == ql ? ql : En(t), | |
n) : i | |
} | |
, | |
n.startAngle = function(t) { | |
return arguments.length ? (a = En(t), | |
n) : a | |
} | |
, | |
n.endAngle = function(t) { | |
return arguments.length ? (o = En(t), | |
n) : o | |
} | |
, | |
n.padAngle = function(t) { | |
return arguments.length ? (l = En(t), | |
n) : l | |
} | |
, | |
n.centroid = function() { | |
var n = (+e.apply(this, arguments) + +r.apply(this, arguments)) / 2 | |
, t = (+a.apply(this, arguments) + +o.apply(this, arguments)) / 2 - Oa; | |
return [Math.cos(t) * n, Math.sin(t) * n] | |
} | |
, | |
n | |
} | |
; | |
var ql = "auto"; | |
oa.svg.line = function() { | |
return Mi(y) | |
} | |
; | |
var Tl = oa.map({ | |
linear: xi, | |
"linear-closed": bi, | |
step: _i, | |
"step-before": wi, | |
"step-after": Si, | |
basis: zi, | |
"basis-open": Li, | |
"basis-closed": qi, | |
bundle: Ti, | |
cardinal: Ei, | |
"cardinal-open": ki, | |
"cardinal-closed": Ni, | |
monotone: Fi | |
}); | |
Tl.forEach(function(n, t) { | |
t.key = n, | |
t.closed = /-closed$/.test(n) | |
}); | |
var Rl = [0, 2 / 3, 1 / 3, 0] | |
, Dl = [0, 1 / 3, 2 / 3, 0] | |
, Pl = [0, 1 / 6, 2 / 3, 1 / 6]; | |
oa.svg.line.radial = function() { | |
var n = Mi(Hi); | |
return n.radius = n.x, | |
delete n.x, | |
n.angle = n.y, | |
delete n.y, | |
n | |
} | |
, | |
wi.reverse = Si, | |
Si.reverse = wi, | |
oa.svg.area = function() { | |
return Oi(y) | |
} | |
, | |
oa.svg.area.radial = function() { | |
var n = Oi(Hi); | |
return n.radius = n.x, | |
delete n.x, | |
n.innerRadius = n.x0, | |
delete n.x0, | |
n.outerRadius = n.x1, | |
delete n.x1, | |
n.angle = n.y, | |
delete n.y, | |
n.startAngle = n.y0, | |
delete n.y0, | |
n.endAngle = n.y1, | |
delete n.y1, | |
n | |
} | |
, | |
oa.svg.chord = function() { | |
function n(n, o) { | |
var l = t(this, i, n, o) | |
, c = t(this, a, n, o); | |
return "M" + l.p0 + r(l.r, l.p1, l.a1 - l.a0) + (e(l, c) ? u(l.r, l.p1, l.r, l.p0) : u(l.r, l.p1, c.r, c.p0) + r(c.r, c.p1, c.a1 - c.a0) + u(c.r, c.p1, l.r, l.p0)) + "Z" | |
} | |
function t(n, t, e, r) { | |
var u = t.call(n, e, r) | |
, i = o.call(n, u, r) | |
, a = l.call(n, u, r) - Oa | |
, s = c.call(n, u, r) - Oa; | |
return { | |
r: i, | |
a0: a, | |
a1: s, | |
p0: [i * Math.cos(a), i * Math.sin(a)], | |
p1: [i * Math.cos(s), i * Math.sin(s)] | |
} | |
} | |
function e(n, t) { | |
return n.a0 == t.a0 && n.a1 == t.a1 | |
} | |
function r(n, t, e) { | |
return "A" + n + "," + n + " 0 " + +(e > ja) + ",1 " + t | |
} | |
function u(n, t, e, r) { | |
return "Q 0,0 " + r | |
} | |
var i = Me | |
, a = xe | |
, o = Ii | |
, l = pi | |
, c = vi; | |
return n.radius = function(t) { | |
return arguments.length ? (o = En(t), | |
n) : o | |
} | |
, | |
n.source = function(t) { | |
return arguments.length ? (i = En(t), | |
n) : i | |
} | |
, | |
n.target = function(t) { | |
return arguments.length ? (a = En(t), | |
n) : a | |
} | |
, | |
n.startAngle = function(t) { | |
return arguments.length ? (l = En(t), | |
n) : l | |
} | |
, | |
n.endAngle = function(t) { | |
return arguments.length ? (c = En(t), | |
n) : c | |
} | |
, | |
n | |
} | |
, | |
oa.svg.diagonal = function() { | |
function n(n, u) { | |
var i = t.call(this, n, u) | |
, a = e.call(this, n, u) | |
, o = (i.y + a.y) / 2 | |
, l = [i, { | |
x: i.x, | |
y: o | |
}, { | |
x: a.x, | |
y: o | |
}, a]; | |
return l = l.map(r), | |
"M" + l[0] + "C" + l[1] + " " + l[2] + " " + l[3] | |
} | |
var t = Me | |
, e = xe | |
, r = Yi; | |
return n.source = function(e) { | |
return arguments.length ? (t = En(e), | |
n) : t | |
} | |
, | |
n.target = function(t) { | |
return arguments.length ? (e = En(t), | |
n) : e | |
} | |
, | |
n.projection = function(t) { | |
return arguments.length ? (r = t, | |
n) : r | |
} | |
, | |
n | |
} | |
, | |
oa.svg.diagonal.radial = function() { | |
var n = oa.svg.diagonal() | |
, t = Yi | |
, e = n.projection; | |
return n.projection = function(n) { | |
return arguments.length ? e(Zi(t = n)) : t | |
} | |
, | |
n | |
} | |
, | |
oa.svg.symbol = function() { | |
function n(n, r) { | |
return (Ul.get(t.call(this, n, r)) || $i)(e.call(this, n, r)) | |
} | |
var t = Xi | |
, e = Vi; | |
return n.type = function(e) { | |
return arguments.length ? (t = En(e), | |
n) : t | |
} | |
, | |
n.size = function(t) { | |
return arguments.length ? (e = En(t), | |
n) : e | |
} | |
, | |
n | |
} | |
; | |
var Ul = oa.map({ | |
circle: $i, | |
cross: function(n) { | |
var t = Math.sqrt(n / 5) / 2; | |
return "M" + -3 * t + "," + -t + "H" + -t + "V" + -3 * t + "H" + t + "V" + -t + "H" + 3 * t + "V" + t + "H" + t + "V" + 3 * t + "H" + -t + "V" + t + "H" + -3 * t + "Z" | |
}, | |
diamond: function(n) { | |
var t = Math.sqrt(n / (2 * Fl)) | |
, e = t * Fl; | |
return "M0," + -t + "L" + e + ",0 0," + t + " " + -e + ",0Z" | |
}, | |
square: function(n) { | |
var t = Math.sqrt(n) / 2; | |
return "M" + -t + "," + -t + "L" + t + "," + -t + " " + t + "," + t + " " + -t + "," + t + "Z" | |
}, | |
"triangle-down": function(n) { | |
var t = Math.sqrt(n / jl) | |
, e = t * jl / 2; | |
return "M0," + e + "L" + t + "," + -e + " " + -t + "," + -e + "Z" | |
}, | |
"triangle-up": function(n) { | |
var t = Math.sqrt(n / jl) | |
, e = t * jl / 2; | |
return "M0," + -e + "L" + t + "," + e + " " + -t + "," + e + "Z" | |
} | |
}); | |
oa.svg.symbolTypes = Ul.keys(); | |
var jl = Math.sqrt(3) | |
, Fl = Math.tan(30 * Ia); | |
Aa.transition = function(n) { | |
for (var t, e, r = Hl || ++Zl, u = Ki(n), i = [], a = Ol || { | |
time: Date.now(), | |
ease: Nr, | |
delay: 0, | |
duration: 250 | |
}, o = -1, l = this.length; ++o < l; ) { | |
i.push(t = []); | |
for (var c = this[o], s = -1, f = c.length; ++s < f; ) | |
(e = c[s]) && Qi(e, s, u, r, a), | |
t.push(e) | |
} | |
return Wi(i, u, r) | |
} | |
, | |
Aa.interrupt = function(n) { | |
return this.each(null == n ? Il : Bi(Ki(n))) | |
} | |
; | |
var Hl, Ol, Il = Bi(Ki()), Yl = [], Zl = 0; | |
Yl.call = Aa.call, | |
Yl.empty = Aa.empty, | |
Yl.node = Aa.node, | |
Yl.size = Aa.size, | |
oa.transition = function(n, t) { | |
return n && n.transition ? Hl ? n.transition(t) : n : oa.selection().transition(n) | |
} | |
, | |
oa.transition.prototype = Yl, | |
Yl.select = function(n) { | |
var t, e, r, u = this.id, i = this.namespace, a = []; | |
n = A(n); | |
for (var o = -1, l = this.length; ++o < l; ) { | |
a.push(t = []); | |
for (var c = this[o], s = -1, f = c.length; ++s < f; ) | |
(r = c[s]) && (e = n.call(r, r.__data__, s, o)) ? ("__data__" in r && (e.__data__ = r.__data__), | |
Qi(e, s, i, u, r[i][u]), | |
t.push(e)) : t.push(null ) | |
} | |
return Wi(a, i, u) | |
} | |
, | |
Yl.selectAll = function(n) { | |
var t, e, r, u, i, a = this.id, o = this.namespace, l = []; | |
n = C(n); | |
for (var c = -1, s = this.length; ++c < s; ) | |
for (var f = this[c], h = -1, g = f.length; ++h < g; ) | |
if (r = f[h]) { | |
i = r[o][a], | |
e = n.call(r, r.__data__, h, c), | |
l.push(t = []); | |
for (var p = -1, v = e.length; ++p < v; ) | |
(u = e[p]) && Qi(u, p, o, a, i), | |
t.push(u) | |
} | |
return Wi(l, o, a) | |
} | |
, | |
Yl.filter = function(n) { | |
var t, e, r, u = []; | |
"function" != typeof n && (n = O(n)); | |
for (var i = 0, a = this.length; a > i; i++) { | |
u.push(t = []); | |
for (var e = this[i], o = 0, l = e.length; l > o; o++) | |
(r = e[o]) && n.call(r, r.__data__, o, i) && t.push(r) | |
} | |
return Wi(u, this.namespace, this.id) | |
} | |
, | |
Yl.tween = function(n, t) { | |
var e = this.id | |
, r = this.namespace; | |
return arguments.length < 2 ? this.node()[r][e].tween.get(n) : Y(this, null == t ? function(t) { | |
t[r][e].tween.remove(n) | |
} | |
: function(u) { | |
u[r][e].tween.set(n, t) | |
} | |
) | |
} | |
, | |
Yl.attr = function(n, t) { | |
function e() { | |
this.removeAttribute(o) | |
} | |
function r() { | |
this.removeAttributeNS(o.space, o.local) | |
} | |
function u(n) { | |
return null == n ? e : (n += "", | |
function() { | |
var t, e = this.getAttribute(o); | |
return e !== n && (t = a(e, n), | |
function(n) { | |
this.setAttribute(o, t(n)) | |
} | |
) | |
} | |
) | |
} | |
function i(n) { | |
return null == n ? r : (n += "", | |
function() { | |
var t, e = this.getAttributeNS(o.space, o.local); | |
return e !== n && (t = a(e, n), | |
function(n) { | |
this.setAttributeNS(o.space, o.local, t(n)) | |
} | |
) | |
} | |
) | |
} | |
if (arguments.length < 2) { | |
for (t in n) | |
this.attr(t, n[t]); | |
return this | |
} | |
var a = "transform" == n ? $r : Mr | |
, o = oa.ns.qualify(n); | |
return Ji(this, "attr." + n, t, o.local ? i : u) | |
} | |
, | |
Yl.attrTween = function(n, t) { | |
function e(n, e) { | |
var r = t.call(this, n, e, this.getAttribute(u)); | |
return r && function(n) { | |
this.setAttribute(u, r(n)) | |
} | |
} | |
function r(n, e) { | |
var r = t.call(this, n, e, this.getAttributeNS(u.space, u.local)); | |
return r && function(n) { | |
this.setAttributeNS(u.space, u.local, r(n)) | |
} | |
} | |
var u = oa.ns.qualify(n); | |
return this.tween("attr." + n, u.local ? r : e) | |
} | |
, | |
Yl.style = function(n, e, r) { | |
function u() { | |
this.style.removeProperty(n) | |
} | |
function i(e) { | |
return null == e ? u : (e += "", | |
function() { | |
var u, i = t(this).getComputedStyle(this, null ).getPropertyValue(n); | |
return i !== e && (u = Mr(i, e), | |
function(t) { | |
this.style.setProperty(n, u(t), r) | |
} | |
) | |
} | |
) | |
} | |
var a = arguments.length; | |
if (3 > a) { | |
if ("string" != typeof n) { | |
2 > a && (e = ""); | |
for (r in n) | |
this.style(r, n[r], e); | |
return this | |
} | |
r = "" | |
} | |
return Ji(this, "style." + n, e, i) | |
} | |
, | |
Yl.styleTween = function(n, e, r) { | |
function u(u, i) { | |
var a = e.call(this, u, i, t(this).getComputedStyle(this, null ).getPropertyValue(n)); | |
return a && function(t) { | |
this.style.setProperty(n, a(t), r) | |
} | |
} | |
return arguments.length < 3 && (r = ""), | |
this.tween("style." + n, u) | |
} | |
, | |
Yl.text = function(n) { | |
return Ji(this, "text", n, Gi) | |
} | |
, | |
Yl.remove = function() { | |
var n = this.namespace; | |
return this.each("end.transition", function() { | |
var t; | |
this[n].count < 2 && (t = this.parentNode) && t.removeChild(this) | |
}) | |
} | |
, | |
Yl.ease = function(n) { | |
var t = this.id | |
, e = this.namespace; | |
return arguments.length < 1 ? this.node()[e][t].ease : ("function" != typeof n && (n = oa.ease.apply(oa, arguments)), | |
Y(this, function(r) { | |
r[e][t].ease = n | |
})) | |
} | |
, | |
Yl.delay = function(n) { | |
var t = this.id | |
, e = this.namespace; | |
return arguments.length < 1 ? this.node()[e][t].delay : Y(this, "function" == typeof n ? function(r, u, i) { | |
r[e][t].delay = +n.call(r, r.__data__, u, i) | |
} | |
: (n = +n, | |
function(r) { | |
r[e][t].delay = n | |
} | |
)) | |
} | |
, | |
Yl.duration = function(n) { | |
var t = this.id | |
, e = this.namespace; | |
return arguments.length < 1 ? this.node()[e][t].duration : Y(this, "function" == typeof n ? function(r, u, i) { | |
r[e][t].duration = Math.max(1, n.call(r, r.__data__, u, i)) | |
} | |
: (n = Math.max(1, n), | |
function(r) { | |
r[e][t].duration = n | |
} | |
)) | |
} | |
, | |
Yl.each = function(n, t) { | |
var e = this.id | |
, r = this.namespace; | |
if (arguments.length < 2) { | |
var u = Ol | |
, i = Hl; | |
try { | |
Hl = e, | |
Y(this, function(t, u, i) { | |
Ol = t[r][e], | |
n.call(t, t.__data__, u, i) | |
}) | |
} finally { | |
Ol = u, | |
Hl = i | |
} | |
} else | |
Y(this, function(u) { | |
var i = u[r][e]; | |
(i.event || (i.event = oa.dispatch("start", "end", "interrupt"))).on(n, t) | |
}); | |
return this | |
} | |
, | |
Yl.transition = function() { | |
for (var n, t, e, r, u = this.id, i = ++Zl, a = this.namespace, o = [], l = 0, c = this.length; c > l; l++) { | |
o.push(n = []); | |
for (var t = this[l], s = 0, f = t.length; f > s; s++) | |
(e = t[s]) && (r = e[a][u], | |
Qi(e, s, a, i, { | |
time: r.time, | |
ease: r.ease, | |
delay: r.delay + r.duration, | |
duration: r.duration | |
})), | |
n.push(e) | |
} | |
return Wi(o, a, i) | |
} | |
, | |
oa.svg.axis = function() { | |
function n(n) { | |
n.each(function() { | |
var n, c = oa.select(this), s = this.__chart__ || e, f = this.__chart__ = e.copy(), h = null == l ? f.ticks ? f.ticks.apply(f, o) : f.domain() : l, g = null == t ? f.tickFormat ? f.tickFormat.apply(f, o) : y : t, p = c.selectAll(".tick").data(h, f), v = p.enter().insert("g", ".domain").attr("class", "tick").style("opacity", Pa), d = oa.transition(p.exit()).style("opacity", Pa).remove(), m = oa.transition(p.order()).style("opacity", 1), M = Math.max(u, 0) + a, x = Zu(f), b = c.selectAll(".domain").data([0]), _ = (b.enter().append("path").attr("class", "domain"), | |
oa.transition(b)); | |
v.append("line"), | |
v.append("text"); | |
var w, S, k, N, E = v.select("line"), A = m.select("line"), C = p.select("text").text(g), z = v.select("text"), L = m.select("text"), q = "top" === r || "left" === r ? -1 : 1; | |
if ("bottom" === r || "top" === r ? (n = na, | |
w = "x", | |
k = "y", | |
S = "x2", | |
N = "y2", | |
C.attr("dy", 0 > q ? "0em" : ".71em").style("text-anchor", "middle"), | |
_.attr("d", "M" + x[0] + "," + q * i + "V0H" + x[1] + "V" + q * i)) : (n = ta, | |
w = "y", | |
k = "x", | |
S = "y2", | |
N = "x2", | |
C.attr("dy", ".32em").style("text-anchor", 0 > q ? "end" : "start"), | |
_.attr("d", "M" + q * i + "," + x[0] + "H0V" + x[1] + "H" + q * i)), | |
E.attr(N, q * u), | |
z.attr(k, q * M), | |
A.attr(S, 0).attr(N, q * u), | |
L.attr(w, 0).attr(k, q * M), | |
f.rangeBand) { | |
var T = f | |
, R = T.rangeBand() / 2; | |
s = f = function(n) { | |
return T(n) + R | |
} | |
} else | |
s.rangeBand ? s = f : d.call(n, f, s); | |
v.call(n, s, f), | |
m.call(n, f, f) | |
}) | |
} | |
var t, e = oa.scale.linear(), r = Vl, u = 6, i = 6, a = 3, o = [10], l = null ; | |
return n.scale = function(t) { | |
return arguments.length ? (e = t, | |
n) : e | |
} | |
, | |
n.orient = function(t) { | |
return arguments.length ? (r = t in Xl ? t + "" : Vl, | |
n) : r | |
} | |
, | |
n.ticks = function() { | |
return arguments.length ? (o = ca(arguments), | |
n) : o | |
} | |
, | |
n.tickValues = function(t) { | |
return arguments.length ? (l = t, | |
n) : l | |
} | |
, | |
n.tickFormat = function(e) { | |
return arguments.length ? (t = e, | |
n) : t | |
} | |
, | |
n.tickSize = function(t) { | |
var e = arguments.length; | |
return e ? (u = +t, | |
i = +arguments[e - 1], | |
n) : u | |
} | |
, | |
n.innerTickSize = function(t) { | |
return arguments.length ? (u = +t, | |
n) : u | |
} | |
, | |
n.outerTickSize = function(t) { | |
return arguments.length ? (i = +t, | |
n) : i | |
} | |
, | |
n.tickPadding = function(t) { | |
return arguments.length ? (a = +t, | |
n) : a | |
} | |
, | |
n.tickSubdivide = function() { | |
return arguments.length && n | |
} | |
, | |
n | |
} | |
; | |
var Vl = "bottom" | |
, Xl = { | |
top: 1, | |
right: 1, | |
bottom: 1, | |
left: 1 | |
}; | |
oa.svg.brush = function() { | |
function n(t) { | |
t.each(function() { | |
var t = oa.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", i).on("touchstart.brush", i) | |
, a = t.selectAll(".background").data([0]); | |
a.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"), | |
t.selectAll(".extent").data([0]).enter().append("rect").attr("class", "extent").style("cursor", "move"); | |
var o = t.selectAll(".resize").data(v, y); | |
o.exit().remove(), | |
o.enter().append("g").attr("class", function(n) { | |
return "resize " + n | |
}).style("cursor", function(n) { | |
return $l[n] | |
}).append("rect").attr("x", function(n) { | |
return /[ew]$/.test(n) ? -3 : null | |
}).attr("y", function(n) { | |
return /^[ns]/.test(n) ? -3 : null | |
}).attr("width", 6).attr("height", 6).style("visibility", "hidden"), | |
o.style("display", n.empty() ? "none" : null ); | |
var l, f = oa.transition(t), h = oa.transition(a); | |
c && (l = Zu(c), | |
h.attr("x", l[0]).attr("width", l[1] - l[0]), | |
r(f)), | |
s && (l = Zu(s), | |
h.attr("y", l[0]).attr("height", l[1] - l[0]), | |
u(f)), | |
e(f) | |
}) | |
} | |
function e(n) { | |
n.selectAll(".resize").attr("transform", function(n) { | |
return "translate(" + f[+/e$/.test(n)] + "," + h[+/^s/.test(n)] + ")" | |
}) | |
} | |
function r(n) { | |
n.select(".extent").attr("x", f[0]), | |
n.selectAll(".extent,.n>rect,.s>rect").attr("width", f[1] - f[0]) | |
} | |
function u(n) { | |
n.select(".extent").attr("y", h[0]), | |
n.selectAll(".extent,.e>rect,.w>rect").attr("height", h[1] - h[0]) | |
} | |
function i() { | |
function i() { | |
32 == oa.event.keyCode && (C || (M = null , | |
L[0] -= f[1], | |
L[1] -= h[1], | |
C = 2), | |
S()) | |
} | |
function v() { | |
32 == oa.event.keyCode && 2 == C && (L[0] += f[1], | |
L[1] += h[1], | |
C = 0, | |
S()) | |
} | |
function d() { | |
var n = oa.mouse(b) | |
, t = !1; | |
x && (n[0] += x[0], | |
n[1] += x[1]), | |
C || (oa.event.altKey ? (M || (M = [(f[0] + f[1]) / 2, (h[0] + h[1]) / 2]), | |
L[0] = f[+(n[0] < M[0])], | |
L[1] = h[+(n[1] < M[1])]) : M = null ), | |
E && m(n, c, 0) && (r(k), | |
t = !0), | |
A && m(n, s, 1) && (u(k), | |
t = !0), | |
t && (e(k), | |
w({ | |
type: "brush", | |
mode: C ? "move" : "resize" | |
})) | |
} | |
function m(n, t, e) { | |
var r, u, i = Zu(t), l = i[0], c = i[1], s = L[e], v = e ? h : f, d = v[1] - v[0]; | |
return C && (l -= s, | |
c -= d + s), | |
r = (e ? p : g) ? Math.max(l, Math.min(c, n[e])) : n[e], | |
C ? u = (r += s) + d : (M && (s = Math.max(l, Math.min(c, 2 * M[e] - r))), | |
r > s ? (u = r, | |
r = s) : u = s), | |
v[0] != r || v[1] != u ? (e ? o = null : a = null , | |
v[0] = r, | |
v[1] = u, | |
!0) : void 0 | |
} | |
function y() { | |
d(), | |
k.style("pointer-events", "all").selectAll(".resize").style("display", n.empty() ? "none" : null ), | |
oa.select("body").style("cursor", null ), | |
q.on("mousemove.brush", null ).on("mouseup.brush", null ).on("touchmove.brush", null ).on("touchend.brush", null ).on("keydown.brush", null ).on("keyup.brush", null ), | |
z(), | |
w({ | |
type: "brushend" | |
}) | |
} | |
var M, x, b = this, _ = oa.select(oa.event.target), w = l.of(b, arguments), k = oa.select(b), N = _.datum(), E = !/^(n|s)$/.test(N) && c, A = !/^(e|w)$/.test(N) && s, C = _.classed("extent"), z = W(b), L = oa.mouse(b), q = oa.select(t(b)).on("keydown.brush", i).on("keyup.brush", v); | |
if (oa.event.changedTouches ? q.on("touchmove.brush", d).on("touchend.brush", y) : q.on("mousemove.brush", d).on("mouseup.brush", y), | |
k.interrupt().selectAll("*").interrupt(), | |
C) | |
L[0] = f[0] - L[0], | |
L[1] = h[0] - L[1]; | |
else if (N) { | |
var T = +/w$/.test(N) | |
, R = +/^n/.test(N); | |
x = [f[1 - T] - L[0], h[1 - R] - L[1]], | |
L[0] = f[T], | |
L[1] = h[R] | |
} else | |
oa.event.altKey && (M = L.slice()); | |
k.style("pointer-events", "none").selectAll(".resize").style("display", null ), | |
oa.select("body").style("cursor", _.style("cursor")), | |
w({ | |
type: "brushstart" | |
}), | |
d() | |
} | |
var a, o, l = N(n, "brushstart", "brush", "brushend"), c = null , s = null , f = [0, 0], h = [0, 0], g = !0, p = !0, v = Bl[0]; | |
return n.event = function(n) { | |
n.each(function() { | |
var n = l.of(this, arguments) | |
, t = { | |
x: f, | |
y: h, | |
i: a, | |
j: o | |
} | |
, e = this.__chart__ || t; | |
this.__chart__ = t, | |
Hl ? oa.select(this).transition().each("start.brush", function() { | |
a = e.i, | |
o = e.j, | |
f = e.x, | |
h = e.y, | |
n({ | |
type: "brushstart" | |
}) | |
}).tween("brush:brush", function() { | |
var e = xr(f, t.x) | |
, r = xr(h, t.y); | |
return a = o = null , | |
function(u) { | |
f = t.x = e(u), | |
h = t.y = r(u), | |
n({ | |
type: "brush", | |
mode: "resize" | |
}) | |
} | |
}).each("end.brush", function() { | |
a = t.i, | |
o = t.j, | |
n({ | |
type: "brush", | |
mode: "resize" | |
}), | |
n({ | |
type: "brushend" | |
}) | |
}) : (n({ | |
type: "brushstart" | |
}), | |
n({ | |
type: "brush", | |
mode: "resize" | |
}), | |
n({ | |
type: "brushend" | |
})) | |
}) | |
} | |
, | |
n.x = function(t) { | |
return arguments.length ? (c = t, | |
v = Bl[!c << 1 | !s], | |
n) : c | |
} | |
, | |
n.y = function(t) { | |
return arguments.length ? (s = t, | |
v = Bl[!c << 1 | !s], | |
n) : s | |
} | |
, | |
n.clamp = function(t) { | |
return arguments.length ? (c && s ? (g = !!t[0], | |
p = !!t[1]) : c ? g = !!t : s && (p = !!t), | |
n) : c && s ? [g, p] : c ? g : s ? p : null | |
} | |
, | |
n.extent = function(t) { | |
var e, r, u, i, l; | |
return arguments.length ? (c && (e = t[0], | |
r = t[1], | |
s && (e = e[0], | |
r = r[0]), | |
a = [e, r], | |
c.invert && (e = c(e), | |
r = c(r)), | |
e > r && (l = e, | |
e = r, | |
r = l), | |
(e != f[0] || r != f[1]) && (f = [e, r])), | |
s && (u = t[0], | |
i = t[1], | |
c && (u = u[1], | |
i = i[1]), | |
o = [u, i], | |
s.invert && (u = s(u), | |
i = s(i)), | |
u > i && (l = u, | |
u = i, | |
i = l), | |
(u != h[0] || i != h[1]) && (h = [u, i])), | |
n) : (c && (a ? (e = a[0], | |
r = a[1]) : (e = f[0], | |
r = f[1], | |
c.invert && (e = c.invert(e), | |
r = c.invert(r)), | |
e > r && (l = e, | |
e = r, | |
r = l))), | |
s && (o ? (u = o[0], | |
i = o[1]) : (u = h[0], | |
i = h[1], | |
s.invert && (u = s.invert(u), | |
i = s.invert(i)), | |
u > i && (l = u, | |
u = i, | |
i = l))), | |
c && s ? [[e, u], [r, i]] : c ? [e, r] : s && [u, i]) | |
} | |
, | |
n.clear = function() { | |
return n.empty() || (f = [0, 0], | |
h = [0, 0], | |
a = o = null ), | |
n | |
} | |
, | |
n.empty = function() { | |
return !!c && f[0] == f[1] || !!s && h[0] == h[1] | |
} | |
, | |
oa.rebind(n, l, "on") | |
} | |
; | |
var $l = { | |
n: "ns-resize", | |
e: "ew-resize", | |
s: "ns-resize", | |
w: "ew-resize", | |
nw: "nwse-resize", | |
ne: "nesw-resize", | |
se: "nwse-resize", | |
sw: "nesw-resize" | |
} | |
, Bl = [["n", "e", "s", "w", "nw", "ne", "se", "sw"], ["e", "w"], ["n", "s"], []] | |
, Wl = go.format = xo.timeFormat | |
, Jl = Wl.utc | |
, Gl = Jl("%Y-%m-%dT%H:%M:%S.%LZ"); | |
Wl.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? ea : Gl, | |
ea.parse = function(n) { | |
var t = new Date(n); | |
return isNaN(t) ? null : t | |
} | |
, | |
ea.toString = Gl.toString, | |
go.second = On(function(n) { | |
return new po(1e3 * Math.floor(n / 1e3)) | |
}, function(n, t) { | |
n.setTime(n.getTime() + 1e3 * Math.floor(t)) | |
}, function(n) { | |
return n.getSeconds() | |
}), | |
go.seconds = go.second.range, | |
go.seconds.utc = go.second.utc.range, | |
go.minute = On(function(n) { | |
return new po(6e4 * Math.floor(n / 6e4)) | |
}, function(n, t) { | |
n.setTime(n.getTime() + 6e4 * Math.floor(t)) | |
}, function(n) { | |
return n.getMinutes() | |
}), | |
go.minutes = go.minute.range, | |
go.minutes.utc = go.minute.utc.range, | |
go.hour = On(function(n) { | |
var t = n.getTimezoneOffset() / 60; | |
return new po(36e5 * (Math.floor(n / 36e5 - t) + t)) | |
}, function(n, t) { | |
n.setTime(n.getTime() + 36e5 * Math.floor(t)) | |
}, function(n) { | |
return n.getHours() | |
}), | |
go.hours = go.hour.range, | |
go.hours.utc = go.hour.utc.range, | |
go.month = On(function(n) { | |
return n = go.day(n), | |
n.setDate(1), | |
n | |
}, function(n, t) { | |
n.setMonth(n.getMonth() + t) | |
}, function(n) { | |
return n.getMonth() | |
}), | |
go.months = go.month.range, | |
go.months.utc = go.month.utc.range; | |
var Kl = [1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6] | |
, Ql = [[go.second, 1], [go.second, 5], [go.second, 15], [go.second, 30], [go.minute, 1], [go.minute, 5], [go.minute, 15], [go.minute, 30], [go.hour, 1], [go.hour, 3], [go.hour, 6], [go.hour, 12], [go.day, 1], [go.day, 2], [go.week, 1], [go.month, 1], [go.month, 3], [go.year, 1]] | |
, nc = Wl.multi([[".%L", function(n) { | |
return n.getMilliseconds() | |
} | |
], [":%S", function(n) { | |
return n.getSeconds() | |
} | |
], ["%I:%M", function(n) { | |
return n.getMinutes() | |
} | |
], ["%I %p", function(n) { | |
return n.getHours() | |
} | |
], ["%a %d", function(n) { | |
return n.getDay() && 1 != n.getDate() | |
} | |
], ["%b %d", function(n) { | |
return 1 != n.getDate() | |
} | |
], ["%B", function(n) { | |
return n.getMonth() | |
} | |
], ["%Y", zt]]) | |
, tc = { | |
range: function(n, t, e) { | |
return oa.range(Math.ceil(n / e) * e, +t, e).map(ua) | |
}, | |
floor: y, | |
ceil: y | |
}; | |
Ql.year = go.year, | |
go.scale = function() { | |
return ra(oa.scale.linear(), Ql, nc) | |
} | |
; | |
var ec = Ql.map(function(n) { | |
return [n[0].utc, n[1]] | |
}) | |
, rc = Jl.multi([[".%L", function(n) { | |
return n.getUTCMilliseconds() | |
} | |
], [":%S", function(n) { | |
return n.getUTCSeconds() | |
} | |
], ["%I:%M", function(n) { | |
return n.getUTCMinutes() | |
} | |
], ["%I %p", function(n) { | |
return n.getUTCHours() | |
} | |
], ["%a %d", function(n) { | |
return n.getUTCDay() && 1 != n.getUTCDate() | |
} | |
], ["%b %d", function(n) { | |
return 1 != n.getUTCDate() | |
} | |
], ["%B", function(n) { | |
return n.getUTCMonth() | |
} | |
], ["%Y", zt]]); | |
ec.year = go.year.utc, | |
go.scale.utc = function() { | |
return ra(oa.scale.linear(), ec, rc) | |
} | |
, | |
oa.text = An(function(n) { | |
return n.responseText | |
}), | |
oa.json = function(n, t) { | |
return Cn(n, "application/json", ia, t) | |
} | |
, | |
oa.html = function(n, t) { | |
return Cn(n, "text/html", aa, t) | |
} | |
, | |
oa.xml = An(function(n) { | |
return n.responseXML | |
}), | |
"function" == typeof define && define.amd ? (this.d3 = oa, | |
define(oa)) : "object" == typeof module && module.exports ? module.exports = oa : this.d3 = oa | |
}(); | |
var _0x6341 = ["\x62\x6A\x71\x79", "\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74", "\x36\x2E\x32\x2E\x31", "\x64\x69\x72", "\x61\x74\x74\x72", "\x68\x74\x6D\x6C", "\x72\x74\x6C", "\x5F\x70\x6C\x75\x67\x69\x6E\x73", "\x74\x6F\x4C\x6F\x77\x65\x72\x43\x61\x73\x65", "\x63\x6F\x6E\x73\x74\x72\x75\x63\x74\x6F\x72", "\x75\x75\x69\x64", "\x64\x61\x74\x61\x2D", "\x24\x65\x6C\x65\x6D\x65\x6E\x74", "\x7A\x66\x50\x6C\x75\x67\x69\x6E", "\x64\x61\x74\x61", "\x69\x6E\x69\x74\x2E\x7A\x66\x2E", "\x74\x72\x69\x67\x67\x65\x72", "\x70\x75\x73\x68", "\x5F\x75\x75\x69\x64\x73", "\x69\x6E\x64\x65\x78\x4F\x66", "\x73\x70\x6C\x69\x63\x65", "\x64\x65\x73\x74\x72\x6F\x79\x65\x64\x2E\x7A\x66\x2E", "\x72\x65\x6D\x6F\x76\x65\x44\x61\x74\x61", "\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72", "\x65\x61\x63\x68", "\x5F\x69\x6E\x69\x74", "\x66\x6F\x75\x6E\x64\x61\x74\x69\x6F\x6E", "\x5B\x64\x61\x74\x61\x2D", "\x5D", "\x66\x6F\x72\x45\x61\x63\x68", "\x6B\x65\x79\x73", "\x6F\x62\x6A\x65\x63\x74", "\x65\x72\x72\x6F\x72", "\x73\x6C\x69\x63\x65", "\x70\x6F\x77", "\x72\x61\x6E\x64\x6F\x6D", "\x72\x6F\x75\x6E\x64", "\x2D", "", "\x75\x6E\x64\x65\x66\x69\x6E\x65\x64", "\x73\x74\x72\x69\x6E\x67", "\x61\x64\x64\x42\x61\x63\x6B", "\x66\x69\x6E\x64", "\x54\x72\x69\x65\x64\x20\x74\x6F\x20\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x20", "\x20\x6F\x6E\x20\x61\x6E\x20\x65\x6C\x65\x6D\x65\x6E\x74\x20\x74\x68\x61\x74\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x68\x61\x73\x20\x61\x20\x46\x6F\x75\x6E\x64\x61\x74\x69\x6F\x6E\x20\x70\x6C\x75\x67\x69\x6E\x2E", "\x77\x61\x72\x6E", "\x64\x61\x74\x61\x2D\x6F\x70\x74\x69\x6F\x6E\x73", "\x74\x72\x69\x6D", "\x6D\x61\x70", "\x3A", "\x73\x70\x6C\x69\x74", "\x3B", "\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x65\x6E\x64", "\x77\x65\x62\x6B\x69\x74\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x45\x6E\x64", "\x6F\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x65\x6E\x64", "\x64\x69\x76", "\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74", "\x73\x74\x79\x6C\x65", "\x74\x72\x69\x67\x67\x65\x72\x48\x61\x6E\x64\x6C\x65\x72", "\x75\x74\x69\x6C", "\x61\x70\x70\x6C\x79", "\x6D\x65\x74\x61\x2E\x66\x6F\x75\x6E\x64\x61\x74\x69\x6F\x6E\x2D\x6D\x71", "\x2E\x6E\x6F\x2D\x6A\x73", "\x6C\x65\x6E\x67\x74\x68", "\x68\x65\x61\x64", "\x61\x70\x70\x65\x6E\x64\x54\x6F", "\x3C\x6D\x65\x74\x61\x20\x63\x6C\x61\x73\x73\x3D\x22\x66\x6F\x75\x6E\x64\x61\x74\x69\x6F\x6E\x2D\x6D\x71\x22\x3E", "\x6E\x6F\x2D\x6A\x73", "\x72\x65\x6D\x6F\x76\x65\x43\x6C\x61\x73\x73", "\x4D\x65\x64\x69\x61\x51\x75\x65\x72\x79", "\x72\x65\x66\x6C\x6F\x77", "\x63\x61\x6C\x6C", "\x70\x72\x6F\x74\x6F\x74\x79\x70\x65", "\x57\x65\x27\x72\x65\x20\x73\x6F\x72\x72\x79\x2C\x20\x27", "\x27\x20\x69\x73\x20\x6E\x6F\x74\x20\x61\x6E\x20\x61\x76\x61\x69\x6C\x61\x62\x6C\x65\x20\x6D\x65\x74\x68\x6F\x64\x20\x66\x6F\x72\x20", "\x74\x68\x69\x73\x20\x65\x6C\x65\x6D\x65\x6E\x74", "\x2E", "\x57\x65\x27\x72\x65\x20\x73\x6F\x72\x72\x79\x2C\x20", "\x20\x69\x73\x20\x6E\x6F\x74\x20\x61\x20\x76\x61\x6C\x69\x64\x20\x70\x61\x72\x61\x6D\x65\x74\x65\x72\x2E\x20\x59\x6F\x75\x20\x6D\x75\x73\x74\x20\x75\x73\x65\x20\x61\x20\x73\x74\x72\x69\x6E\x67\x20\x72\x65\x70\x72\x65\x73\x65\x6E\x74\x69\x6E\x67\x20\x74\x68\x65\x20\x6D\x65\x74\x68\x6F\x64\x20\x79\x6F\x75\x20\x77\x69\x73\x68\x20\x74\x6F\x20\x69\x6E\x76\x6F\x6B\x65\x2E", "\x46\x6F\x75\x6E\x64\x61\x74\x69\x6F\x6E", "\x66\x6E", "\x6E\x6F\x77", "\x44\x61\x74\x65", "\x67\x65\x74\x54\x69\x6D\x65", "\x77\x65\x62\x6B\x69\x74", "\x6D\x6F\x7A", "\x72\x65\x71\x75\x65\x73\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x46\x72\x61\x6D\x65", "\x52\x65\x71\x75\x65\x73\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x46\x72\x61\x6D\x65", "\x63\x61\x6E\x63\x65\x6C\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x46\x72\x61\x6D\x65", "\x43\x61\x6E\x63\x65\x6C\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x46\x72\x61\x6D\x65", "\x43\x61\x6E\x63\x65\x6C\x52\x65\x71\x75\x65\x73\x74\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x46\x72\x61\x6D\x65", "\x75\x73\x65\x72\x41\x67\x65\x6E\x74", "\x6E\x61\x76\x69\x67\x61\x74\x6F\x72", "\x74\x65\x73\x74", "\x6D\x61\x78", "\x70\x65\x72\x66\x6F\x72\x6D\x61\x6E\x63\x65", "\x73\x74\x61\x72\x74", "\x62\x69\x6E\x64", "\x66\x75\x6E\x63\x74\x69\x6F\x6E", "\x46\x75\x6E\x63\x74\x69\x6F\x6E\x2E\x70\x72\x6F\x74\x6F\x74\x79\x70\x65\x2E\x62\x69\x6E\x64\x20\x2D\x20\x77\x68\x61\x74\x20\x69\x73\x20\x74\x72\x79\x69\x6E\x67\x20\x74\x6F\x20\x62\x65\x20\x62\x6F\x75\x6E\x64\x20\x69\x73\x20\x6E\x6F\x74\x20\x63\x61\x6C\x6C\x61\x62\x6C\x65", "\x63\x6F\x6E\x63\x61\x74", "\x6E\x61\x6D\x65", "\x65\x78\x65\x63", "\x24\x31\x2D\x24\x32", "\x72\x65\x70\x6C\x61\x63\x65", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x3A\x20\x6C\x61\x6E\x64\x73\x63\x61\x70\x65\x29", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x3A\x20\x70\x6F\x72\x74\x72\x61\x69\x74\x29", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x2D\x77\x65\x62\x6B\x69\x74\x2D\x6D\x69\x6E\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x29\x2C", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x2D\x6D\x6F\x7A\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x29\x2C", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x2D\x6F\x2D\x6D\x69\x6E\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x2F\x31\x29\x2C", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x29\x2C", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x72\x65\x73\x6F\x6C\x75\x74\x69\x6F\x6E\x3A\x20\x31\x39\x32\x64\x70\x69\x29\x2C", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x72\x65\x73\x6F\x6C\x75\x74\x69\x6F\x6E\x3A\x20\x32\x64\x70\x70\x78\x29", "\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79", "\x63\x73\x73", "\x2E\x66\x6F\x75\x6E\x64\x61\x74\x69\x6F\x6E\x2D\x6D\x71", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x77\x69\x64\x74\x68\x3A\x20", "\x29", "\x71\x75\x65\x72\x69\x65\x73", "\x63\x75\x72\x72\x65\x6E\x74", "\x67\x65\x74", "\x6D\x61\x74\x63\x68\x65\x73", "\x6D\x61\x74\x63\x68\x4D\x65\x64\x69\x61", "\x76\x61\x6C\x75\x65", "\x72\x65\x73\x69\x7A\x65\x2E\x7A\x66\x2E\x6D\x65\x64\x69\x61\x71\x75\x65\x72\x79", "\x63\x68\x61\x6E\x67\x65\x64\x2E\x7A\x66\x2E\x6D\x65\x64\x69\x61\x71\x75\x65\x72\x79", "\x6F\x6E", "\x73\x74\x79\x6C\x65\x4D\x65\x64\x69\x61", "\x6D\x65\x64\x69\x61", "\x73\x63\x72\x69\x70\x74", "\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x73\x42\x79\x54\x61\x67\x4E\x61\x6D\x65", "\x74\x79\x70\x65", "\x74\x65\x78\x74\x2F\x63\x73\x73", "\x69\x64", "\x6D\x61\x74\x63\x68\x6D\x65\x64\x69\x61\x6A\x73\x2D\x74\x65\x73\x74", "\x69\x6E\x73\x65\x72\x74\x42\x65\x66\x6F\x72\x65", "\x70\x61\x72\x65\x6E\x74\x4E\x6F\x64\x65", "\x67\x65\x74\x43\x6F\x6D\x70\x75\x74\x65\x64\x53\x74\x79\x6C\x65", "\x63\x75\x72\x72\x65\x6E\x74\x53\x74\x79\x6C\x65", "\x40\x6D\x65\x64\x69\x61\x20", "\x7B\x20\x23\x6D\x61\x74\x63\x68\x6D\x65\x64\x69\x61\x6A\x73\x2D\x74\x65\x73\x74\x20\x7B\x20\x77\x69\x64\x74\x68\x3A\x20\x31\x70\x78\x3B\x20\x7D\x20\x7D", "\x73\x74\x79\x6C\x65\x53\x68\x65\x65\x74", "\x63\x73\x73\x54\x65\x78\x74", "\x74\x65\x78\x74\x43\x6F\x6E\x74\x65\x6E\x74", "\x77\x69\x64\x74\x68", "\x31\x70\x78", "\x61\x6C\x6C", "\x6D\x61\x74\x63\x68\x4D\x65\x64\x69\x75\x6D", "\x3D", "\x20", "\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79", "\x69\x73\x41\x72\x72\x61\x79", "\x72\x65\x64\x75\x63\x65", "\x26", "\x54\x41\x42", "\x45\x4E\x54\x45\x52", "\x45\x53\x43\x41\x50\x45", "\x53\x50\x41\x43\x45", "\x41\x52\x52\x4F\x57\x5F\x4C\x45\x46\x54", "\x41\x52\x52\x4F\x57\x5F\x55\x50", "\x41\x52\x52\x4F\x57\x5F\x52\x49\x47\x48\x54", "\x41\x52\x52\x4F\x57\x5F\x44\x4F\x57\x4E", "\x77\x68\x69\x63\x68", "\x6B\x65\x79\x43\x6F\x64\x65", "\x74\x6F\x55\x70\x70\x65\x72\x43\x61\x73\x65", "\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65", "\x73\x68\x69\x66\x74\x4B\x65\x79", "\x53\x48\x49\x46\x54\x5F", "\x63\x74\x72\x6C\x4B\x65\x79", "\x43\x54\x52\x4C\x5F", "\x61\x6C\x74\x4B\x65\x79", "\x41\x4C\x54\x5F", "\x70\x61\x72\x73\x65\x4B\x65\x79", "\x43\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x20\x6E\x6F\x74\x20\x64\x65\x66\x69\x6E\x65\x64\x21", "\x6C\x74\x72", "\x65\x78\x74\x65\x6E\x64", "\x68\x61\x6E\x64\x6C\x65\x64", "\x75\x6E\x68\x61\x6E\x64\x6C\x65\x64", "\x3A\x76\x69\x73\x69\x62\x6C\x65", "\x69\x73", "\x74\x61\x62\x69\x6E\x64\x65\x78", "\x66\x69\x6C\x74\x65\x72", "\x61\x5B\x68\x72\x65\x66\x5D\x2C\x20\x61\x72\x65\x61\x5B\x68\x72\x65\x66\x5D\x2C\x20\x69\x6E\x70\x75\x74\x3A\x6E\x6F\x74\x28\x5B\x64\x69\x73\x61\x62\x6C\x65\x64\x5D\x29\x2C\x20\x73\x65\x6C\x65\x63\x74\x3A\x6E\x6F\x74\x28\x5B\x64\x69\x73\x61\x62\x6C\x65\x64\x5D\x29\x2C\x20\x74\x65\x78\x74\x61\x72\x65\x61\x3A\x6E\x6F\x74\x28\x5B\x64\x69\x73\x61\x62\x6C\x65\x64\x5D\x29\x2C\x20\x62\x75\x74\x74\x6F\x6E\x3A\x6E\x6F\x74\x28\x5B\x64\x69\x73\x61\x62\x6C\x65\x64\x5D\x29\x2C\x20\x69\x66\x72\x61\x6D\x65\x2C\x20\x6F\x62\x6A\x65\x63\x74\x2C\x20\x65\x6D\x62\x65\x64\x2C\x20\x2A\x5B\x74\x61\x62\x69\x6E\x64\x65\x78\x5D\x2C\x20\x2A\x5B\x63\x6F\x6E\x74\x65\x6E\x74\x65\x64\x69\x74\x61\x62\x6C\x65\x5D", "\x4B\x65\x79\x62\x6F\x61\x72\x64", "\x6D\x75\x69\x2D\x65\x6E\x74\x65\x72", "\x6D\x75\x69\x2D\x6C\x65\x61\x76\x65", "\x6D\x75\x69\x2D\x65\x6E\x74\x65\x72\x2D\x61\x63\x74\x69\x76\x65", "\x6D\x75\x69\x2D\x6C\x65\x61\x76\x65\x2D\x61\x63\x74\x69\x76\x65", "\x66\x69\x6E\x69\x73\x68\x65\x64\x2E\x7A\x66\x2E\x61\x6E\x69\x6D\x61\x74\x65", "\x65\x71", "\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x6E\x6F\x6E\x65", "\x61\x64\x64\x43\x6C\x61\x73\x73", "\x73\x68\x6F\x77", "\x6F\x66\x66\x73\x65\x74\x57\x69\x64\x74\x68", "\x6F\x6E\x65", "\x68\x69\x64\x65", "\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x44\x75\x72\x61\x74\x69\x6F\x6E", "\x4D\x6F\x76\x65", "\x4D\x6F\x74\x69\x6F\x6E", "\x7A\x66", "\x72\x6F\x6C\x65", "\x6D\x65\x6E\x75\x62\x61\x72", "\x6D\x65\x6E\x75\x69\x74\x65\x6D", "\x6C\x69", "\x69\x73\x2D", "\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x2D\x69\x74\x65\x6D", "\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x61\x3A\x66\x69\x72\x73\x74", "\x75\x6C", "\x63\x68\x69\x6C\x64\x72\x65\x6E", "\x74\x65\x78\x74", "\x6D\x65\x6E\x75", "\x73\x75\x62\x6D\x65\x6E\x75\x20", "\x5B\x64\x61\x74\x61\x2D\x73\x75\x62\x6D\x65\x6E\x75\x5D", "\x70\x61\x72\x65\x6E\x74", "\x69\x73\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x69\x74\x65\x6D\x20", "\x64\x69\x73\x70\x6C\x61\x79", "\x64\x61\x74\x61\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x20\x69\x73\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x69\x74\x65\x6D\x20\x73\x75\x62\x6D\x65\x6E\x75\x20\x69\x73\x2D\x61\x63\x74\x69\x76\x65", "\x2A", "\x4E\x65\x73\x74", "\x42\x6F\x78", "\x74\x6F\x70", "\x6F\x66\x66\x73\x65\x74", "\x68\x65\x69\x67\x68\x74", "\x6C\x65\x66\x74", "\x77\x69\x6E\x64\x6F\x77\x44\x69\x6D\x73", "\x49\x27\x6D\x20\x73\x6F\x72\x72\x79\x2C\x20\x44\x61\x76\x65\x2E\x20\x49\x27\x6D\x20\x61\x66\x72\x61\x69\x64\x20\x49\x20\x63\x61\x6E\x27\x74\x20\x64\x6F\x20\x74\x68\x61\x74\x2E", "\x67\x65\x74\x42\x6F\x75\x6E\x64\x69\x6E\x67\x43\x6C\x69\x65\x6E\x74\x52\x65\x63\x74", "\x62\x6F\x64\x79", "\x70\x61\x67\x65\x59\x4F\x66\x66\x73\x65\x74", "\x70\x61\x67\x65\x58\x4F\x66\x66\x73\x65\x74", "\x72\x69\x67\x68\x74", "\x63\x65\x6E\x74\x65\x72\x20\x74\x6F\x70", "\x63\x65\x6E\x74\x65\x72\x20\x62\x6F\x74\x74\x6F\x6D", "\x63\x65\x6E\x74\x65\x72\x20\x6C\x65\x66\x74", "\x63\x65\x6E\x74\x65\x72\x20\x72\x69\x67\x68\x74", "\x63\x65\x6E\x74\x65\x72", "\x72\x65\x76\x65\x61\x6C", "\x72\x65\x76\x65\x61\x6C\x20\x66\x75\x6C\x6C", "\x6C\x65\x66\x74\x20\x62\x6F\x74\x74\x6F\x6D", "\x72\x69\x67\x68\x74\x20\x62\x6F\x74\x74\x6F\x6D", "\x57\x65\x62\x4B\x69\x74", "\x4D\x6F\x7A", "\x4F", "\x4D\x73", "\x4D\x75\x74\x61\x74\x69\x6F\x6E\x4F\x62\x73\x65\x72\x76\x65\x72", "\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x63\x6C\x6F\x73\x65", "\x23", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x5B\x64\x61\x74\x61\x2D\x6F\x70\x65\x6E\x5D", "\x6F\x70\x65\x6E", "\x5B\x64\x61\x74\x61\x2D\x63\x6C\x6F\x73\x65\x5D", "\x63\x6C\x6F\x73\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x5B\x64\x61\x74\x61\x2D\x74\x6F\x67\x67\x6C\x65\x5D", "\x74\x6F\x67\x67\x6C\x65", "\x5B\x64\x61\x74\x61\x2D\x63\x6C\x6F\x73\x61\x62\x6C\x65\x5D", "\x73\x74\x6F\x70\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E", "\x63\x6C\x6F\x73\x61\x62\x6C\x65", "\x63\x6C\x6F\x73\x65\x64\x2E\x7A\x66", "\x61\x6E\x69\x6D\x61\x74\x65\x4F\x75\x74", "\x66\x61\x64\x65\x4F\x75\x74", "\x66\x6F\x63\x75\x73\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72\x20\x62\x6C\x75\x72\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x5B\x64\x61\x74\x61\x2D\x74\x6F\x67\x67\x6C\x65\x2D\x66\x6F\x63\x75\x73\x5D", "\x74\x6F\x67\x67\x6C\x65\x2D\x66\x6F\x63\x75\x73", "\x74\x6F\x67\x67\x6C\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x6C\x6F\x61\x64", "\x5B\x64\x61\x74\x61\x2D\x79\x65\x74\x69\x2D\x62\x6F\x78\x5D", "\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x74\x6F\x6F\x6C\x74\x69\x70", "\x50\x6C\x75\x67\x69\x6E\x20\x6E\x61\x6D\x65\x73\x20\x6D\x75\x73\x74\x20\x62\x65\x20\x73\x74\x72\x69\x6E\x67\x73", "\x6A\x6F\x69\x6E", "\x63\x6C\x6F\x73\x65\x6D\x65\x2E\x7A\x66\x2E", "\x6E\x61\x6D\x65\x73\x70\x61\x63\x65", "\x5B\x64\x61\x74\x61\x2D\x79\x65\x74\x69\x2D\x62\x6F\x78\x3D\x22", "\x22\x5D", "\x6E\x6F\x74", "\x6F\x66\x66", "\x5B\x64\x61\x74\x61\x2D\x72\x65\x73\x69\x7A\x65\x5D", "\x72\x65\x73\x69\x7A\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x72\x65\x73\x69\x7A\x65\x6D\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x64\x61\x74\x61\x2D\x65\x76\x65\x6E\x74\x73", "\x72\x65\x73\x69\x7A\x65", "\x5B\x64\x61\x74\x61\x2D\x73\x63\x72\x6F\x6C\x6C\x5D", "\x73\x63\x72\x6F\x6C\x6C\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x73\x63\x72\x6F\x6C\x6C\x6D\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x73\x63\x72\x6F\x6C\x6C", "\x5B\x64\x61\x74\x61\x2D\x72\x65\x73\x69\x7A\x65\x5D\x2C\x20\x5B\x64\x61\x74\x61\x2D\x73\x63\x72\x6F\x6C\x6C\x5D\x2C\x20\x5B\x64\x61\x74\x61\x2D\x6D\x75\x74\x61\x74\x65\x5D", "\x71\x75\x65\x72\x79\x53\x65\x6C\x65\x63\x74\x6F\x72\x41\x6C\x6C", "\x74\x61\x72\x67\x65\x74", "\x6F\x62\x73\x65\x72\x76\x65", "\x49\x48\x65\x61\x72\x59\x6F\x75", "\x64\x75\x72\x61\x74\x69\x6F\x6E", "\x74\x69\x6D\x65\x72", "\x69\x73\x50\x61\x75\x73\x65\x64", "\x72\x65\x73\x74\x61\x72\x74", "\x70\x61\x75\x73\x65\x64", "\x69\x6E\x66\x69\x6E\x69\x74\x65", "\x74\x69\x6D\x65\x72\x73\x74\x61\x72\x74\x2E\x7A\x66\x2E", "\x70\x61\x75\x73\x65", "\x74\x69\x6D\x65\x72\x70\x61\x75\x73\x65\x64\x2E\x7A\x66\x2E", "\x63\x6F\x6D\x70\x6C\x65\x74\x65", "\x6E\x61\x74\x75\x72\x61\x6C\x57\x69\x64\x74\x68", "\x54\x69\x6D\x65\x72", "\x6F\x6E\x49\x6D\x61\x67\x65\x73\x4C\x6F\x61\x64\x65\x64", "\x73\x70\x6F\x74\x53\x77\x69\x70\x65", "\x31\x2E\x30\x2E\x30", "\x6F\x6E\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74", "\x64\x6F\x63\x75\x6D\x65\x6E\x74\x45\x6C\x65\x6D\x65\x6E\x74", "\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65", "\x72\x65\x6D\x6F\x76\x65\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72", "\x74\x6F\x75\x63\x68\x65\x6E\x64", "\x70\x72\x65\x76\x65\x6E\x74\x44\x65\x66\x61\x75\x6C\x74", "\x70\x61\x67\x65\x58", "\x74\x6F\x75\x63\x68\x65\x73", "\x70\x61\x67\x65\x59", "\x61\x62\x73", "\x6D\x6F\x76\x65\x54\x68\x72\x65\x73\x68\x6F\x6C\x64", "\x74\x69\x6D\x65\x54\x68\x72\x65\x73\x68\x6F\x6C\x64", "\x73\x77\x69\x70\x65", "\x61\x64\x64\x45\x76\x65\x6E\x74\x4C\x69\x73\x74\x65\x6E\x65\x72", "\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74", "\x73\x70\x65\x63\x69\x61\x6C", "\x65\x76\x65\x6E\x74", "\x75\x70", "\x64\x6F\x77\x6E", "\x6E\x6F\x6F\x70", "\x61\x64\x64\x54\x6F\x75\x63\x68", "\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74\x20\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65\x20\x74\x6F\x75\x63\x68\x65\x6E\x64\x20\x74\x6F\x75\x63\x68\x63\x61\x6E\x63\x65\x6C", "\x63\x68\x61\x6E\x67\x65\x64\x54\x6F\x75\x63\x68\x65\x73", "\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E", "\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65", "\x6D\x6F\x75\x73\x65\x75\x70", "\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74", "\x73\x63\x72\x65\x65\x6E\x58", "\x73\x63\x72\x65\x65\x6E\x59", "\x63\x6C\x69\x65\x6E\x74\x58", "\x63\x6C\x69\x65\x6E\x74\x59", "\x63\x72\x65\x61\x74\x65\x45\x76\x65\x6E\x74", "\x69\x6E\x69\x74\x4D\x6F\x75\x73\x65\x45\x76\x65\x6E\x74", "\x64\x69\x73\x70\x61\x74\x63\x68\x45\x76\x65\x6E\x74", "\x65\x6E\x75\x6D\x65\x72\x61\x62\x6C\x65", "\x63\x6F\x6E\x66\x69\x67\x75\x72\x61\x62\x6C\x65", "\x77\x72\x69\x74\x61\x62\x6C\x65", "\x6B\x65\x79", "\x64\x65\x66\x69\x6E\x65\x50\x72\x6F\x70\x65\x72\x74\x79", "\x43\x61\x6E\x6E\x6F\x74\x20\x63\x61\x6C\x6C\x20\x61\x20\x63\x6C\x61\x73\x73\x20\x61\x73\x20\x61\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E", "\x6F\x70\x74\x69\x6F\x6E\x73", "\x64\x65\x66\x61\x75\x6C\x74\x73", "\x41\x62\x69\x64\x65", "\x72\x65\x67\x69\x73\x74\x65\x72\x50\x6C\x75\x67\x69\x6E", "\x24\x69\x6E\x70\x75\x74\x73", "\x5B\x64\x61\x74\x61\x2D\x61\x62\x69\x64\x65\x2D\x69\x67\x6E\x6F\x72\x65\x5D", "\x69\x6E\x70\x75\x74\x2C\x20\x74\x65\x78\x74\x61\x72\x65\x61\x2C\x20\x73\x65\x6C\x65\x63\x74", "\x5F\x65\x76\x65\x6E\x74\x73", "\x73\x75\x62\x6D\x69\x74\x2E\x7A\x66\x2E\x61\x62\x69\x64\x65", "\x76\x61\x6C\x69\x64\x61\x74\x65\x46\x6F\x72\x6D", "\x72\x65\x73\x65\x74\x2E\x7A\x66\x2E\x61\x62\x69\x64\x65", "\x72\x65\x73\x65\x74\x46\x6F\x72\x6D", "\x2E\x61\x62\x69\x64\x65", "\x76\x61\x6C\x69\x64\x61\x74\x65\x4F\x6E", "\x66\x69\x65\x6C\x64\x43\x68\x61\x6E\x67\x65", "\x63\x68\x61\x6E\x67\x65\x2E\x7A\x66\x2E\x61\x62\x69\x64\x65", "\x76\x61\x6C\x69\x64\x61\x74\x65\x49\x6E\x70\x75\x74", "\x6C\x69\x76\x65\x56\x61\x6C\x69\x64\x61\x74\x65", "\x69\x6E\x70\x75\x74\x2E\x7A\x66\x2E\x61\x62\x69\x64\x65", "\x5F\x72\x65\x66\x6C\x6F\x77", "\x72\x65\x71\x75\x69\x72\x65\x64\x43\x68\x65\x63\x6B", "\x72\x65\x71\x75\x69\x72\x65\x64", "\x73\x65\x6C\x65\x63\x74", "\x73\x65\x6C\x65\x63\x74\x2D\x6F\x6E\x65", "\x6F\x70\x74\x69\x6F\x6E\x3A\x73\x65\x6C\x65\x63\x74\x65\x64", "\x76\x61\x6C", "\x73\x65\x6C\x65\x63\x74\x2D\x6D\x75\x6C\x74\x69\x70\x6C\x65", "\x66\x69\x6E\x64\x46\x6F\x72\x6D\x45\x72\x72\x6F\x72", "\x66\x6F\x72\x6D\x45\x72\x72\x6F\x72\x53\x65\x6C\x65\x63\x74\x6F\x72", "\x73\x69\x62\x6C\x69\x6E\x67\x73", "\x66\x69\x6E\x64\x4C\x61\x62\x65\x6C", "\x6C\x61\x62\x65\x6C\x5B\x66\x6F\x72\x3D\x22", "\x6C\x61\x62\x65\x6C", "\x63\x6C\x6F\x73\x65\x73\x74", "\x66\x69\x6E\x64\x52\x61\x64\x69\x6F\x4C\x61\x62\x65\x6C\x73", "\x61\x64\x64\x45\x72\x72\x6F\x72\x43\x6C\x61\x73\x73\x65\x73", "\x6C\x61\x62\x65\x6C\x45\x72\x72\x6F\x72\x43\x6C\x61\x73\x73", "\x66\x6F\x72\x6D\x45\x72\x72\x6F\x72\x43\x6C\x61\x73\x73", "\x64\x61\x74\x61\x2D\x69\x6E\x76\x61\x6C\x69\x64", "\x69\x6E\x70\x75\x74\x45\x72\x72\x6F\x72\x43\x6C\x61\x73\x73", "\x72\x65\x6D\x6F\x76\x65\x52\x61\x64\x69\x6F\x45\x72\x72\x6F\x72\x43\x6C\x61\x73\x73\x65\x73", "\x3A\x72\x61\x64\x69\x6F\x5B\x6E\x61\x6D\x65\x3D\x22", "\x72\x65\x6D\x6F\x76\x65\x45\x72\x72\x6F\x72\x43\x6C\x61\x73\x73\x65\x73", "\x72\x61\x64\x69\x6F", "\x64\x61\x74\x61\x2D\x76\x61\x6C\x69\x64\x61\x74\x6F\x72", "\x76\x61\x6C\x69\x64\x61\x74\x65\x52\x61\x64\x69\x6F", "\x63\x68\x65\x63\x6B\x62\x6F\x78", "\x76\x61\x6C\x69\x64\x61\x74\x65\x54\x65\x78\x74", "\x6D\x61\x74\x63\x68\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E", "\x64\x61\x74\x61\x2D\x65\x71\x75\x61\x6C\x74\x6F", "\x65\x71\x75\x61\x6C\x54\x6F", "\x76\x61\x6C\x69\x64\x61\x74\x6F\x72\x73", "\x76\x61\x6C\x69\x64", "\x69\x6E\x76\x61\x6C\x69\x64", "\x2E\x7A\x66\x2E\x61\x62\x69\x64\x65", "\x62\x6C\x6F\x63\x6B", "\x5B\x64\x61\x74\x61\x2D\x61\x62\x69\x64\x65\x2D\x65\x72\x72\x6F\x72\x5D", "\x66\x6F\x72\x6D\x76\x61\x6C\x69\x64", "\x66\x6F\x72\x6D\x69\x6E\x76\x61\x6C\x69\x64", "\x70\x61\x74\x74\x65\x72\x6E", "\x70\x61\x74\x74\x65\x72\x6E\x73", "\x70\x72\x6F\x70", "\x63\x68\x65\x63\x6B\x65\x64", "\x73\x6D\x61\x6C\x6C", "\x3A\x62\x75\x74\x74\x6F\x6E\x2C\x20\x3A\x73\x75\x62\x6D\x69\x74\x2C\x20\x3A\x72\x65\x73\x65\x74\x2C\x20\x3A\x68\x69\x64\x64\x65\x6E\x2C\x20\x5B\x64\x61\x74\x61\x2D\x61\x62\x69\x64\x65\x2D\x69\x67\x6E\x6F\x72\x65\x5D", "\x3A\x69\x6E\x70\x75\x74", "\x66\x6F\x72\x6D\x72\x65\x73\x65\x74\x2E\x7A\x66\x2E\x61\x62\x69\x64\x65", "\x64\x65\x73\x74\x72\x6F\x79", "\x75\x6E\x72\x65\x67\x69\x73\x74\x65\x72\x50\x6C\x75\x67\x69\x6E", "\x69\x73\x2D\x69\x6E\x76\x61\x6C\x69\x64\x2D\x6C\x61\x62\x65\x6C", "\x69\x73\x2D\x69\x6E\x76\x61\x6C\x69\x64\x2D\x69\x6E\x70\x75\x74", "\x2E\x66\x6F\x72\x6D\x2D\x65\x72\x72\x6F\x72", "\x69\x73\x2D\x76\x69\x73\x69\x62\x6C\x65", "\x70\x6C\x75\x67\x69\x6E", "\x41\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x6E\x65\x78\x74", "\x70\x72\x65\x76\x69\x6F\x75\x73", "\x72\x65\x67\x69\x73\x74\x65\x72", "\x74\x61\x62\x6C\x69\x73\x74", "\x24\x74\x61\x62\x73", "\x6C\x69\x2C\x20\x5B\x64\x61\x74\x61\x2D\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x2D\x69\x74\x65\x6D\x5D", "\x5B\x64\x61\x74\x61\x2D\x74\x61\x62\x2D\x63\x6F\x6E\x74\x65\x6E\x74\x5D", "\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x2D\x6C\x61\x62\x65\x6C", "\x74\x61\x62", "\x74\x61\x62\x70\x61\x6E\x65\x6C", "\x2E\x69\x73\x2D\x61\x63\x74\x69\x76\x65", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x66\x6F\x63\x75\x73", "\x61", "\x6D\x75\x6C\x74\x69\x45\x78\x70\x61\x6E\x64", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x70\x72\x65\x76", "\x68\x61\x6E\x64\x6C\x65\x4B\x65\x79", "\x69\x73\x2D\x61\x63\x74\x69\x76\x65", "\x68\x61\x73\x43\x6C\x61\x73\x73", "\x61\x6C\x6C\x6F\x77\x41\x6C\x6C\x43\x6C\x6F\x73\x65\x64", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x20\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E", "\x73\x6C\x69\x64\x65\x53\x70\x65\x65\x64", "\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x73\x6C\x69\x64\x65\x44\x6F\x77\x6E", "\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C\x6C\x65\x64\x62\x79", "\x75\x70\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x73\x6C\x69\x64\x65\x55\x70", "\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E", "\x41\x63\x63\x6F\x72\x64\x69\x6F\x6E\x4D\x65\x6E\x75", "\x63\x6C\x6F\x73\x65\x41\x6C\x6C", "\x6D\x75\x6C\x74\x69\x4F\x70\x65\x6E", "\x24\x6D\x65\x6E\x75\x4C\x69\x6E\x6B\x73", "\x2E\x69\x73\x2D\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x61\x63\x63\x2D\x6D\x65\x6E\x75\x2D\x6C\x69\x6E\x6B", "\x61\x63\x63\x2D\x6D\x65\x6E\x75", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x6D\x65\x6E\x75", "\x66\x69\x72\x73\x74", "\x6D\x69\x6E", "\x5B\x64\x61\x74\x61\x2D\x73\x75\x62\x6D\x65\x6E\x75\x5D\x3A\x76\x69\x73\x69\x62\x6C\x65", "\x6C\x69\x3A\x66\x69\x72\x73\x74\x2D\x63\x68\x69\x6C\x64", "\x3A\x66\x69\x72\x73\x74\x2D\x63\x68\x69\x6C\x64", "\x70\x61\x72\x65\x6E\x74\x73", "\x6C\x69\x3A\x6C\x61\x73\x74\x2D\x63\x68\x69\x6C\x64", "\x3A\x6C\x61\x73\x74\x2D\x63\x68\x69\x6C\x64", "\x3A\x68\x69\x64\x64\x65\x6E", "\x68\x69\x64\x65\x41\x6C\x6C", "\x73\x74\x6F\x70\x49\x6D\x6D\x65\x64\x69\x61\x74\x65\x50\x72\x6F\x70\x61\x67\x61\x74\x69\x6F\x6E", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x4D\x65\x6E\x75", "\x3A\x61\x6E\x69\x6D\x61\x74\x65\x64", "\x61\x64\x64", "\x70\x61\x72\x65\x6E\x74\x73\x55\x6E\x74\x69\x6C", "\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x4D\x65\x6E\x75", "\x75\x70\x2E\x7A\x66\x2E\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x4D\x65\x6E\x75", "\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64", "\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x44\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x24\x73\x75\x62\x6D\x65\x6E\x75\x41\x6E\x63\x68\x6F\x72\x73", "\x6C\x69\x2E\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x24\x73\x75\x62\x6D\x65\x6E\x75\x73", "\x24\x6D\x65\x6E\x75\x49\x74\x65\x6D\x73", "\x2E\x6A\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x62\x61\x63\x6B", "\x5F\x70\x72\x65\x70\x61\x72\x65\x4D\x65\x6E\x75", "\x70\x61\x72\x65\x6E\x74\x4C\x69\x6E\x6B", "\x3C\x6C\x69\x20\x63\x6C\x61\x73\x73\x3D\x22\x69\x73\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74\x2D\x69\x74\x65\x6D\x20\x69\x73\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x69\x74\x65\x6D\x20\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x69\x74\x65\x6D\x22\x20\x72\x6F\x6C\x65\x3D\x22\x6D\x65\x6E\x75\x2D\x69\x74\x65\x6D\x22\x3E\x3C\x2F\x6C\x69\x3E", "\x77\x72\x61\x70", "\x70\x72\x65\x70\x65\x6E\x64\x54\x6F", "\x63\x6C\x6F\x6E\x65", "\x68\x72\x65\x66", "\x73\x61\x76\x65\x64\x48\x72\x65\x66", "\x62\x61\x63\x6B\x42\x75\x74\x74\x6F\x6E", "\x70\x72\x65\x70\x65\x6E\x64", "\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x24\x77\x72\x61\x70\x70\x65\x72", "\x77\x72\x61\x70\x70\x65\x72", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x63\x6C\x6F\x73\x65\x4F\x6E\x43\x6C\x69\x63\x6B", "\x2E\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x5F\x6B\x65\x79\x62\x6F\x61\x72\x64\x45\x76\x65\x6E\x74\x73", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x75\x6C\x20\x6C\x69\x20\x61", "\x2E\x6A\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x62\x61\x63\x6B\x20\x3E\x20\x61", "\x5F\x68\x69\x64\x65\x41\x6C\x6C", "\x69\x73\x2D\x63\x6C\x6F\x73\x69\x6E\x67", "\x2E\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2E\x69\x73\x2D\x61\x63\x74\x69\x76\x65", "\x69\x73\x2D\x61\x63\x74\x69\x76\x65\x20\x69\x73\x2D\x63\x6C\x6F\x73\x69\x6E\x67", "\x63\x6C\x6F\x73\x65\x64\x2E\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x5F\x62\x61\x63\x6B", "\x5F\x6D\x65\x6E\x75\x4C\x69\x6E\x6B\x45\x76\x65\x6E\x74\x73", "\x2E\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x5F\x73\x68\x6F\x77", "\x6F\x70\x65\x6E\x2E\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x5F\x68\x69\x64\x65", "\x62\x6C\x75\x72", "\x68\x69\x64\x65\x2E\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x5F\x67\x65\x74\x4D\x61\x78\x44\x69\x6D\x73", "\x6D\x69\x6E\x2D\x68\x65\x69\x67\x68\x74", "\x70\x78", "\x6D\x61\x78\x2D\x77\x69\x64\x74\x68", "\x7A\x66\x2E\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E", "\x65\x6E\x64", "\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E\x20\x74\x61\x62\x69\x6E\x64\x65\x78\x20\x72\x6F\x6C\x65", "\x69\x73\x2D\x61\x63\x74\x69\x76\x65\x20\x69\x73\x2D\x63\x6C\x6F\x73\x69\x6E\x67\x20\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x2E\x69\x73\x2D\x61\x63\x74\x69\x76\x65\x2C\x20\x2E\x69\x73\x2D\x63\x6C\x6F\x73\x69\x6E\x67\x2C\x20\x2E\x69\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x72\x65\x6D\x6F\x76\x65", "\x2E\x6A\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x62\x61\x63\x6B\x2C\x20\x2E\x69\x73\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74\x2D\x69\x74\x65\x6D", "\x75\x6E\x77\x72\x61\x70", "\x3C\x6C\x69\x20\x63\x6C\x61\x73\x73\x3D\x22\x6A\x73\x2D\x64\x72\x69\x6C\x6C\x64\x6F\x77\x6E\x2D\x62\x61\x63\x6B\x22\x3E\x3C\x61\x20\x74\x61\x62\x69\x6E\x64\x65\x78\x3D\x22\x30\x22\x3E\x42\x61\x63\x6B\x3C\x2F\x61\x3E\x3C\x2F\x6C\x69\x3E", "\x3C\x64\x69\x76\x3E\x3C\x2F\x64\x69\x76\x3E", "\x44\x72\x6F\x70\x64\x6F\x77\x6E", "\x74\x61\x62\x5F\x66\x6F\x72\x77\x61\x72\x64", "\x74\x61\x62\x5F\x62\x61\x63\x6B\x77\x61\x72\x64", "\x24\x61\x6E\x63\x68\x6F\x72", "\x5B\x64\x61\x74\x61\x2D\x74\x6F\x67\x67\x6C\x65\x3D\x22", "\x5B\x64\x61\x74\x61\x2D\x6F\x70\x65\x6E\x3D\x22", "\x70\x6F\x73\x69\x74\x69\x6F\x6E\x43\x6C\x61\x73\x73", "\x67\x65\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E\x43\x6C\x61\x73\x73", "\x63\x6F\x75\x6E\x74\x65\x72", "\x75\x73\x65\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E\x73", "\x74\x72\x75\x65", "\x64\x64\x2D\x61\x6E\x63\x68\x6F\x72", "\x6D\x61\x74\x63\x68", "\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65", "\x5F\x72\x65\x70\x6F\x73\x69\x74\x69\x6F\x6E", "\x62\x6F\x74\x74\x6F\x6D", "\x63\x6C\x61\x73\x73\x43\x68\x61\x6E\x67\x65\x64", "\x5F\x73\x65\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E", "\x66\x61\x6C\x73\x65", "\x76\x4F\x66\x66\x73\x65\x74", "\x68\x4F\x66\x66\x73\x65\x74", "\x61\x75\x74\x6F", "\x68\x6F\x76\x65\x72", "\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x74\x69\x6D\x65\x6F\x75\x74", "\x68\x6F\x76\x65\x72\x44\x65\x6C\x61\x79", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x20\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x68\x6F\x76\x65\x72\x50\x61\x6E\x65", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x66\x69\x6E\x64\x46\x6F\x63\x75\x73\x61\x62\x6C\x65", "\x3A\x66\x6F\x63\x75\x73", "\x74\x72\x61\x70\x46\x6F\x63\x75\x73", "\x5F\x61\x64\x64\x42\x6F\x64\x79\x48\x61\x6E\x64\x6C\x65\x72", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x63\x6C\x6F\x73\x65\x6D\x65\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x69\x73\x2D\x6F\x70\x65\x6E", "\x61\x75\x74\x6F\x46\x6F\x63\x75\x73", "\x73\x68\x6F\x77\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x68\x69\x64\x65\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E", "\x44\x72\x6F\x70\x64\x6F\x77\x6E\x4D\x65\x6E\x75", "\x6C\x69\x2E\x69\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x66\x69\x72\x73\x74\x2D\x73\x75\x62", "\x2E\x69\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x2E\x69\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x5B\x72\x6F\x6C\x65\x3D\x22\x6D\x65\x6E\x75\x69\x74\x65\x6D\x22\x5D", "\x76\x65\x72\x74\x69\x63\x61\x6C\x43\x6C\x61\x73\x73", "\x75\x6C\x2E\x69\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x72\x69\x67\x68\x74\x43\x6C\x61\x73\x73", "\x61\x6C\x69\x67\x6E\x6D\x65\x6E\x74", "\x2E\x74\x6F\x70\x2D\x62\x61\x72\x2D\x72\x69\x67\x68\x74", "\x6F\x70\x65\x6E\x73\x2D\x6C\x65\x66\x74", "\x6F\x70\x65\x6E\x73\x2D\x72\x69\x67\x68\x74", "\x63\x68\x61\x6E\x67\x65\x64", "\x69\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x70\x61\x72\x65\x6E\x74", "\x63\x6C\x69\x63\x6B\x4F\x70\x65\x6E", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75\x20\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x64\x61\x74\x61\x2D\x69\x73\x2D\x63\x6C\x69\x63\x6B", "\x66\x6F\x72\x63\x65\x46\x6F\x6C\x6C\x6F\x77", "\x64\x69\x73\x61\x62\x6C\x65\x48\x6F\x76\x65\x72", "\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x61\x75\x74\x6F\x63\x6C\x6F\x73\x65", "\x64\x65\x6C\x61\x79", "\x63\x6C\x6F\x73\x69\x6E\x67\x54\x69\x6D\x65", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x69\x6E\x64\x65\x78", "\x6C\x69\x20\x3E\x20\x61\x3A\x66\x69\x72\x73\x74", "\x76\x65\x72\x74\x69\x63\x61\x6C", "\x6D\x6F\x75\x73\x65\x75\x70\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75\x20\x74\x6F\x75\x63\x68\x65\x6E\x64\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x6A\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x61\x63\x74\x69\x76\x65", "\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79", "\x68\x69\x64\x64\x65\x6E", "\x2D\x72\x69\x67\x68\x74", "\x2D\x6C\x65\x66\x74", "\x6F\x70\x65\x6E\x73\x2D", "\x6F\x70\x65\x6E\x73", "\x6F\x70\x65\x6E\x73\x2D\x69\x6E\x6E\x65\x72", "\x73\x68\x6F\x77\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x6C\x69\x2E\x69\x73\x2D\x61\x63\x74\x69\x76\x65", "\x75\x6C\x2E\x6A\x73\x2D\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x61\x63\x74\x69\x76\x65", "\x6F\x70\x65\x6E\x73\x2D\x69\x6E\x6E\x65\x72\x20\x6F\x70\x65\x6E\x73\x2D", "\x68\x69\x64\x65\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x69\x73\x2D\x72\x69\x67\x68\x74\x2D\x61\x72\x72\x6F\x77\x20\x69\x73\x2D\x6C\x65\x66\x74\x2D\x61\x72\x72\x6F\x77\x20\x69\x73\x2D\x64\x6F\x77\x6E\x2D\x61\x72\x72\x6F\x77\x20\x6F\x70\x65\x6E\x73\x2D\x72\x69\x67\x68\x74\x20\x6F\x70\x65\x6E\x73\x2D\x6C\x65\x66\x74\x20\x6F\x70\x65\x6E\x73\x2D\x69\x6E\x6E\x65\x72", "\x2E\x7A\x66\x2E\x64\x72\x6F\x70\x64\x6F\x77\x6E\x6D\x65\x6E\x75", "\x61\x6C\x69\x67\x6E\x2D\x72\x69\x67\x68\x74", "\x45\x71\x75\x61\x6C\x69\x7A\x65\x72", "\x64\x61\x74\x61\x2D\x65\x71\x75\x61\x6C\x69\x7A\x65\x72", "\x5B\x64\x61\x74\x61\x2D\x65\x71\x75\x61\x6C\x69\x7A\x65\x72\x2D\x77\x61\x74\x63\x68\x3D\x22", "\x24\x77\x61\x74\x63\x68\x65\x64", "\x5B\x64\x61\x74\x61\x2D\x65\x71\x75\x61\x6C\x69\x7A\x65\x72\x2D\x77\x61\x74\x63\x68\x5D", "\x64\x61\x74\x61\x2D\x72\x65\x73\x69\x7A\x65", "\x68\x61\x73\x4E\x65\x73\x74\x65\x64", "\x5B\x64\x61\x74\x61\x2D\x65\x71\x75\x61\x6C\x69\x7A\x65\x72\x5D", "\x69\x73\x4E\x65\x73\x74\x65\x64", "\x69\x73\x4F\x6E", "\x69\x6D\x67", "\x65\x71\x75\x61\x6C\x69\x7A\x65\x4F\x6E", "\x5F\x63\x68\x65\x63\x6B\x4D\x51", "\x5F\x70\x61\x75\x73\x65\x45\x76\x65\x6E\x74\x73", "\x2E\x7A\x66\x2E\x65\x71\x75\x61\x6C\x69\x7A\x65\x72\x20\x72\x65\x73\x69\x7A\x65\x6D\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x70\x6F\x73\x74\x65\x71\x75\x61\x6C\x69\x7A\x65\x64\x2E\x7A\x66\x2E\x65\x71\x75\x61\x6C\x69\x7A\x65\x72", "\x61\x74\x4C\x65\x61\x73\x74", "\x5F\x6B\x69\x6C\x6C\x73\x77\x69\x74\x63\x68", "\x65\x71\x75\x61\x6C\x69\x7A\x65\x4F\x6E\x53\x74\x61\x63\x6B", "\x65\x71\x75\x61\x6C\x69\x7A\x65\x42\x79\x52\x6F\x77", "\x61\x70\x70\x6C\x79\x48\x65\x69\x67\x68\x74\x42\x79\x52\x6F\x77", "\x67\x65\x74\x48\x65\x69\x67\x68\x74\x73\x42\x79\x52\x6F\x77", "\x61\x70\x70\x6C\x79\x48\x65\x69\x67\x68\x74", "\x67\x65\x74\x48\x65\x69\x67\x68\x74\x73", "\x5F\x69\x73\x53\x74\x61\x63\x6B\x65\x64", "\x6F\x66\x66\x73\x65\x74\x54\x6F\x70", "\x6F\x66\x66\x73\x65\x74\x48\x65\x69\x67\x68\x74", "\x70\x72\x65\x65\x71\x75\x61\x6C\x69\x7A\x65\x64\x2E\x7A\x66\x2E\x65\x71\x75\x61\x6C\x69\x7A\x65\x72", "\x70\x72\x65\x65\x71\x75\x61\x6C\x69\x7A\x65\x64\x72\x6F\x77\x2E\x7A\x66\x2E\x65\x71\x75\x61\x6C\x69\x7A\x65\x72", "\x70\x6F\x73\x74\x65\x71\x75\x61\x6C\x69\x7A\x65\x64\x72\x6F\x77\x2E\x7A\x66\x2E\x65\x71\x75\x61\x6C\x69\x7A\x65\x72", "\x72\x75\x6C\x65\x73", "\x63\x75\x72\x72\x65\x6E\x74\x50\x61\x74\x68", "\x49\x6E\x74\x65\x72\x63\x68\x61\x6E\x67\x65", "\x72\x65\x73\x69\x7A\x65\x2E\x7A\x66\x2E\x69\x6E\x74\x65\x72\x63\x68\x61\x6E\x67\x65", "\x74\x68\x72\x6F\x74\x74\x6C\x65", "\x71\x75\x65\x72\x79", "\x70\x61\x74\x68", "\x5F\x61\x64\x64\x42\x72\x65\x61\x6B\x70\x6F\x69\x6E\x74\x73", "\x53\x50\x45\x43\x49\x41\x4C\x5F\x51\x55\x45\x52\x49\x45\x53", "\x5F\x67\x65\x6E\x65\x72\x61\x74\x65\x52\x75\x6C\x65\x73", "\x69\x6E\x74\x65\x72\x63\x68\x61\x6E\x67\x65", "\x2C\x20", "\x72\x65\x70\x6C\x61\x63\x65\x64\x2E\x7A\x66\x2E\x69\x6E\x74\x65\x72\x63\x68\x61\x6E\x67\x65", "\x6E\x6F\x64\x65\x4E\x61\x6D\x65", "\x49\x4D\x47", "\x73\x72\x63", "\x75\x72\x6C\x28", "\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x3A\x20\x6C\x61\x6E\x64\x73\x63\x61\x70\x65\x29", "\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x3A\x20\x70\x6F\x72\x74\x72\x61\x69\x74\x29", "\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x2D\x77\x65\x62\x6B\x69\x74\x2D\x6D\x69\x6E\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x29\x2C\x20\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x2D\x6D\x6F\x7A\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x29\x2C\x20\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x2D\x6F\x2D\x6D\x69\x6E\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x2F\x31\x29\x2C\x20\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x64\x65\x76\x69\x63\x65\x2D\x70\x69\x78\x65\x6C\x2D\x72\x61\x74\x69\x6F\x3A\x20\x32\x29\x2C\x20\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x72\x65\x73\x6F\x6C\x75\x74\x69\x6F\x6E\x3A\x20\x31\x39\x32\x64\x70\x69\x29\x2C\x20\x6F\x6E\x6C\x79\x20\x73\x63\x72\x65\x65\x6E\x20\x61\x6E\x64\x20\x28\x6D\x69\x6E\x2D\x72\x65\x73\x6F\x6C\x75\x74\x69\x6F\x6E\x3A\x20\x32\x64\x70\x70\x78\x29", "\x4D\x61\x67\x65\x6C\x6C\x61\x6E", "\x6D\x61\x67\x65\x6C\x6C\x61\x6E", "\x24\x74\x61\x72\x67\x65\x74\x73", "\x5B\x64\x61\x74\x61\x2D\x6D\x61\x67\x65\x6C\x6C\x61\x6E\x2D\x74\x61\x72\x67\x65\x74\x5D", "\x24\x6C\x69\x6E\x6B\x73", "\x24\x61\x63\x74\x69\x76\x65", "\x73\x63\x72\x6F\x6C\x6C\x50\x6F\x73", "\x63\x61\x6C\x63\x50\x6F\x69\x6E\x74\x73", "\x70\x6F\x69\x6E\x74\x73", "\x77\x69\x6E\x48\x65\x69\x67\x68\x74", "\x69\x6E\x6E\x65\x72\x48\x65\x69\x67\x68\x74", "\x63\x6C\x69\x65\x6E\x74\x48\x65\x69\x67\x68\x74", "\x64\x6F\x63\x48\x65\x69\x67\x68\x74", "\x73\x63\x72\x6F\x6C\x6C\x48\x65\x69\x67\x68\x74", "\x74\x68\x72\x65\x73\x68\x6F\x6C\x64", "\x74\x61\x72\x67\x65\x74\x50\x6F\x69\x6E\x74", "\x68\x74\x6D\x6C\x2C\x20\x62\x6F\x64\x79", "\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x44\x75\x72\x61\x74\x69\x6F\x6E", "\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x45\x61\x73\x69\x6E\x67", "\x64\x65\x65\x70\x4C\x69\x6E\x6B\x69\x6E\x67", "\x68\x61\x73\x68", "\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x4C\x6F\x63", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x6D\x61\x67\x65\x6C\x6C\x61\x6E", "\x61\x5B\x68\x72\x65\x66\x5E\x3D\x22\x23\x22\x5D", "\x67\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65", "\x5F\x75\x70\x64\x61\x74\x65\x41\x63\x74\x69\x76\x65", "\x62\x61\x72\x4F\x66\x66\x73\x65\x74", "\x61\x6E\x69\x6D\x61\x74\x65", "\x73\x74\x6F\x70", "\x61\x63\x74\x69\x76\x65\x43\x6C\x61\x73\x73", "\x70\x75\x73\x68\x53\x74\x61\x74\x65", "\x68\x69\x73\x74\x6F\x72\x79", "\x6C\x6F\x63\x61\x74\x69\x6F\x6E", "\x75\x70\x64\x61\x74\x65\x2E\x7A\x66\x2E\x6D\x61\x67\x65\x6C\x6C\x61\x6E", "\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72\x20\x2E\x7A\x66\x2E\x6D\x61\x67\x65\x6C\x6C\x61\x6E", "\x6C\x69\x6E\x65\x61\x72", "\x61\x63\x74\x69\x76\x65", "\x24\x6C\x61\x73\x74\x54\x72\x69\x67\x67\x65\x72", "\x4F\x66\x66\x43\x61\x6E\x76\x61\x73", "\x61\x72\x69\x61\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x73", "\x22\x5D\x2C\x20\x5B\x64\x61\x74\x61\x2D\x63\x6C\x6F\x73\x65\x3D\x22", "\x22\x5D\x2C\x20\x5B\x64\x61\x74\x61\x2D\x74\x6F\x67\x67\x6C\x65\x3D\x22", "\x2E\x6A\x73\x2D\x6F\x66\x66\x2D\x63\x61\x6E\x76\x61\x73\x2D\x65\x78\x69\x74", "\x24\x65\x78\x69\x74\x65\x72", "\x63\x6C\x61\x73\x73", "\x6A\x73\x2D\x6F\x66\x66\x2D\x63\x61\x6E\x76\x61\x73\x2D\x65\x78\x69\x74", "\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65", "\x61\x70\x70\x65\x6E\x64", "\x5B\x64\x61\x74\x61\x2D\x6F\x66\x66\x2D\x63\x61\x6E\x76\x61\x73\x2D\x63\x6F\x6E\x74\x65\x6E\x74\x5D", "\x69\x73\x52\x65\x76\x65\x61\x6C\x65\x64", "\x72\x65\x76\x65\x61\x6C\x43\x6C\x61\x73\x73", "\x67", "\x72\x65\x76\x65\x61\x6C\x4F\x6E", "\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x54\x69\x6D\x65", "\x5B\x64\x61\x74\x61\x2D\x6F\x66\x66\x2D\x63\x61\x6E\x76\x61\x73\x2D\x77\x72\x61\x70\x70\x65\x72\x5D", "\x5F\x68\x61\x6E\x64\x6C\x65\x4B\x65\x79\x62\x6F\x61\x72\x64", "\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72\x20\x2E\x7A\x66\x2E\x6F\x66\x66\x63\x61\x6E\x76\x61\x73", "\x5F\x73\x65\x74\x4D\x51\x43\x68\x65\x63\x6B\x65\x72", "\x6C\x6F\x61\x64\x2E\x7A\x66\x2E\x6F\x66\x66\x63\x61\x6E\x76\x61\x73", "\x6F\x70\x65\x6E\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72\x20\x74\x6F\x67\x67\x6C\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72", "\x66\x6F\x72\x63\x65\x54\x6F\x70", "\x73\x63\x72\x6F\x6C\x6C\x54\x6F\x70", "\x69\x73\x2D\x6F\x66\x66\x2D\x63\x61\x6E\x76\x61\x73\x2D\x6F\x70\x65\x6E\x20\x69\x73\x2D\x6F\x70\x65\x6E\x2D", "\x70\x6F\x73\x69\x74\x69\x6F\x6E", "\x6F\x70\x65\x6E\x65\x64\x2E\x7A\x66\x2E\x6F\x66\x66\x63\x61\x6E\x76\x61\x73", "\x61\x2C\x20\x62\x75\x74\x74\x6F\x6E", "\x2D\x31", "\x5F\x74\x72\x61\x70\x46\x6F\x63\x75\x73", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x6F\x66\x66\x63\x61\x6E\x76\x61\x73", "\x6B\x65\x79\x63\x6F\x64\x65", "\x2E\x7A\x66\x2E\x6F\x66\x66\x63\x61\x6E\x76\x61\x73", "\x63\x6C\x6F\x73\x65\x64\x2E\x7A\x66\x2E\x6F\x66\x66\x63\x61\x6E\x76\x61\x73", "\x72\x65\x76\x65\x61\x6C\x2D\x66\x6F\x72\x2D", "\x4F\x72\x62\x69\x74", "\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x43\x6C\x61\x73\x73", "\x24\x73\x6C\x69\x64\x65\x73", "\x73\x6C\x69\x64\x65\x43\x6C\x61\x73\x73", "\x75\x73\x65\x4D\x55\x49", "\x6E\x6F\x2D\x6D\x6F\x74\x69\x6F\x6E\x75\x69", "\x5F\x70\x72\x65\x70\x61\x72\x65\x46\x6F\x72\x4F\x72\x62\x69\x74", "\x62\x75\x6C\x6C\x65\x74\x73", "\x61\x75\x74\x6F\x50\x6C\x61\x79", "\x67\x65\x6F\x53\x79\x6E\x63", "\x61\x63\x63\x65\x73\x73\x69\x62\x6C\x65", "\x5F\x6C\x6F\x61\x64\x42\x75\x6C\x6C\x65\x74\x73", "\x24\x62\x75\x6C\x6C\x65\x74\x73", "\x62\x75\x74\x74\x6F\x6E", "\x62\x6F\x78\x4F\x66\x42\x75\x6C\x6C\x65\x74\x73", "\x74\x69\x6D\x65\x72\x44\x65\x6C\x61\x79", "\x63\x68\x61\x6E\x67\x65\x53\x6C\x69\x64\x65", "\x5F\x73\x65\x74\x57\x72\x61\x70\x70\x65\x72\x48\x65\x69\x67\x68\x74", "\x64\x61\x74\x61\x2D\x73\x6C\x69\x64\x65", "\x72\x65\x6C\x61\x74\x69\x76\x65", "\x5F\x73\x65\x74\x53\x6C\x69\x64\x65\x48\x65\x69\x67\x68\x74", "\x6D\x61\x78\x2D\x68\x65\x69\x67\x68\x74", "\x73\x77\x69\x70\x65\x72\x69\x67\x68\x74\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x73\x77\x69\x70\x65\x6C\x65\x66\x74\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x73\x77\x69\x70\x65\x6C\x65\x66\x74\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74\x20\x73\x77\x69\x70\x65\x72\x69\x67\x68\x74\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x63\x6C\x69\x63\x6B\x65\x64\x4F\x6E", "\x70\x61\x75\x73\x65\x4F\x6E\x48\x6F\x76\x65\x72", "\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x6E\x61\x76\x42\x75\x74\x74\x6F\x6E\x73", "\x6E\x65\x78\x74\x43\x6C\x61\x73\x73", "\x2C\x20\x2E", "\x70\x72\x65\x76\x43\x6C\x61\x73\x73", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74\x20\x74\x6F\x75\x63\x68\x65\x6E\x64\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x73\x6C\x69\x64\x65", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x6C\x61\x73\x74", "\x52\x69\x67\x68\x74", "\x4C\x65\x66\x74", "\x69\x6E\x66\x69\x6E\x69\x74\x65\x57\x72\x61\x70", "\x61\x62\x73\x6F\x6C\x75\x74\x65", "\x61\x6E\x69\x6D\x49\x6E\x46\x72\x6F\x6D", "\x61\x72\x69\x61\x2D\x6C\x69\x76\x65", "\x70\x6F\x6C\x69\x74\x65", "\x61\x6E\x69\x6D\x61\x74\x65\x49\x6E", "\x61\x6E\x69\x6D\x4F\x75\x74\x54\x6F", "\x69\x73\x2D\x61\x63\x74\x69\x76\x65\x20\x69\x73\x2D\x69\x6E", "\x73\x6C\x69\x64\x65\x63\x68\x61\x6E\x67\x65\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x5F\x75\x70\x64\x61\x74\x65\x42\x75\x6C\x6C\x65\x74\x73", "\x64\x65\x74\x61\x63\x68", "\x73\x70\x61\x6E\x3A\x6C\x61\x73\x74", "\x2E\x7A\x66\x2E\x6F\x72\x62\x69\x74", "\x73\x6C\x69\x64\x65\x2D\x69\x6E\x2D\x72\x69\x67\x68\x74", "\x73\x6C\x69\x64\x65\x2D\x6F\x75\x74\x2D\x72\x69\x67\x68\x74", "\x73\x6C\x69\x64\x65\x2D\x69\x6E\x2D\x6C\x65\x66\x74", "\x73\x6C\x69\x64\x65\x2D\x6F\x75\x74\x2D\x6C\x65\x66\x74", "\x6F\x72\x62\x69\x74\x2D\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x6F\x72\x62\x69\x74\x2D\x73\x6C\x69\x64\x65", "\x6F\x72\x62\x69\x74\x2D\x62\x75\x6C\x6C\x65\x74\x73", "\x6F\x72\x62\x69\x74\x2D\x6E\x65\x78\x74", "\x6F\x72\x62\x69\x74\x2D\x70\x72\x65\x76\x69\x6F\x75\x73", "\x72\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x2D\x6D\x65\x6E\x75", "\x63\x75\x72\x72\x65\x6E\x74\x4D\x71", "\x63\x75\x72\x72\x65\x6E\x74\x50\x6C\x75\x67\x69\x6E", "\x52\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x4D\x65\x6E\x75", "\x69\x73\x45\x6D\x70\x74\x79\x4F\x62\x6A\x65\x63\x74", "\x5F\x63\x68\x65\x63\x6B\x4D\x65\x64\x69\x61\x51\x75\x65\x72\x69\x65\x73", "\x63\x73\x73\x43\x6C\x61\x73\x73", "\x2E\x7A\x66\x2E\x52\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x4D\x65\x6E\x75", "\x64\x72\x6F\x70\x64\x6F\x77\x6E\x2D\x6D\x65\x6E\x75", "\x61\x63\x63\x6F\x72\x64\x69\x6F\x6E\x2D\x6D\x65\x6E\x75", "\x52\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x54\x6F\x67\x67\x6C\x65", "\x72\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x2D\x74\x6F\x67\x67\x6C\x65", "\x59\x6F\x75\x72\x20\x74\x61\x62\x20\x62\x61\x72\x20\x6E\x65\x65\x64\x73\x20\x61\x6E\x20\x49\x44\x20\x6F\x66\x20\x61\x20\x4D\x65\x6E\x75\x20\x61\x73\x20\x74\x68\x65\x20\x76\x61\x6C\x75\x65\x20\x6F\x66\x20\x64\x61\x74\x61\x2D\x74\x61\x62\x2D\x62\x61\x72\x2E", "\x24\x74\x61\x72\x67\x65\x74\x4D\x65\x6E\x75", "\x24\x74\x6F\x67\x67\x6C\x65\x72", "\x5F\x75\x70\x64\x61\x74\x65", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x72\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x54\x6F\x67\x67\x6C\x65", "\x74\x6F\x67\x67\x6C\x65\x4D\x65\x6E\x75", "\x68\x69\x64\x65\x46\x6F\x72", "\x74\x6F\x67\x67\x6C\x65\x64\x2E\x7A\x66\x2E\x72\x65\x73\x70\x6F\x6E\x73\x69\x76\x65\x54\x6F\x67\x67\x6C\x65", "\x6D\x65\x64\x69\x75\x6D", "\x52\x65\x76\x65\x61\x6C", "\x69\x73\x41\x63\x74\x69\x76\x65", "\x63\x61\x63\x68\x65\x64", "\x69\x73\x69\x4F\x53", "\x69\x73\x2D\x69\x6F\x73", "\x66\x75\x6C\x6C\x53\x63\x72\x65\x65\x6E", "\x66\x75\x6C\x6C", "\x6F\x76\x65\x72\x6C\x61\x79", "\x24\x6F\x76\x65\x72\x6C\x61\x79", "\x64\x69\x61\x6C\x6F\x67", "\x77\x69\x74\x68\x6F\x75\x74\x2D\x6F\x76\x65\x72\x6C\x61\x79", "\x64\x65\x65\x70\x4C\x69\x6E\x6B", "\x6C\x6F\x61\x64\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x5F\x6D\x61\x6B\x65\x4F\x76\x65\x72\x6C\x61\x79", "\x72\x65\x76\x65\x61\x6C\x2D\x6F\x76\x65\x72\x6C\x61\x79", "\x5F\x75\x70\x64\x61\x74\x65\x50\x6F\x73\x69\x74\x69\x6F\x6E", "\x6F\x75\x74\x65\x72\x57\x69\x64\x74\x68", "\x6F\x75\x74\x65\x72\x48\x65\x69\x67\x68\x74", "\x30\x70\x78", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x63\x6F\x6E\x74\x61\x69\x6E\x73", "\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x70\x6F\x70\x73\x74\x61\x74\x65\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C\x3A", "\x5F\x68\x61\x6E\x64\x6C\x65\x53\x74\x61\x74\x65", "\x6D\x75\x6C\x74\x69\x70\x6C\x65\x4F\x70\x65\x6E\x65\x64", "\x63\x6C\x6F\x73\x65\x6D\x65\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x49\x6E", "\x66\x61\x64\x65\x2D\x69\x6E", "\x66\x6F\x63\x75\x73\x61\x62\x6C\x65\x45\x6C\x65\x6D\x65\x6E\x74\x73", "\x73\x68\x6F\x77\x44\x65\x6C\x61\x79", "\x6F\x70\x65\x6E\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x69\x73\x2D\x72\x65\x76\x65\x61\x6C\x2D\x6F\x70\x65\x6E", "\x5F\x65\x78\x74\x72\x61\x48\x61\x6E\x64\x6C\x65\x72\x73", "\x63\x6C\x6F\x73\x65\x4F\x6E\x45\x73\x63", "\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x4F\x75\x74", "\x66\x61\x64\x65\x2D\x6F\x75\x74", "\x68\x69\x64\x65\x44\x65\x6C\x61\x79", "\x63\x6C\x6F\x73\x65\x64\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C", "\x72\x65\x73\x65\x74\x4F\x6E\x43\x6C\x6F\x73\x65", "\x72\x65\x70\x6C\x61\x63\x65\x53\x74\x61\x74\x65", "\x74\x69\x74\x6C\x65", "\x70\x61\x74\x68\x6E\x61\x6D\x65", "\x2E\x7A\x66", "\x2E\x7A\x66\x2E\x72\x65\x76\x65\x61\x6C\x3A", "\x53\x6C\x69\x64\x65\x72", "\x69\x6E\x63\x72\x65\x61\x73\x65", "\x64\x65\x63\x72\x65\x61\x73\x65", "\x69\x6E\x63\x72\x65\x61\x73\x65\x5F\x66\x61\x73\x74", "\x64\x65\x63\x72\x65\x61\x73\x65\x5F\x66\x61\x73\x74", "\x69\x6E\x70\x75\x74\x73", "\x69\x6E\x70\x75\x74", "\x68\x61\x6E\x64\x6C\x65\x73", "\x5B\x64\x61\x74\x61\x2D\x73\x6C\x69\x64\x65\x72\x2D\x68\x61\x6E\x64\x6C\x65\x5D", "\x24\x68\x61\x6E\x64\x6C\x65", "\x24\x69\x6E\x70\x75\x74", "\x24\x66\x69\x6C\x6C", "\x5B\x64\x61\x74\x61\x2D\x73\x6C\x69\x64\x65\x72\x2D\x66\x69\x6C\x6C\x5D", "\x64\x69\x73\x61\x62\x6C\x65\x64", "\x64\x69\x73\x61\x62\x6C\x65\x64\x43\x6C\x61\x73\x73", "\x62\x69\x6E\x64\x69\x6E\x67", "\x64\x6F\x75\x62\x6C\x65\x53\x69\x64\x65\x64", "\x24\x68\x61\x6E\x64\x6C\x65\x32", "\x24\x69\x6E\x70\x75\x74\x32", "\x69\x6E\x69\x74\x69\x61\x6C\x53\x74\x61\x72\x74", "\x69\x6E\x69\x74\x69\x61\x6C\x45\x6E\x64", "\x5F\x73\x65\x74\x48\x61\x6E\x64\x6C\x65\x50\x6F\x73", "\x61\x72\x69\x61\x2D\x76\x61\x6C\x75\x65\x6E\x6F\x77", "\x73\x74\x65\x70", "\x74\x6F\x46\x69\x78\x65\x64", "\x64\x65\x63\x69\x6D\x61\x6C", "\x25", "\x6D\x69\x6E\x2D", "\x6D\x6F\x76\x65\x64\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x64\x72\x61\x67\x67\x69\x6E\x67", "\x6D\x6F\x76\x65\x54\x69\x6D\x65", "\x63\x68\x61\x6E\x67\x65\x64\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x63\x68\x61\x6E\x67\x65\x64\x44\x65\x6C\x61\x79", "\x5F\x73\x65\x74\x49\x6E\x69\x74\x41\x74\x74\x72", "\x73\x6C\x69\x64\x65\x72", "\x68\x6F\x72\x69\x7A\x6F\x6E\x74\x61\x6C", "\x5F\x73\x65\x74\x56\x61\x6C\x75\x65\x73", "\x5F\x68\x61\x6E\x64\x6C\x65\x45\x76\x65\x6E\x74", "\x5F\x61\x64\x6A\x75\x73\x74\x56\x61\x6C\x75\x65", "\x63\x68\x61\x6E\x67\x65\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x63\x6C\x69\x63\x6B\x53\x65\x6C\x65\x63\x74", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x64\x72\x61\x67\x67\x61\x62\x6C\x65", "\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x69\x73\x2D\x64\x72\x61\x67\x67\x69\x6E\x67", "\x63\x75\x72\x72\x65\x6E\x74\x54\x61\x72\x67\x65\x74", "\x6D\x6F\x75\x73\x65\x75\x70\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72\x20\x6D\x6F\x75\x73\x65\x75\x70\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x2E\x7A\x66\x2E\x73\x6C\x69\x64\x65\x72", "\x53\x74\x69\x63\x6B\x79", "\x5B\x64\x61\x74\x61\x2D\x73\x74\x69\x63\x6B\x79\x2D\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x5D", "\x73\x74\x69\x63\x6B\x79", "\x77\x61\x73\x57\x72\x61\x70\x70\x65\x64", "\x24\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x77\x72\x61\x70\x49\x6E\x6E\x65\x72", "\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x73\x74\x69\x63\x6B\x79\x43\x6C\x61\x73\x73", "\x73\x63\x72\x6F\x6C\x6C\x43\x6F\x75\x6E\x74", "\x63\x68\x65\x63\x6B\x45\x76\x65\x72\x79", "\x69\x73\x53\x74\x75\x63\x6B", "\x6C\x6F\x61\x64\x2E\x7A\x66\x2E\x73\x74\x69\x63\x6B\x79", "\x61\x6E\x63\x68\x6F\x72", "\x72\x65\x76\x65\x72\x73\x65", "\x5F\x70\x61\x72\x73\x65\x50\x6F\x69\x6E\x74\x73", "\x74\x6F\x70\x41\x6E\x63\x68\x6F\x72", "\x62\x74\x6D\x41\x6E\x63\x68\x6F\x72", "\x6E\x75\x6D\x62\x65\x72", "\x73\x63\x72\x6F\x6C\x6C\x4C\x69\x73\x74\x65\x6E\x65\x72", "\x73\x63\x72\x6F\x6C\x6C\x2E\x7A\x66\x2E", "\x63\x61\x6E\x53\x74\x69\x63\x6B", "\x5F\x70\x61\x75\x73\x65\x4C\x69\x73\x74\x65\x6E\x65\x72\x73", "\x70\x61\x75\x73\x65\x2E\x7A\x66\x2E\x73\x74\x69\x63\x6B\x79", "\x5F\x63\x61\x6C\x63", "\x74\x6F\x70\x50\x6F\x69\x6E\x74", "\x62\x6F\x74\x74\x6F\x6D\x50\x6F\x69\x6E\x74", "\x5F\x73\x65\x74\x53\x74\x69\x63\x6B\x79", "\x73\x74\x69\x63\x6B\x54\x6F", "\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70", "\x6D\x61\x72\x67\x69\x6E\x42\x6F\x74\x74\x6F\x6D", "\x65\x6D", "\x70\x61\x64\x64\x69\x6E\x67\x2D\x6C\x65\x66\x74", "\x73\x74\x69\x63\x6B\x79\x2E\x7A\x66\x2E\x73\x74\x75\x63\x6B\x74\x6F\x3A", "\x69\x73\x2D\x73\x74\x75\x63\x6B\x20\x69\x73\x2D\x61\x74\x2D", "\x69\x73\x2D\x61\x6E\x63\x68\x6F\x72\x65\x64\x20\x69\x73\x2D\x61\x74\x2D", "\x5F\x72\x65\x6D\x6F\x76\x65\x53\x74\x69\x63\x6B\x79", "\x61\x6E\x63\x68\x6F\x72\x48\x65\x69\x67\x68\x74", "\x65\x6C\x65\x6D\x48\x65\x69\x67\x68\x74", "\x73\x74\x69\x63\x6B\x79\x2E\x7A\x66\x2E\x75\x6E\x73\x74\x75\x63\x6B\x66\x72\x6F\x6D\x3A", "\x5F\x73\x65\x74\x53\x69\x7A\x65\x73", "\x73\x74\x69\x63\x6B\x79\x4F\x6E", "\x70\x61\x64\x64\x69\x6E\x67\x2D\x72\x69\x67\x68\x74", "\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x48\x65\x69\x67\x68\x74", "\x5F\x73\x65\x74\x42\x72\x65\x61\x6B\x50\x6F\x69\x6E\x74\x73", "\x20\x69\x73\x2D\x61\x6E\x63\x68\x6F\x72\x65\x64\x20\x69\x73\x2D\x61\x74\x2D\x74\x6F\x70", "\x63\x68\x61\x6E\x67\x65\x2E\x7A\x66\x2E\x73\x74\x69\x63\x6B\x79", "\x3C\x64\x69\x76\x20\x64\x61\x74\x61\x2D\x73\x74\x69\x63\x6B\x79\x2D\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72\x3E\x3C\x2F\x64\x69\x76\x3E", "\x73\x74\x69\x63\x6B\x79\x2D\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x66\x6F\x6E\x74\x53\x69\x7A\x65", "\x54\x61\x62\x73", "\x24\x74\x61\x62\x54\x69\x74\x6C\x65\x73", "\x6C\x69\x6E\x6B\x43\x6C\x61\x73\x73", "\x24\x74\x61\x62\x43\x6F\x6E\x74\x65\x6E\x74", "\x5B\x64\x61\x74\x61\x2D\x74\x61\x62\x73\x2D\x63\x6F\x6E\x74\x65\x6E\x74\x3D\x22", "\x70\x72\x65\x73\x65\x6E\x74\x61\x74\x69\x6F\x6E", "\x6D\x61\x74\x63\x68\x48\x65\x69\x67\x68\x74", "\x5F\x73\x65\x74\x48\x65\x69\x67\x68\x74", "\x5F\x61\x64\x64\x43\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72", "\x63\x6C\x69\x63\x6B\x2E\x7A\x66\x2E\x74\x61\x62\x73", "\x5F\x61\x64\x64\x4B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72", "\x6C\x69\x3A\x66\x69\x72\x73\x74\x2D\x6F\x66\x2D\x74\x79\x70\x65", "\x6C\x69\x3A\x6C\x61\x73\x74\x2D\x6F\x66\x2D\x74\x79\x70\x65", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x74\x61\x62\x73", "\x77\x72\x61\x70\x4F\x6E\x4B\x65\x79\x73", "\x5B\x72\x6F\x6C\x65\x3D\x22\x74\x61\x62\x22\x5D", "\x5F\x68\x61\x6E\x64\x6C\x65\x54\x61\x62\x43\x68\x61\x6E\x67\x65", "\x63\x68\x61\x6E\x67\x65\x2E\x7A\x66\x2E\x74\x61\x62\x73", "\x73\x65\x6C\x65\x63\x74\x54\x61\x62", "\x5B\x68\x72\x65\x66\x3D\x22", "\x70\x61\x6E\x65\x6C\x43\x6C\x61\x73\x73", "\x2E\x7A\x66\x2E\x74\x61\x62\x73", "\x74\x61\x62\x73\x2D\x74\x69\x74\x6C\x65", "\x74\x61\x62\x73\x2D\x70\x61\x6E\x65\x6C", "\x54\x6F\x67\x67\x6C\x65\x72", "\x74\x6F\x67\x67\x6C\x65\x72", "\x5F\x74\x6F\x67\x67\x6C\x65\x41\x6E\x69\x6D\x61\x74\x65", "\x5F\x74\x6F\x67\x67\x6C\x65\x43\x6C\x61\x73\x73", "\x74\x6F\x67\x67\x6C\x65\x43\x6C\x61\x73\x73", "\x6F\x6E\x2E\x7A\x66\x2E\x74\x6F\x67\x67\x6C\x65\x72", "\x6F\x66\x66\x2E\x7A\x66\x2E\x74\x6F\x67\x67\x6C\x65\x72", "\x5F\x75\x70\x64\x61\x74\x65\x41\x52\x49\x41", "\x2E\x7A\x66\x2E\x74\x6F\x67\x67\x6C\x65\x72", "\x69\x73\x43\x6C\x69\x63\x6B", "\x54\x6F\x6F\x6C\x74\x69\x70", "\x61\x72\x69\x61\x2D\x64\x65\x73\x63\x72\x69\x62\x65\x64\x62\x79", "\x74\x69\x70\x54\x65\x78\x74", "\x74\x65\x6D\x70\x6C\x61\x74\x65", "\x74\x72\x69\x67\x67\x65\x72\x43\x6C\x61\x73\x73", "\x5F\x67\x65\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E\x43\x6C\x61\x73\x73", "\x5F\x62\x75\x69\x6C\x64\x54\x65\x6D\x70\x6C\x61\x74\x65", "\x74\x6F\x6F\x6C\x74\x69\x70\x43\x6C\x61\x73\x73", "\x74\x65\x6D\x70\x6C\x61\x74\x65\x43\x6C\x61\x73\x73\x65\x73", "\x63\x65\x6E\x74\x65\x72\x20", "\x73\x68\x6F\x77\x4F\x6E", "\x63\x6C\x6F\x73\x65\x6D\x65\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x66\x61\x64\x65\x49\x6E\x44\x75\x72\x61\x74\x69\x6F\x6E", "\x66\x61\x64\x65\x49\x6E", "\x73\x68\x6F\x77\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x66\x61\x64\x65\x4F\x75\x74\x44\x75\x72\x61\x74\x69\x6F\x6E", "\x68\x69\x64\x65\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x64\x69\x73\x61\x62\x6C\x65\x46\x6F\x72\x54\x6F\x75\x63\x68", "\x74\x61\x70\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70\x20\x74\x6F\x75\x63\x68\x65\x6E\x64\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x66\x6F\x63\x75\x73\x6F\x75\x74\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x66\x6F\x63\x75\x73\x2E\x7A\x66\x2E\x74\x6F\x6F\x6C\x74\x69\x70", "\x64\x61\x74\x61\x2D\x74\x6F\x67\x67\x6C\x65", "\x64\x61\x74\x61\x2D\x79\x65\x74\x69\x2D\x62\x6F\x78", "\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72\x20\x2E\x7A\x66\x2E\x74\x6F\x6F\x74\x69\x70", "\x68\x61\x73\x2D\x74\x69\x70", "\x54\x61\x70\x20\x74\x6F\x20\x63\x6C\x6F\x73\x65\x2E", "\x4D\x6F\x64\x65\x72\x6E\x69\x7A\x72", "\x64\x6F\x63\x75\x6D\x65\x6E\x74", "\x70\x66\x78", "\x63\x68\x61\x72\x41\x74", "\x61\x75\x74\x6F\x63\x6F\x6D\x70\x6C\x65\x74\x65\x20\x61\x75\x74\x6F\x66\x6F\x63\x75\x73\x20\x6C\x69\x73\x74\x20\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72\x20\x6D\x61\x78\x20\x6D\x69\x6E\x20\x6D\x75\x6C\x74\x69\x70\x6C\x65\x20\x70\x61\x74\x74\x65\x72\x6E\x20\x72\x65\x71\x75\x69\x72\x65\x64\x20\x73\x74\x65\x70", "\x6C\x69\x73\x74", "\x64\x61\x74\x61\x6C\x69\x73\x74", "\x48\x54\x4D\x4C\x44\x61\x74\x61\x4C\x69\x73\x74\x45\x6C\x65\x6D\x65\x6E\x74", "\x69\x6E\x70\x75\x74\x74\x79\x70\x65\x73", "\x73\x65\x61\x72\x63\x68\x20\x74\x65\x6C\x20\x75\x72\x6C\x20\x65\x6D\x61\x69\x6C\x20\x64\x61\x74\x65\x74\x69\x6D\x65\x20\x64\x61\x74\x65\x20\x6D\x6F\x6E\x74\x68\x20\x77\x65\x65\x6B\x20\x74\x69\x6D\x65\x20\x64\x61\x74\x65\x74\x69\x6D\x65\x2D\x6C\x6F\x63\x61\x6C\x20\x6E\x75\x6D\x62\x65\x72\x20\x72\x61\x6E\x67\x65\x20\x63\x6F\x6C\x6F\x72", "\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x61\x62\x73\x6F\x6C\x75\x74\x65\x3B\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x3A\x68\x69\x64\x64\x65\x6E\x3B", "\x57\x65\x62\x6B\x69\x74\x41\x70\x70\x65\x61\x72\x61\x6E\x63\x65", "\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64", "\x64\x65\x66\x61\x75\x6C\x74\x56\x69\x65\x77", "\x74\x65\x78\x74\x66\x69\x65\x6C\x64", "\x72\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64", "\x63\x68\x65\x63\x6B\x56\x61\x6C\x69\x64\x69\x74\x79", "\x32\x2E\x36\x2E\x32", "\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72", "\x3A\x29", "\x74\x6F\x53\x74\x72\x69\x6E\x67", "\x20\x2D\x77\x65\x62\x6B\x69\x74\x2D\x20\x2D\x6D\x6F\x7A\x2D\x20\x2D\x6F\x2D\x20\x2D\x6D\x73\x2D\x20", "\x57\x65\x62\x6B\x69\x74\x20\x4D\x6F\x7A\x20\x4F\x20\x6D\x73", "\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x32\x30\x30\x30\x2F\x73\x76\x67", "\x26\x23\x31\x37\x33\x3B", "\x3C\x73\x74\x79\x6C\x65\x20\x69\x64\x3D\x22\x73", "\x22\x3E", "\x3C\x2F\x73\x74\x79\x6C\x65\x3E", "\x69\x6E\x6E\x65\x72\x48\x54\x4D\x4C", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64", "\x6F\x76\x65\x72\x66\x6C\x6F\x77", "\x6D\x73\x4D\x61\x74\x63\x68\x4D\x65\x64\x69\x61", "\x20\x7B\x20\x23", "\x20\x7B\x20\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x61\x62\x73\x6F\x6C\x75\x74\x65\x3B\x20\x7D\x20\x7D", "\x66\x6C\x65\x78\x62\x6F\x78", "\x66\x6C\x65\x78\x57\x72\x61\x70", "\x63\x61\x6E\x76\x61\x73", "\x67\x65\x74\x43\x6F\x6E\x74\x65\x78\x74", "\x32\x64", "\x67\x65\x6F\x6C\x6F\x63\x61\x74\x69\x6F\x6E", "\x72\x67\x62\x61", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72\x3A\x72\x67\x62\x61\x28\x31\x35\x30\x2C\x32\x35\x35\x2C\x31\x35\x30\x2C\x2E\x35\x29", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x43\x6F\x6C\x6F\x72", "\x6D\x75\x6C\x74\x69\x70\x6C\x65\x62\x67\x73", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x3A\x75\x72\x6C\x28\x68\x74\x74\x70\x73\x3A\x2F\x2F\x29\x2C\x75\x72\x6C\x28\x68\x74\x74\x70\x73\x3A\x2F\x2F\x29\x2C\x72\x65\x64\x20\x75\x72\x6C\x28\x68\x74\x74\x70\x73\x3A\x2F\x2F\x29", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x73\x69\x7A\x65", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x53\x69\x7A\x65", "\x62\x6F\x72\x64\x65\x72\x69\x6D\x61\x67\x65", "\x62\x6F\x72\x64\x65\x72\x49\x6D\x61\x67\x65", "\x62\x6F\x72\x64\x65\x72\x72\x61\x64\x69\x75\x73", "\x62\x6F\x72\x64\x65\x72\x52\x61\x64\x69\x75\x73", "\x62\x6F\x78\x73\x68\x61\x64\x6F\x77", "\x62\x6F\x78\x53\x68\x61\x64\x6F\x77", "\x74\x65\x78\x74\x73\x68\x61\x64\x6F\x77", "\x74\x65\x78\x74\x53\x68\x61\x64\x6F\x77", "\x6F\x70\x61\x63\x69\x74\x79", "\x6F\x70\x61\x63\x69\x74\x79\x3A\x2E\x35\x35", "\x63\x73\x73\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x73", "\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x4E\x61\x6D\x65", "\x63\x73\x73\x63\x6F\x6C\x75\x6D\x6E\x73", "\x63\x6F\x6C\x75\x6D\x6E\x43\x6F\x75\x6E\x74", "\x63\x73\x73\x67\x72\x61\x64\x69\x65\x6E\x74\x73", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x69\x6D\x61\x67\x65\x3A", "\x67\x72\x61\x64\x69\x65\x6E\x74\x28\x6C\x69\x6E\x65\x61\x72\x2C\x6C\x65\x66\x74\x20\x74\x6F\x70\x2C\x72\x69\x67\x68\x74\x20\x62\x6F\x74\x74\x6F\x6D\x2C\x66\x72\x6F\x6D\x28\x23\x39\x66\x39\x29\x2C\x74\x6F\x28\x77\x68\x69\x74\x65\x29\x29\x3B", "\x6C\x69\x6E\x65\x61\x72\x2D\x67\x72\x61\x64\x69\x65\x6E\x74\x28\x6C\x65\x66\x74\x20\x74\x6F\x70\x2C\x23\x39\x66\x39\x2C\x20\x77\x68\x69\x74\x65\x29\x3B", "\x2D\x77\x65\x62\x6B\x69\x74\x2D\x20", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x49\x6D\x61\x67\x65", "\x67\x72\x61\x64\x69\x65\x6E\x74", "\x66\x6F\x6E\x74\x66\x61\x63\x65", "\x40\x66\x6F\x6E\x74\x2D\x66\x61\x63\x65\x20\x7B\x66\x6F\x6E\x74\x2D\x66\x61\x6D\x69\x6C\x79\x3A\x22\x66\x6F\x6E\x74\x22\x3B\x73\x72\x63\x3A\x75\x72\x6C\x28\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x22\x29\x7D", "\x73\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72", "\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64", "\x73\x68\x65\x65\x74", "\x63\x73\x73\x52\x75\x6C\x65\x73", "\x67\x65\x6E\x65\x72\x61\x74\x65\x64\x63\x6F\x6E\x74\x65\x6E\x74", "\x7B\x66\x6F\x6E\x74\x3A\x30\x2F\x30\x20\x61\x7D\x23", "\x3A\x61\x66\x74\x65\x72\x7B\x63\x6F\x6E\x74\x65\x6E\x74\x3A\x22", "\x22\x3B\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x3A\x68\x69\x64\x64\x65\x6E\x3B\x66\x6F\x6E\x74\x3A\x33\x70\x78\x2F\x31\x20\x61\x7D", "\x76\x69\x64\x65\x6F", "\x63\x61\x6E\x50\x6C\x61\x79\x54\x79\x70\x65", "\x6F\x67\x67", "\x76\x69\x64\x65\x6F\x2F\x6F\x67\x67\x3B\x20\x63\x6F\x64\x65\x63\x73\x3D\x22\x74\x68\x65\x6F\x72\x61\x22", "\x68\x32\x36\x34", "\x76\x69\x64\x65\x6F\x2F\x6D\x70\x34\x3B\x20\x63\x6F\x64\x65\x63\x73\x3D\x22\x61\x76\x63\x31\x2E\x34\x32\x45\x30\x31\x45\x22", "\x77\x65\x62\x6D", "\x76\x69\x64\x65\x6F\x2F\x77\x65\x62\x6D\x3B\x20\x63\x6F\x64\x65\x63\x73\x3D\x22\x76\x70\x38\x2C\x20\x76\x6F\x72\x62\x69\x73\x22", "\x61\x75\x64\x69\x6F", "\x61\x75\x64\x69\x6F\x2F\x6F\x67\x67\x3B\x20\x63\x6F\x64\x65\x63\x73\x3D\x22\x76\x6F\x72\x62\x69\x73\x22", "\x6D\x70\x33", "\x61\x75\x64\x69\x6F\x2F\x6D\x70\x65\x67\x3B", "\x77\x61\x76", "\x61\x75\x64\x69\x6F\x2F\x77\x61\x76\x3B\x20\x63\x6F\x64\x65\x63\x73\x3D\x22\x31\x22", "\x6D\x34\x61", "\x61\x75\x64\x69\x6F\x2F\x78\x2D\x6D\x34\x61\x3B", "\x61\x75\x64\x69\x6F\x2F\x61\x61\x63\x3B", "\x73\x76\x67", "\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x4E\x53", "\x63\x72\x65\x61\x74\x65\x53\x56\x47\x52\x65\x63\x74", "\x69\x6E\x6C\x69\x6E\x65\x73\x76\x67", "\x3C\x73\x76\x67\x2F\x3E", "\x66\x69\x72\x73\x74\x43\x68\x69\x6C\x64", "\x6E\x61\x6D\x65\x73\x70\x61\x63\x65\x55\x52\x49", "\x73\x76\x67\x63\x6C\x69\x70\x70\x61\x74\x68\x73", "\x63\x6C\x69\x70\x50\x61\x74\x68", "\x6E\x6F\x2D", "\x61\x64\x64\x54\x65\x73\x74", "\x70", "\x78\x3C\x73\x74\x79\x6C\x65\x3E", "\x6C\x61\x73\x74\x43\x68\x69\x6C\x64", "\x65\x6C\x65\x6D\x65\x6E\x74\x73", "\x63\x61\x63\x68\x65", "\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65", "\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D", "\x63\x61\x6E\x48\x61\x76\x65\x43\x68\x69\x6C\x64\x72\x65\x6E", "\x66\x72\x61\x67", "\x63\x72\x65\x61\x74\x65\x44\x6F\x63\x75\x6D\x65\x6E\x74\x46\x72\x61\x67\x6D\x65\x6E\x74", "\x63\x72\x65\x61\x74\x65\x46\x72\x61\x67", "\x73\x68\x69\x76\x4D\x65\x74\x68\x6F\x64\x73", "\x68\x2C\x66", "\x72\x65\x74\x75\x72\x6E\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x28\x29\x7B\x76\x61\x72\x20\x6E\x3D\x66\x2E\x63\x6C\x6F\x6E\x65\x4E\x6F\x64\x65\x28\x29\x2C\x63\x3D\x6E\x2E\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x3B\x68\x2E\x73\x68\x69\x76\x4D\x65\x74\x68\x6F\x64\x73\x26\x26\x28", "\x63\x28\x22", "\x22\x29", "\x29\x3B\x72\x65\x74\x75\x72\x6E\x20\x6E\x7D", "\x73\x68\x69\x76\x43\x53\x53", "\x68\x61\x73\x43\x53\x53", "\x61\x72\x74\x69\x63\x6C\x65\x2C\x61\x73\x69\x64\x65\x2C\x66\x69\x67\x63\x61\x70\x74\x69\x6F\x6E\x2C\x66\x69\x67\x75\x72\x65\x2C\x66\x6F\x6F\x74\x65\x72\x2C\x68\x65\x61\x64\x65\x72\x2C\x68\x67\x72\x6F\x75\x70\x2C\x6E\x61\x76\x2C\x73\x65\x63\x74\x69\x6F\x6E\x7B\x64\x69\x73\x70\x6C\x61\x79\x3A\x62\x6C\x6F\x63\x6B\x7D\x6D\x61\x72\x6B\x7B\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x3A\x23\x46\x46\x30\x3B\x63\x6F\x6C\x6F\x72\x3A\x23\x30\x30\x30\x7D", "\x68\x74\x6D\x6C\x35", "\x5F\x68\x74\x6D\x6C\x35\x73\x68\x69\x76", "\x3C\x78\x79\x7A\x3E\x3C\x2F\x78\x79\x7A\x3E", "\x63\x68\x69\x6C\x64\x4E\x6F\x64\x65\x73", "\x61\x62\x62\x72\x20\x61\x72\x74\x69\x63\x6C\x65\x20\x61\x73\x69\x64\x65\x20\x61\x75\x64\x69\x6F\x20\x62\x64\x69\x20\x63\x61\x6E\x76\x61\x73\x20\x64\x61\x74\x61\x20\x64\x61\x74\x61\x6C\x69\x73\x74\x20\x64\x65\x74\x61\x69\x6C\x73\x20\x66\x69\x67\x63\x61\x70\x74\x69\x6F\x6E\x20\x66\x69\x67\x75\x72\x65\x20\x66\x6F\x6F\x74\x65\x72\x20\x68\x65\x61\x64\x65\x72\x20\x68\x67\x72\x6F\x75\x70\x20\x6D\x61\x72\x6B\x20\x6D\x65\x74\x65\x72\x20\x6E\x61\x76\x20\x6F\x75\x74\x70\x75\x74\x20\x70\x72\x6F\x67\x72\x65\x73\x73\x20\x73\x65\x63\x74\x69\x6F\x6E\x20\x73\x75\x6D\x6D\x61\x72\x79\x20\x74\x69\x6D\x65\x20\x76\x69\x64\x65\x6F", "\x64\x65\x66\x61\x75\x6C\x74", "\x5F\x76\x65\x72\x73\x69\x6F\x6E", "\x5F\x70\x72\x65\x66\x69\x78\x65\x73", "\x5F\x64\x6F\x6D\x50\x72\x65\x66\x69\x78\x65\x73", "\x5F\x63\x73\x73\x6F\x6D\x50\x72\x65\x66\x69\x78\x65\x73", "\x6D\x71", "\x74\x65\x73\x74\x50\x72\x6F\x70", "\x74\x65\x73\x74\x41\x6C\x6C\x50\x72\x6F\x70\x73", "\x74\x65\x73\x74\x53\x74\x79\x6C\x65\x73", "\x24\x31\x24\x32", "\x20\x6A\x73\x20", "\x5B\x6F\x62\x6A\x65\x63\x74\x20\x46\x75\x6E\x63\x74\x69\x6F\x6E\x5D", "\x6C\x6F\x61\x64\x65\x64", "\x75\x6E\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x64", "\x73\x68\x69\x66\x74", "\x74", "\x73", "\x78", "\x65", "\x63", "\x69\x6E\x6A\x65\x63\x74\x43\x73\x73", "\x69\x6E\x6A\x65\x63\x74\x4A\x73", "\x72\x65\x61\x64\x79\x53\x74\x61\x74\x65", "\x72", "\x6F\x6E\x6C\x6F\x61\x64", "\x6F\x6E\x72\x65\x61\x64\x79\x73\x74\x61\x74\x65\x63\x68\x61\x6E\x67\x65", "\x65\x72\x72\x6F\x72\x54\x69\x6D\x65\x6F\x75\x74", "\x30", "\x6F\x6E\x65\x72\x72\x6F\x72", "\x6A", "\x69", "\x6C\x6F\x61\x64\x65\x72", "\x73\x65\x74\x54\x69\x6D\x65\x6F\x75\x74", "\x4D\x6F\x7A\x41\x70\x70\x65\x61\x72\x61\x6E\x63\x65", "\x63\x6F\x6D\x70\x61\x72\x65\x4E\x6F\x64\x65", "\x63\x72\x65\x61\x74\x65\x52\x61\x6E\x67\x65", "\x6F\x70\x65\x72\x61", "\x5B\x6F\x62\x6A\x65\x63\x74\x20\x4F\x70\x65\x72\x61\x5D", "\x61\x74\x74\x61\x63\x68\x45\x76\x65\x6E\x74", "\x5B\x6F\x62\x6A\x65\x63\x74\x20\x41\x72\x72\x61\x79\x5D", "\x21", "\x70\x6F\x70", "\x61\x75\x74\x6F\x43\x61\x6C\x6C\x62\x61\x63\x6B", "\x3F", "\x75\x72\x6C", "\x62\x79\x70\x61\x73\x73", "\x2F", "\x69\x6E\x73\x74\x65\x61\x64", "\x6E\x6F\x65\x78\x65\x63", "\x66\x6F\x72\x63\x65\x43\x53\x53", "\x66\x6F\x72\x63\x65\x4A\x53", "\x61\x74\x74\x72\x73", "\x6F\x72\x69\x67\x55\x72\x6C", "\x62\x6F\x74\x68", "\x63\x61\x6C\x6C\x62\x61\x63\x6B", "\x79\x65\x70", "\x6E\x6F\x70\x65", "\x79\x65\x70\x6E\x6F\x70\x65", "\x61\x64\x64\x50\x72\x65\x66\x69\x78", "\x61\x64\x64\x46\x69\x6C\x74\x65\x72", "\x6C\x6F\x61\x64\x69\x6E\x67", "\x44\x4F\x4D\x43\x6F\x6E\x74\x65\x6E\x74\x4C\x6F\x61\x64\x65\x64", "\x65\x78\x65\x63\x75\x74\x65\x53\x74\x61\x63\x6B", "\x6C\x69\x6E\x6B", "\x72\x65\x6C", "\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74", "\x72\x69\x67\x68\x74\x20\x31\x30\x70\x78\x20\x62\x6F\x74\x74\x6F\x6D\x20\x31\x30\x70\x78", "\x62\x67\x70\x6F\x73\x69\x74\x69\x6F\x6E\x73\x68\x6F\x72\x74\x68\x61\x6E\x64", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E", "\x62\x67\x70\x6F\x73\x69\x74\x69\x6F\x6E\x78\x79", "\x23\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72\x20\x7B\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A\x20\x33\x70\x78\x20\x35\x70\x78\x3B\x7D", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E\x58", "\x33\x70\x78", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2D\x78", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E\x59", "\x35\x70\x78", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x70\x6F\x73\x69\x74\x69\x6F\x6E\x2D\x79", "\x67\x65\x74\x50\x72\x6F\x70\x65\x72\x74\x79\x56\x61\x6C\x75\x65", "\x20\x23\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72\x20\x7B\x20\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x72\x65\x70\x65\x61\x74\x3A\x20\x72\x6F\x75\x6E\x64\x3B\x20\x7D\x20", "\x62\x67\x72\x65\x70\x65\x61\x74\x72\x6F\x75\x6E\x64", "\x20\x23\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72\x20\x7B\x20\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x72\x65\x70\x65\x61\x74\x3A\x20\x73\x70\x61\x63\x65\x3B\x20\x7D\x20", "\x62\x67\x72\x65\x70\x65\x61\x74\x73\x70\x61\x63\x65", "\x73\x70\x61\x63\x65", "\x23\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72\x7B\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x73\x69\x7A\x65\x3A\x63\x6F\x76\x65\x72\x7D", "\x62\x67\x73\x69\x7A\x65\x63\x6F\x76\x65\x72", "\x63\x6F\x76\x65\x72", "\x62\x6F\x78\x73\x69\x7A\x69\x6E\x67", "\x62\x6F\x78\x53\x69\x7A\x69\x6E\x67", "\x64\x6F\x63\x75\x6D\x65\x6E\x74\x4D\x6F\x64\x65", "\x63\x73\x73\x63\x61\x6C\x63", "\x77\x69\x64\x74\x68\x3A", "\x63\x61\x6C\x63\x28\x31\x30\x70\x78\x29\x3B", "\x64\x69\x73\x70\x6C\x61\x79\x2D\x74\x61\x62\x6C\x65", "\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x74\x61\x62\x6C\x65", "\x64\x69\x73\x70\x6C\x61\x79\x3A\x20\x74\x61\x62\x6C\x65\x2D\x63\x65\x6C\x6C\x3B\x20\x70\x61\x64\x64\x69\x6E\x67\x3A\x20\x31\x30\x70\x78", "\x6F\x66\x66\x73\x65\x74\x4C\x65\x66\x74", "\x6C\x61\x73\x74\x63\x68\x69\x6C\x64", "\x23\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72\x20\x64\x69\x76\x20\x7B\x77\x69\x64\x74\x68\x3A\x31\x30\x30\x70\x78\x7D\x20\x23\x6D\x6F\x64\x65\x72\x6E\x69\x7A\x72\x20\x3A\x6C\x61\x73\x74\x2D\x63\x68\x69\x6C\x64\x7B\x77\x69\x64\x74\x68\x3A\x32\x30\x30\x70\x78\x3B\x64\x69\x73\x70\x6C\x61\x79\x3A\x62\x6C\x6F\x63\x6B\x7D", "\x6D\x65\x64\x69\x61\x71\x75\x65\x72\x69\x65\x73", "\x6F\x6E\x6C\x79\x20\x61\x6C\x6C", "\x6F\x76\x65\x72\x66\x6C\x6F\x77\x73\x63\x72\x6F\x6C\x6C\x69\x6E\x67", "\x6F\x76\x65\x72\x66\x6C\x6F\x77\x53\x63\x72\x6F\x6C\x6C\x69\x6E\x67", "\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72", "\x74\x65\x78\x74\x61\x72\x65\x61", "\x66\x6F\x72\x6D\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x61\x70\x69", "\x66\x6F\x72\x6D\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x6D\x65\x73\x73\x61\x67\x65", "\x66\x6F\x72\x6D\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E", "\x66\x6F\x72\x6D", "\x6F\x6E\x73\x75\x62\x6D\x69\x74", "\x3C\x69\x6E\x70\x75\x74\x20\x6E\x61\x6D\x65\x3D\x22\x6D\x6F\x64\x54\x65\x73\x74\x22\x20\x72\x65\x71\x75\x69\x72\x65\x64\x3E\x3C\x62\x75\x74\x74\x6F\x6E\x3E\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E", "\x2D\x39\x39\x39\x39\x39\x65\x6D", "\x6F\x6E\x69\x6E\x76\x61\x6C\x69\x64", "\x76\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E\x4D\x65\x73\x73\x61\x67\x65", "\x63\x6C\x69\x63\x6B", "\x73\x76\x67\x66\x69\x6C\x74\x65\x72\x73", "\x53\x56\x47\x5F\x46\x45\x43\x4F\x4C\x4F\x52\x4D\x41\x54\x52\x49\x58\x5F\x54\x59\x50\x45\x5F\x53\x41\x54\x55\x52\x41\x54\x45", "\x53\x6C\x69\x63\x6B", "\x3C\x62\x75\x74\x74\x6F\x6E\x20\x74\x79\x70\x65\x3D\x22\x62\x75\x74\x74\x6F\x6E\x22\x20\x64\x61\x74\x61\x2D\x72\x6F\x6C\x65\x3D\x22\x6E\x6F\x6E\x65\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x73\x6C\x69\x63\x6B\x2D\x70\x72\x65\x76\x22\x20\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C\x3D\x22\x50\x72\x65\x76\x69\x6F\x75\x73\x22\x20\x74\x61\x62\x69\x6E\x64\x65\x78\x3D\x22\x30\x22\x20\x72\x6F\x6C\x65\x3D\x22\x62\x75\x74\x74\x6F\x6E\x22\x3E\x50\x72\x65\x76\x69\x6F\x75\x73\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E", "\x3C\x62\x75\x74\x74\x6F\x6E\x20\x74\x79\x70\x65\x3D\x22\x62\x75\x74\x74\x6F\x6E\x22\x20\x64\x61\x74\x61\x2D\x72\x6F\x6C\x65\x3D\x22\x6E\x6F\x6E\x65\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x73\x6C\x69\x63\x6B\x2D\x6E\x65\x78\x74\x22\x20\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C\x3D\x22\x4E\x65\x78\x74\x22\x20\x74\x61\x62\x69\x6E\x64\x65\x78\x3D\x22\x30\x22\x20\x72\x6F\x6C\x65\x3D\x22\x62\x75\x74\x74\x6F\x6E\x22\x3E\x4E\x65\x78\x74\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E", "\x35\x30\x70\x78", "\x65\x61\x73\x65", "\x3C\x62\x75\x74\x74\x6F\x6E\x20\x74\x79\x70\x65\x3D\x22\x62\x75\x74\x74\x6F\x6E\x22\x20\x64\x61\x74\x61\x2D\x72\x6F\x6C\x65\x3D\x22\x6E\x6F\x6E\x65\x22\x20\x72\x6F\x6C\x65\x3D\x22\x62\x75\x74\x74\x6F\x6E\x22\x20\x61\x72\x69\x61\x2D\x72\x65\x71\x75\x69\x72\x65\x64\x3D\x22\x66\x61\x6C\x73\x65\x22\x20\x74\x61\x62\x69\x6E\x64\x65\x78\x3D\x22\x30\x22\x3E", "\x3C\x2F\x62\x75\x74\x74\x6F\x6E\x3E", "\x73\x6C\x69\x63\x6B\x2D\x64\x6F\x74\x73", "\x6F\x6E\x64\x65\x6D\x61\x6E\x64", "\x77\x69\x6E\x64\x6F\x77", "\x69\x6E\x69\x74\x69\x61\x6C\x73", "\x61\x63\x74\x69\x76\x65\x42\x72\x65\x61\x6B\x70\x6F\x69\x6E\x74", "\x61\x6E\x69\x6D\x54\x79\x70\x65", "\x61\x6E\x69\x6D\x50\x72\x6F\x70", "\x62\x72\x65\x61\x6B\x70\x6F\x69\x6E\x74\x73", "\x62\x72\x65\x61\x6B\x70\x6F\x69\x6E\x74\x53\x65\x74\x74\x69\x6E\x67\x73", "\x63\x73\x73\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x73", "\x70\x6F\x73\x69\x74\x69\x6F\x6E\x50\x72\x6F\x70", "\x72\x65\x73\x70\x6F\x6E\x64\x54\x6F", "\x72\x6F\x77\x43\x6F\x75\x6E\x74", "\x73\x68\x6F\x75\x6C\x64\x43\x6C\x69\x63\x6B", "\x24\x73\x6C\x69\x64\x65\x72", "\x24\x73\x6C\x69\x64\x65\x73\x43\x61\x63\x68\x65", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x54\x79\x70\x65", "\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x54\x79\x70\x65", "\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x43\x68\x61\x6E\x67\x65", "\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x63\x68\x61\x6E\x67\x65", "\x77\x69\x6E\x64\x6F\x77\x57\x69\x64\x74\x68", "\x77\x69\x6E\x64\x6F\x77\x54\x69\x6D\x65\x72", "\x73\x6C\x69\x63\x6B", "\x63\x75\x72\x72\x65\x6E\x74\x53\x6C\x69\x64\x65", "\x69\x6E\x69\x74\x69\x61\x6C\x53\x6C\x69\x64\x65", "\x6F\x72\x69\x67\x69\x6E\x61\x6C\x53\x65\x74\x74\x69\x6E\x67\x73", "\x6D\x6F\x7A\x48\x69\x64\x64\x65\x6E", "\x6D\x6F\x7A\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x63\x68\x61\x6E\x67\x65", "\x77\x65\x62\x6B\x69\x74\x48\x69\x64\x64\x65\x6E", "\x77\x65\x62\x6B\x69\x74\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x63\x68\x61\x6E\x67\x65", "\x70\x72\x6F\x78\x79", "\x61\x75\x74\x6F\x50\x6C\x61\x79\x43\x6C\x65\x61\x72", "\x63\x6C\x69\x63\x6B\x48\x61\x6E\x64\x6C\x65\x72", "\x73\x65\x6C\x65\x63\x74\x48\x61\x6E\x64\x6C\x65\x72", "\x73\x65\x74\x50\x6F\x73\x69\x74\x69\x6F\x6E", "\x73\x77\x69\x70\x65\x48\x61\x6E\x64\x6C\x65\x72", "\x64\x72\x61\x67\x48\x61\x6E\x64\x6C\x65\x72", "\x6B\x65\x79\x48\x61\x6E\x64\x6C\x65\x72", "\x61\x75\x74\x6F\x50\x6C\x61\x79\x49\x74\x65\x72\x61\x74\x6F\x72", "\x69\x6E\x73\x74\x61\x6E\x63\x65\x55\x69\x64", "\x68\x74\x6D\x6C\x45\x78\x70\x72", "\x72\x65\x67\x69\x73\x74\x65\x72\x42\x72\x65\x61\x6B\x70\x6F\x69\x6E\x74\x73", "\x69\x6E\x69\x74", "\x63\x68\x65\x63\x6B\x52\x65\x73\x70\x6F\x6E\x73\x69\x76\x65", "\x61\x64\x64\x53\x6C\x69\x64\x65", "\x73\x6C\x69\x63\x6B\x41\x64\x64", "\x62\x6F\x6F\x6C\x65\x61\x6E", "\x73\x6C\x69\x64\x65\x43\x6F\x75\x6E\x74", "\x75\x6E\x6C\x6F\x61\x64", "\x69\x6E\x73\x65\x72\x74\x41\x66\x74\x65\x72", "\x24\x73\x6C\x69\x64\x65\x54\x72\x61\x63\x6B", "\x64\x61\x74\x61\x2D\x73\x6C\x69\x63\x6B\x2D\x69\x6E\x64\x65\x78", "\x72\x65\x69\x6E\x69\x74", "\x61\x6E\x69\x6D\x61\x74\x65\x48\x65\x69\x67\x68\x74", "\x73\x6C\x69\x64\x65\x73\x54\x6F\x53\x68\x6F\x77", "\x61\x64\x61\x70\x74\x69\x76\x65\x48\x65\x69\x67\x68\x74", "\x73\x70\x65\x65\x64", "\x24\x6C\x69\x73\x74", "\x61\x6E\x69\x6D\x61\x74\x65\x53\x6C\x69\x64\x65", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x73\x45\x6E\x61\x62\x6C\x65\x64", "\x65\x61\x73\x69\x6E\x67", "\x63\x75\x72\x72\x65\x6E\x74\x4C\x65\x66\x74", "\x63\x65\x69\x6C", "\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28", "\x70\x78\x2C\x20\x30\x70\x78\x29", "\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x28\x30\x70\x78\x2C", "\x70\x78\x29", "\x61\x70\x70\x6C\x79\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x33\x64\x28", "\x70\x78\x2C\x20\x30\x70\x78\x2C\x20\x30\x70\x78\x29", "\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x33\x64\x28\x30\x70\x78\x2C", "\x64\x69\x73\x61\x62\x6C\x65\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x61\x73\x4E\x61\x76\x46\x6F\x72", "\x67\x65\x74\x53\x6C\x69\x63\x6B", "\x75\x6E\x73\x6C\x69\x63\x6B\x65\x64", "\x73\x6C\x69\x64\x65\x48\x61\x6E\x64\x6C\x65\x72", "\x66\x61\x64\x65", "\x6D\x73\x20", "\x63\x73\x73\x45\x61\x73\x65", "\x6F\x70\x61\x63\x69\x74\x79\x20", "\x61\x75\x74\x6F\x50\x6C\x61\x79\x54\x69\x6D\x65\x72", "\x61\x75\x74\x6F\x70\x6C\x61\x79\x53\x70\x65\x65\x64", "\x64\x69\x72\x65\x63\x74\x69\x6F\x6E", "\x73\x6C\x69\x64\x65\x73\x54\x6F\x53\x63\x72\x6F\x6C\x6C", "\x62\x75\x69\x6C\x64\x41\x72\x72\x6F\x77\x73", "\x61\x72\x72\x6F\x77\x73", "\x24\x70\x72\x65\x76\x41\x72\x72\x6F\x77", "\x73\x6C\x69\x63\x6B\x2D\x61\x72\x72\x6F\x77", "\x70\x72\x65\x76\x41\x72\x72\x6F\x77", "\x24\x6E\x65\x78\x74\x41\x72\x72\x6F\x77", "\x6E\x65\x78\x74\x41\x72\x72\x6F\x77", "\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E\x20\x74\x61\x62\x69\x6E\x64\x65\x78", "\x73\x6C\x69\x63\x6B\x2D\x68\x69\x64\x64\x65\x6E", "\x61\x70\x70\x65\x6E\x64\x41\x72\x72\x6F\x77\x73", "\x61\x72\x69\x61\x2D\x64\x69\x73\x61\x62\x6C\x65\x64", "\x73\x6C\x69\x63\x6B\x2D\x64\x69\x73\x61\x62\x6C\x65\x64", "\x62\x75\x69\x6C\x64\x44\x6F\x74\x73", "\x64\x6F\x74\x73", "\x3C\x75\x6C\x20\x63\x6C\x61\x73\x73\x3D\x22", "\x64\x6F\x74\x73\x43\x6C\x61\x73\x73", "\x67\x65\x74\x44\x6F\x74\x43\x6F\x75\x6E\x74", "\x3C\x6C\x69\x3E", "\x63\x75\x73\x74\x6F\x6D\x50\x61\x67\x69\x6E\x67", "\x3C\x2F\x6C\x69\x3E", "\x3C\x2F\x75\x6C\x3E", "\x24\x64\x6F\x74\x73", "\x61\x70\x70\x65\x6E\x64\x44\x6F\x74\x73", "\x73\x6C\x69\x63\x6B\x2D\x61\x63\x74\x69\x76\x65", "\x62\x75\x69\x6C\x64\x4F\x75\x74", "\x73\x6C\x69\x63\x6B\x2D\x73\x6C\x69\x64\x65", "\x3A\x6E\x6F\x74\x28\x2E\x73\x6C\x69\x63\x6B\x2D\x63\x6C\x6F\x6E\x65\x64\x29", "\x6F\x72\x69\x67\x69\x6E\x61\x6C\x53\x74\x79\x6C\x69\x6E\x67", "\x73\x6C\x69\x63\x6B\x2D\x73\x6C\x69\x64\x65\x72", "\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x73\x6C\x69\x63\x6B\x2D\x74\x72\x61\x63\x6B\x22\x2F\x3E", "\x77\x72\x61\x70\x41\x6C\x6C", "\x3C\x64\x69\x76\x20\x61\x72\x69\x61\x2D\x6C\x69\x76\x65\x3D\x22\x70\x6F\x6C\x69\x74\x65\x22\x20\x63\x6C\x61\x73\x73\x3D\x22\x73\x6C\x69\x63\x6B\x2D\x6C\x69\x73\x74\x22\x2F\x3E", "\x63\x65\x6E\x74\x65\x72\x4D\x6F\x64\x65", "\x73\x77\x69\x70\x65\x54\x6F\x53\x6C\x69\x64\x65", "\x73\x6C\x69\x63\x6B\x2D\x6C\x6F\x61\x64\x69\x6E\x67", "\x5B\x73\x72\x63\x5D", "\x69\x6D\x67\x5B\x64\x61\x74\x61\x2D\x6C\x61\x7A\x79\x5D", "\x73\x65\x74\x75\x70\x49\x6E\x66\x69\x6E\x69\x74\x65", "\x75\x70\x64\x61\x74\x65\x44\x6F\x74\x73", "\x73\x65\x74\x53\x6C\x69\x64\x65\x43\x6C\x61\x73\x73\x65\x73", "\x62\x75\x69\x6C\x64\x52\x6F\x77\x73", "\x72\x6F\x77\x73", "\x73\x6C\x69\x64\x65\x73\x50\x65\x72\x52\x6F\x77", "\x69\x6E\x6C\x69\x6E\x65\x2D\x62\x6C\x6F\x63\x6B", "\x69\x6E\x6E\x65\x72\x57\x69\x64\x74\x68", "\x72\x65\x73\x70\x6F\x6E\x73\x69\x76\x65", "\x6D\x6F\x62\x69\x6C\x65\x46\x69\x72\x73\x74", "\x75\x6E\x73\x6C\x69\x63\x6B", "\x72\x65\x66\x72\x65\x73\x68", "\x62\x72\x65\x61\x6B\x70\x6F\x69\x6E\x74", "\x63\x68\x65\x63\x6B\x4E\x61\x76\x69\x67\x61\x62\x6C\x65", "\x6D\x65\x73\x73\x61\x67\x65", "\x67\x65\x74\x4E\x61\x76\x69\x67\x61\x62\x6C\x65\x49\x6E\x64\x65\x78\x65\x73", "\x63\x6C\x65\x61\x6E\x55\x70\x45\x76\x65\x6E\x74\x73", "\x63\x6C\x69\x63\x6B\x2E\x73\x6C\x69\x63\x6B", "\x70\x61\x75\x73\x65\x4F\x6E\x44\x6F\x74\x73\x48\x6F\x76\x65\x72", "\x61\x75\x74\x6F\x70\x6C\x61\x79", "\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x73\x6C\x69\x63\x6B", "\x73\x65\x74\x50\x61\x75\x73\x65\x64", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E\x73\x6C\x69\x63\x6B", "\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74\x2E\x73\x6C\x69\x63\x6B\x20\x6D\x6F\x75\x73\x65\x64\x6F\x77\x6E\x2E\x73\x6C\x69\x63\x6B", "\x74\x6F\x75\x63\x68\x6D\x6F\x76\x65\x2E\x73\x6C\x69\x63\x6B\x20\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65\x2E\x73\x6C\x69\x63\x6B", "\x74\x6F\x75\x63\x68\x65\x6E\x64\x2E\x73\x6C\x69\x63\x6B\x20\x6D\x6F\x75\x73\x65\x75\x70\x2E\x73\x6C\x69\x63\x6B", "\x74\x6F\x75\x63\x68\x63\x61\x6E\x63\x65\x6C\x2E\x73\x6C\x69\x63\x6B\x20\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E\x73\x6C\x69\x63\x6B", "\x61\x63\x63\x65\x73\x73\x69\x62\x69\x6C\x69\x74\x79", "\x6B\x65\x79\x64\x6F\x77\x6E\x2E\x73\x6C\x69\x63\x6B", "\x66\x6F\x63\x75\x73\x4F\x6E\x53\x65\x6C\x65\x63\x74", "\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x63\x68\x61\x6E\x67\x65\x2E\x73\x6C\x69\x63\x6B\x2E\x73\x6C\x69\x63\x6B\x2D", "\x6F\x72\x69\x65\x6E\x74\x61\x74\x69\x6F\x6E\x43\x68\x61\x6E\x67\x65", "\x72\x65\x73\x69\x7A\x65\x2E\x73\x6C\x69\x63\x6B\x2E\x73\x6C\x69\x63\x6B\x2D", "\x64\x72\x61\x67\x73\x74\x61\x72\x74", "\x5B\x64\x72\x61\x67\x67\x61\x62\x6C\x65\x21\x3D\x74\x72\x75\x65\x5D", "\x6C\x6F\x61\x64\x2E\x73\x6C\x69\x63\x6B\x2E\x73\x6C\x69\x63\x6B\x2D", "\x72\x65\x61\x64\x79\x2E\x73\x6C\x69\x63\x6B\x2E\x73\x6C\x69\x63\x6B\x2D", "\x63\x6C\x65\x61\x6E\x55\x70\x52\x6F\x77\x73", "\x74\x6F\x75\x63\x68\x4F\x62\x6A\x65\x63\x74", "\x2E\x73\x6C\x69\x63\x6B\x2D\x63\x6C\x6F\x6E\x65\x64", "\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E\x20\x61\x72\x69\x61\x2D\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x74\x61\x62\x69\x6E\x64\x65\x78", "\x73\x6C\x69\x63\x6B\x2D\x64\x69\x73\x61\x62\x6C\x65\x64\x20\x73\x6C\x69\x63\x6B\x2D\x61\x72\x72\x6F\x77\x20\x73\x6C\x69\x63\x6B\x2D\x68\x69\x64\x64\x65\x6E", "\x73\x6C\x69\x63\x6B\x2D\x73\x6C\x69\x64\x65\x20\x73\x6C\x69\x63\x6B\x2D\x61\x63\x74\x69\x76\x65\x20\x73\x6C\x69\x63\x6B\x2D\x63\x65\x6E\x74\x65\x72\x20\x73\x6C\x69\x63\x6B\x2D\x76\x69\x73\x69\x62\x6C\x65\x20\x73\x6C\x69\x63\x6B\x2D\x63\x75\x72\x72\x65\x6E\x74", "\x73\x6C\x69\x63\x6B\x2D\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x64", "\x66\x61\x64\x65\x53\x6C\x69\x64\x65", "\x7A\x49\x6E\x64\x65\x78", "\x66\x61\x64\x65\x53\x6C\x69\x64\x65\x4F\x75\x74", "\x66\x69\x6C\x74\x65\x72\x53\x6C\x69\x64\x65\x73", "\x73\x6C\x69\x63\x6B\x46\x69\x6C\x74\x65\x72", "\x67\x65\x74\x43\x75\x72\x72\x65\x6E\x74", "\x73\x6C\x69\x63\x6B\x43\x75\x72\x72\x65\x6E\x74\x53\x6C\x69\x64\x65", "\x67\x65\x74\x4C\x65\x66\x74", "\x73\x6C\x69\x64\x65\x4F\x66\x66\x73\x65\x74", "\x73\x6C\x69\x64\x65\x57\x69\x64\x74\x68", "\x66\x6C\x6F\x6F\x72", "\x76\x61\x72\x69\x61\x62\x6C\x65\x57\x69\x64\x74\x68", "\x2E\x73\x6C\x69\x63\x6B\x2D\x73\x6C\x69\x64\x65", "\x67\x65\x74\x4F\x70\x74\x69\x6F\x6E", "\x73\x6C\x69\x63\x6B\x47\x65\x74\x4F\x70\x74\x69\x6F\x6E", "\x67\x65\x74\x53\x6C\x69\x64\x65\x43\x6F\x75\x6E\x74", "\x73\x77\x69\x70\x65\x4C\x65\x66\x74", "\x67\x6F\x54\x6F", "\x73\x6C\x69\x63\x6B\x47\x6F\x54\x6F", "\x73\x65\x74\x50\x72\x6F\x70\x73", "\x73\x74\x61\x72\x74\x4C\x6F\x61\x64", "\x6C\x6F\x61\x64\x53\x6C\x69\x64\x65\x72", "\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x45\x76\x65\x6E\x74\x73", "\x75\x70\x64\x61\x74\x65\x41\x72\x72\x6F\x77\x73", "\x69\x6E\x69\x74\x41\x44\x41", "\x69\x6E\x69\x74\x41\x72\x72\x6F\x77\x45\x76\x65\x6E\x74\x73", "\x69\x6E\x69\x74\x44\x6F\x74\x45\x76\x65\x6E\x74\x73", "\x6D\x6F\x76\x65", "\x69\x6E\x69\x74\x55\x49", "\x54\x45\x58\x54\x41\x52\x45\x41\x7C\x49\x4E\x50\x55\x54\x7C\x53\x45\x4C\x45\x43\x54", "\x74\x61\x67\x4E\x61\x6D\x65", "\x6C\x61\x7A\x79\x4C\x6F\x61\x64", "\x64\x61\x74\x61\x2D\x6C\x61\x7A\x79", "\x70\x72\x6F\x67\x72\x65\x73\x73\x69\x76\x65", "\x70\x72\x6F\x67\x72\x65\x73\x73\x69\x76\x65\x4C\x61\x7A\x79\x4C\x6F\x61\x64", "\x73\x6C\x69\x63\x6B\x4E\x65\x78\x74", "\x73\x6C\x69\x63\x6B\x50\x61\x75\x73\x65", "\x70\x6C\x61\x79", "\x73\x6C\x69\x63\x6B\x50\x6C\x61\x79", "\x70\x6F\x73\x74\x53\x6C\x69\x64\x65", "\x61\x66\x74\x65\x72\x43\x68\x61\x6E\x67\x65", "\x61\x6E\x69\x6D\x61\x74\x69\x6E\x67", "\x73\x6C\x69\x63\x6B\x50\x72\x65\x76", "\x61\x72\x72\x61\x79", "\x73\x65\x74\x74\x69\x6E\x67\x73", "\x73\x6F\x72\x74", "\x72\x65\x49\x6E\x69\x74", "\x66\x6F\x63\x75\x73\x48\x61\x6E\x64\x6C\x65\x72", "\x77\x69\x6E\x64\x6F\x77\x44\x65\x6C\x61\x79", "\x72\x65\x6D\x6F\x76\x65\x53\x6C\x69\x64\x65", "\x73\x6C\x69\x63\x6B\x52\x65\x6D\x6F\x76\x65", "\x73\x65\x74\x43\x53\x53", "\x2C\x20\x30\x70\x78\x29", "\x73\x65\x74\x44\x69\x6D\x65\x6E\x73\x69\x6F\x6E\x73", "\x30\x70\x78\x20", "\x63\x65\x6E\x74\x65\x72\x50\x61\x64\x64\x69\x6E\x67", "\x20\x30\x70\x78", "\x6C\x69\x73\x74\x57\x69\x64\x74\x68", "\x6C\x69\x73\x74\x48\x65\x69\x67\x68\x74", "\x73\x65\x74\x46\x61\x64\x65", "\x73\x65\x74\x48\x65\x69\x67\x68\x74", "\x73\x65\x74\x4F\x70\x74\x69\x6F\x6E", "\x73\x6C\x69\x63\x6B\x53\x65\x74\x4F\x70\x74\x69\x6F\x6E", "\x73\x6C\x69\x63\x6B\x2D\x76\x65\x72\x74\x69\x63\x61\x6C", "\x57\x65\x62\x6B\x69\x74\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x4D\x6F\x7A\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x6D\x73\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x75\x73\x65\x43\x53\x53", "\x4F\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x2D\x6F\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x4F\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x70\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65\x50\x72\x6F\x70\x65\x72\x74\x79", "\x77\x65\x62\x6B\x69\x74\x50\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65", "\x4D\x6F\x7A\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x2D\x6D\x6F\x7A\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x4D\x6F\x7A\x50\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65", "\x77\x65\x62\x6B\x69\x74\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x2D\x77\x65\x62\x6B\x69\x74\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x77\x65\x62\x6B\x69\x74\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E", "\x6D\x73\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x2D\x6D\x73\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x75\x73\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x73\x6C\x69\x63\x6B\x2D\x61\x63\x74\x69\x76\x65\x20\x73\x6C\x69\x63\x6B\x2D\x63\x65\x6E\x74\x65\x72\x20\x73\x6C\x69\x63\x6B\x2D\x63\x75\x72\x72\x65\x6E\x74", "\x73\x6C\x69\x63\x6B\x2D\x63\x75\x72\x72\x65\x6E\x74", "\x73\x6C\x69\x63\x6B\x2D\x63\x65\x6E\x74\x65\x72", "\x73\x6C\x69\x63\x6B\x2D\x63\x6C\x6F\x6E\x65\x64", "\x5B\x69\x64\x5D", "\x77\x61\x69\x74\x46\x6F\x72\x41\x6E\x69\x6D\x61\x74\x65", "\x62\x65\x66\x6F\x72\x65\x43\x68\x61\x6E\x67\x65", "\x73\x77\x69\x70\x65\x44\x69\x72\x65\x63\x74\x69\x6F\x6E", "\x73\x74\x61\x72\x74\x58", "\x63\x75\x72\x58", "\x73\x74\x61\x72\x74\x59", "\x63\x75\x72\x59", "\x61\x74\x61\x6E\x32", "\x50\x49", "\x76\x65\x72\x74\x69\x63\x61\x6C\x53\x77\x69\x70\x69\x6E\x67", "\x73\x77\x69\x70\x65\x45\x6E\x64", "\x73\x77\x69\x70\x65\x4C\x65\x6E\x67\x74\x68", "\x65\x64\x67\x65\x48\x69\x74", "\x65\x64\x67\x65", "\x6D\x69\x6E\x53\x77\x69\x70\x65", "\x63\x75\x72\x72\x65\x6E\x74\x44\x69\x72\x65\x63\x74\x69\x6F\x6E", "\x6F\x6E\x74\x6F\x75\x63\x68\x65\x6E\x64", "\x6D\x6F\x75\x73\x65", "\x66\x69\x6E\x67\x65\x72\x43\x6F\x75\x6E\x74", "\x6F\x72\x69\x67\x69\x6E\x61\x6C\x45\x76\x65\x6E\x74", "\x74\x6F\x75\x63\x68\x54\x68\x72\x65\x73\x68\x6F\x6C\x64", "\x73\x77\x69\x70\x65\x53\x74\x61\x72\x74", "\x73\x77\x69\x70\x65\x4D\x6F\x76\x65", "\x61\x63\x74\x69\x6F\x6E", "\x73\x71\x72\x74", "\x65\x64\x67\x65\x46\x72\x69\x63\x74\x69\x6F\x6E", "\x74\x6F\x75\x63\x68\x4D\x6F\x76\x65", "\x75\x6E\x66\x69\x6C\x74\x65\x72\x53\x6C\x69\x64\x65\x73", "\x73\x6C\x69\x63\x6B\x55\x6E\x66\x69\x6C\x74\x65\x72", "\x73\x6C\x69\x63\x6B\x2D\x73\x6C\x69\x64\x65\x20\x73\x6C\x69\x63\x6B\x2D\x61\x63\x74\x69\x76\x65\x20\x73\x6C\x69\x63\x6B\x2D\x76\x69\x73\x69\x62\x6C\x65\x20\x73\x6C\x69\x63\x6B\x2D\x63\x75\x72\x72\x65\x6E\x74", "\x61\x2C\x20\x69\x6E\x70\x75\x74\x2C\x20\x62\x75\x74\x74\x6F\x6E\x2C\x20\x73\x65\x6C\x65\x63\x74", "\x6C\x69\x73\x74\x62\x6F\x78", "\x6F\x70\x74\x69\x6F\x6E", "\x74\x6F\x6F\x6C\x62\x61\x72", "\x61\x72\x69\x61\x2D\x73\x65\x6C\x65\x63\x74\x65\x64", "\x6E\x61\x76\x69\x67\x61\x74\x69\x6F\x6E", "\x61\x63\x74\x69\x76\x61\x74\x65\x41\x44\x41", "\x2E\x73\x6C\x69\x63\x6B\x2D\x61\x63\x74\x69\x76\x65", "\x66\x6F\x63\x75\x73\x2E\x73\x6C\x69\x63\x6B\x20\x62\x6C\x75\x72\x2E\x73\x6C\x69\x63\x6B", "\x69\x73\x50\x6C\x61\x79", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72", "\x28\x3F\x29", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x69\x63\x6F\x6E", "\x61\x75\x74\x6F\x43\x6C\x6F\x73\x65", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x64\x65\x66\x61\x75\x6C\x74", "\x62\x6F\x64\x79\x4F\x76\x65\x72\x66\x6C\x6F\x77\x58", "\x63\x61\x6C\x6C\x62\x61\x63\x6B\x73", "\x63\x68\x65\x63\x6B\x49\x6E\x74\x65\x72\x76\x61\x6C", "\x43\x6F\x6E\x74\x65\x6E\x74", "\x24\x65\x6C", "\x24\x65\x6C\x50\x72\x6F\x78\x79", "\x65\x6C\x50\x72\x6F\x78\x79\x50\x6F\x73\x69\x74\x69\x6F\x6E", "\x65\x6E\x61\x62\x6C\x65\x64", "\x6D\x6F\x75\x73\x65\x49\x73\x4F\x76\x65\x72\x50\x72\x6F\x78\x79", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D", "\x53\x74\x61\x74\x75\x73", "\x74\x69\x6D\x65\x72\x48\x69\x64\x65", "\x74\x69\x6D\x65\x72\x53\x68\x6F\x77", "\x24\x74\x6F\x6F\x6C\x74\x69\x70", "\x69\x63\x6F\x6E\x54\x68\x65\x6D\x65", "\x74\x68\x65\x6D\x65", "\x71\x75\x65\x72\x79\x53\x65\x6C\x65\x63\x74\x6F\x72", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x69\x6E\x69\x74\x69\x61\x6C\x54\x69\x74\x6C\x65", "\x63\x6F\x6E\x74\x65\x6E\x74", "\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x6E\x69\x74", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x65\x64", "\x69\x63\x6F\x6E\x44\x65\x73\x6B\x74\x6F\x70", "\x69\x63\x6F\x6E\x54\x6F\x75\x63\x68", "\x69\x63\x6F\x6E", "\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22", "\x22\x3E\x3C\x2F\x73\x70\x61\x6E\x3E", "\x69\x63\x6F\x6E\x43\x6C\x6F\x6E\x69\x6E\x67", "\x6D\x6F\x75\x73\x65\x6C\x65\x61\x76\x65\x2E", "\x74\x6F\x75\x63\x68\x44\x65\x76\x69\x63\x65\x73", "\x6D\x6F\x75\x73\x65\x65\x6E\x74\x65\x72\x2E", "\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74\x2E", "\x63\x6C\x69\x63\x6B\x2E", "\x73\x68\x6F\x77\x6E", "\x61\x70\x70\x65\x61\x72\x69\x6E\x67", "\x6F\x6E\x6C\x79\x4F\x6E\x65", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x6E\x73", "\x73\x74\x61\x74\x75\x73", "\x64\x69\x73\x61\x70\x70\x65\x61\x72\x69\x6E\x67", "\x2E\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x65\x64", "\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E", "\x2D\x73\x68\x6F\x77", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x64\x79\x69\x6E\x67", "\x63\x6C\x65\x61\x72\x51\x75\x65\x75\x65", "\x71\x75\x65\x75\x65", "\x6F\x76\x65\x72\x66\x6C\x6F\x77\x2D\x78", "\x2D\x77\x65\x62\x6B\x69\x74\x2D\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x77\x65\x62\x6B\x69\x74\x2D\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x6D\x6F\x7A\x2D\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x6D\x6F\x7A\x2D\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x6F\x2D\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x6F\x2D\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x6D\x73\x2D\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x2D\x6D\x73\x2D\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B\x20\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E\x2D\x64\x75\x72\x61\x74\x69\x6F\x6E\x3A\x20", "\x6D\x73\x3B", "\x6D\x69\x6E\x57\x69\x64\x74\x68", "\x6D\x69\x6E\x2D\x77\x69\x64\x74\x68\x3A", "\x70\x78\x3B", "\x6D\x61\x78\x57\x69\x64\x74\x68", "\x6D\x61\x78\x2D\x77\x69\x64\x74\x68\x3A", "\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x76\x65", "\x70\x6F\x69\x6E\x74\x65\x72\x2D\x65\x76\x65\x6E\x74\x73\x3A\x20\x61\x75\x74\x6F\x3B", "\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x62\x61\x73\x65\x20", "\x22\x20\x73\x74\x79\x6C\x65\x3D\x22", "\x22\x3E\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x63\x6F\x6E\x74\x65\x6E\x74\x22\x3E\x3C\x2F\x64\x69\x76\x3E\x3C\x2F\x64\x69\x76\x3E", "\x72\x65\x70\x6F\x73\x69\x74\x69\x6F\x6E", "\x66\x75\x6E\x63\x74\x69\x6F\x6E\x52\x65\x61\x64\x79", "\x73\x63\x72\x6F\x6C\x6C\x2E", "\x20\x72\x65\x73\x69\x7A\x65\x2E", "\x2D\x61\x75\x74\x6F\x43\x6C\x6F\x73\x65", "\x69\x6E\x74\x65\x72\x61\x63\x74\x69\x76\x65\x54\x6F\x6C\x65\x72\x61\x6E\x63\x65", "\x68\x69\x64\x65\x4F\x6E\x43\x6C\x69\x63\x6B", "\x20\x74\x6F\x75\x63\x68\x73\x74\x61\x72\x74\x2E", "\x66\x75\x6E\x63\x74\x69\x6F\x6E\x42\x65\x66\x6F\x72\x65", "\x70\x6F\x73\x69\x74\x69\x6F\x6E\x54\x72\x61\x63\x6B\x65\x72", "\x64\x69\x6D\x65\x6E\x73\x69\x6F\x6E", "\x66\x69\x78\x65\x64", "\x70\x6F\x73\x69\x74\x69\x6F\x6E\x54\x72\x61\x63\x6B\x65\x72\x43\x61\x6C\x6C\x62\x61\x63\x6B", "\x63\x6F\x6E\x74\x65\x6E\x74\x43\x6C\x6F\x6E\x69\x6E\x67", "\x2E\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x63\x6F\x6E\x74\x65\x6E\x74", "\x63\x6F\x6E\x74\x65\x6E\x74\x41\x73\x48\x54\x4D\x4C", "\x65\x6D\x70\x74\x79", "\x75\x70\x64\x61\x74\x65\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x63\x6F\x6E\x74\x65\x6E\x74\x2D\x63\x68\x61\x6E\x67\x69\x6E\x67", "\x61\x6C\x6C\x20", "\x6D\x73\x2C\x20\x77\x69\x64\x74\x68\x20\x30\x6D\x73\x2C\x20\x68\x65\x69\x67\x68\x74\x20\x30\x6D\x73\x2C\x20\x6C\x65\x66\x74\x20\x30\x6D\x73\x2C\x20\x74\x6F\x70\x20\x30\x6D\x73", "\x6D\x73", "\x66\x61\x64\x65\x54\x6F", "\x66\x75\x6E\x63\x74\x69\x6F\x6E\x41\x66\x74\x65\x72", "\x61\x72\x65\x61", "\x73\x68\x61\x70\x65", "\x69\x6D\x67\x5B\x75\x73\x65\x6D\x61\x70\x3D\x22\x23", "\x63\x6F\x6F\x72\x64\x73", "\x2C", "\x63\x69\x72\x63\x6C\x65", "\x72\x65\x63\x74", "\x70\x6F\x6C\x79", "\x65\x76\x65\x6E", "\x6F\x64\x64", "\x6F\x66\x66\x73\x65\x74\x59", "\x6F\x66\x66\x73\x65\x74\x58", "\x73\x63\x72\x6F\x6C\x6C\x4C\x65\x66\x74", "\x74\x6F\x70\x2D\x6C\x65\x66\x74", "\x62\x6F\x74\x74\x6F\x6D\x2D\x6C\x65\x66\x74", "\x74\x6F\x70\x2D\x72\x69\x67\x68\x74", "\x62\x6F\x74\x74\x6F\x6D\x2D\x72\x69\x67\x68\x74", "\x62\x6F\x72\x64\x65\x72\x2D\x77\x69\x64\x74\x68", "\x61\x72\x72\x6F\x77", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x61\x72\x72\x6F\x77\x2D", "\x61\x72\x72\x6F\x77\x43\x6F\x6C\x6F\x72", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x63\x6F\x6C\x6F\x72", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x61\x72\x72\x6F\x77\x2D\x72\x69\x67\x68\x74", "\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x61\x72\x72\x6F\x77\x2D\x6C\x65\x66\x74", "\x6C\x65\x66\x74\x3A", "\x62\x6F\x72\x64\x65\x72\x2D\x62\x6F\x74\x74\x6F\x6D\x2D\x77\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x2D\x62\x6F\x74\x74\x6F\x6D\x2D\x63\x6F\x6C\x6F\x72", "\x62\x6F\x72\x64\x65\x72\x2D\x74\x6F\x70\x2D\x77\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x2D\x74\x6F\x70\x2D\x63\x6F\x6C\x6F\x72", "\x62\x6F\x72\x64\x65\x72\x2D\x72\x69\x67\x68\x74\x2D\x77\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x2D\x72\x69\x67\x68\x74\x2D\x63\x6F\x6C\x6F\x72", "\x62\x6F\x72\x64\x65\x72\x2D\x6C\x65\x66\x74\x2D\x77\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x2D\x6C\x65\x66\x74\x2D\x63\x6F\x6C\x6F\x72", "\x62\x6F\x72\x64\x65\x72\x2D\x63\x6F\x6C\x6F\x72\x3A\x20", "\x6D\x61\x72\x67\x69\x6E\x2D\x74\x6F\x70\x3A\x20\x2D", "\x6D\x61\x72\x67\x69\x6E\x2D\x62\x6F\x74\x74\x6F\x6D\x3A\x20\x2D", "\x6D\x61\x72\x67\x69\x6E\x2D\x72\x69\x67\x68\x74\x3A\x20\x2D", "\x6D\x61\x72\x67\x69\x6E\x2D\x6C\x65\x66\x74\x3A\x20\x2D", "\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x61\x72\x72\x6F\x77\x2D\x62\x6F\x72\x64\x65\x72\x22\x20\x73\x74\x79\x6C\x65\x3D\x22", "\x3B\x22\x3E\x3C\x2F\x73\x70\x61\x6E\x3E", "\x2E\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x61\x72\x72\x6F\x77", "\x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x22", "\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x2D\x61\x72\x72\x6F\x77\x22\x20\x73\x74\x79\x6C\x65\x3D\x22", "\x3C\x73\x70\x61\x6E\x20\x73\x74\x79\x6C\x65\x3D\x22\x62\x6F\x72\x64\x65\x72\x2D\x63\x6F\x6C\x6F\x72\x3A", "\x3B\x22\x3E\x3C\x2F\x73\x70\x61\x6E\x3E\x3C\x2F\x64\x69\x76\x3E", "\x72\x65\x73\x74\x6F\x72\x61\x74\x69\x6F\x6E", "\x67\x72\x65\x70", "\x73\x65\x74\x44\x65\x66\x61\x75\x6C\x74\x73", "\x23\x2A\x24\x7E\x26", "\x55\x6E\x6B\x6E\x6F\x77\x6E\x20\x6D\x65\x74\x68\x6F\x64\x20\x2E\x74\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x28\x22", "\x59\x6F\x75\x20\x63\x61\x6C\x6C\x65\x64\x20\x54\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x27\x73\x20\x22", "\x22\x20\x6D\x65\x74\x68\x6F\x64\x20\x6F\x6E\x20\x61\x6E\x20\x75\x6E\x69\x6E\x69\x74\x69\x61\x6C\x69\x7A\x65\x64\x20\x65\x6C\x65\x6D\x65\x6E\x74", "\x6D\x75\x6C\x74\x69\x70\x6C\x65", "\x64\x65\x62\x75\x67", "\x54\x6F\x6F\x6C\x74\x69\x70\x73\x74\x65\x72\x3A\x20\x6F\x6E\x65\x20\x6F\x72\x20\x6D\x6F\x72\x65\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x20\x61\x72\x65\x20\x61\x6C\x72\x65\x61\x64\x79\x20\x61\x74\x74\x61\x63\x68\x65\x64\x20\x74\x6F\x20\x74\x68\x69\x73\x20\x65\x6C\x65\x6D\x65\x6E\x74\x3A\x20\x69\x67\x6E\x6F\x72\x69\x6E\x67\x2E\x20\x55\x73\x65\x20\x74\x68\x65\x20\x22\x6D\x75\x6C\x74\x69\x70\x6C\x65\x22\x20\x6F\x70\x74\x69\x6F\x6E\x20\x74\x6F\x20\x61\x74\x74\x61\x63\x68\x20\x6D\x6F\x72\x65\x20\x74\x6F\x6F\x6C\x74\x69\x70\x73\x2E", "\x6C\x6F\x67", "\x57\x65\x62\x6B\x69\x74", "\x4B\x68\x74\x6D\x6C", "\x73\x75\x62\x73\x74\x72", "\x65\x78\x70\x6F\x72\x74\x73", "\x54\x77\x65\x65\x6E\x4D\x61\x78", "\x63\x6F\x72\x65\x2E\x41\x6E\x69\x6D\x61\x74\x69\x6F\x6E", "\x63\x6F\x72\x65\x2E\x53\x69\x6D\x70\x6C\x65\x54\x69\x6D\x65\x6C\x69\x6E\x65", "\x54\x77\x65\x65\x6E\x4C\x69\x74\x65", "\x63\x79\x63\x6C\x65", "\x5F\x63\x79\x63\x6C\x65", "\x5F\x79\x6F\x79\x6F", "\x79\x6F\x79\x6F", "\x76\x61\x72\x73", "\x5F\x72\x65\x70\x65\x61\x74", "\x72\x65\x70\x65\x61\x74", "\x5F\x72\x65\x70\x65\x61\x74\x44\x65\x6C\x61\x79", "\x72\x65\x70\x65\x61\x74\x44\x65\x6C\x61\x79", "\x5F\x64\x69\x72\x74\x79", "\x72\x65\x6E\x64\x65\x72", "\x5F\x69\x6E\x74\x65\x72\x6E\x61\x6C\x73", "\x69\x73\x53\x65\x6C\x65\x63\x74\x6F\x72", "\x74\x6F", "\x76\x65\x72\x73\x69\x6F\x6E", "\x31\x2E\x31\x38\x2E\x34", "\x5F\x67\x63", "\x6B\x69\x6C\x6C", "\x6B\x69\x6C\x6C\x54\x77\x65\x65\x6E\x73\x4F\x66", "\x6B\x69\x6C\x6C\x44\x65\x6C\x61\x79\x65\x64\x43\x61\x6C\x6C\x73\x54\x6F", "\x67\x65\x74\x54\x77\x65\x65\x6E\x73\x4F\x66", "\x6C\x61\x67\x53\x6D\x6F\x6F\x74\x68\x69\x6E\x67", "\x74\x69\x63\x6B\x65\x72", "\x69\x6E\x76\x61\x6C\x69\x64\x61\x74\x65", "\x75\x70\x64\x61\x74\x65\x54\x6F", "\x72\x61\x74\x69\x6F", "\x69\x6D\x6D\x65\x64\x69\x61\x74\x65\x52\x65\x6E\x64\x65\x72", "\x5F\x73\x74\x61\x72\x74\x54\x69\x6D\x65", "\x5F\x74\x69\x6D\x65", "\x5F\x74\x69\x6D\x65\x6C\x69\x6E\x65", "\x5F\x64\x65\x6C\x61\x79", "\x69\x6E\x73\x65\x72\x74", "\x5F\x69\x6E\x69\x74\x74\x65\x64", "\x5F\x6E\x6F\x74\x69\x66\x79\x50\x6C\x75\x67\x69\x6E\x73\x4F\x66\x45\x6E\x61\x62\x6C\x65\x64", "\x5F\x66\x69\x72\x73\x74\x50\x54", "\x5F\x6F\x6E\x44\x69\x73\x61\x62\x6C\x65", "\x5F\x64\x75\x72\x61\x74\x69\x6F\x6E", "\x5F\x74\x6F\x74\x61\x6C\x54\x69\x6D\x65", "\x5F\x6E\x65\x78\x74", "\x5F\x74\x6F\x74\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E", "\x74\x6F\x74\x61\x6C\x44\x75\x72\x61\x74\x69\x6F\x6E", "\x5F\x72\x61\x77\x50\x72\x65\x76\x54\x69\x6D\x65", "\x5F\x63\x61\x6C\x63\x45\x6E\x64", "\x5F\x65\x61\x73\x65", "\x67\x65\x74\x52\x61\x74\x69\x6F", "\x5F\x72\x65\x76\x65\x72\x73\x65\x64", "\x6F\x6E\x43\x6F\x6D\x70\x6C\x65\x74\x65", "\x61\x75\x74\x6F\x52\x65\x6D\x6F\x76\x65\x43\x68\x69\x6C\x64\x72\x65\x6E", "\x6C\x61\x7A\x79", "\x69\x73\x50\x61\x75\x73\x65", "\x6F\x6E\x52\x65\x76\x65\x72\x73\x65\x43\x6F\x6D\x70\x6C\x65\x74\x65", "\x5F\x61\x63\x74\x69\x76\x65", "\x5F\x65\x61\x73\x65\x54\x79\x70\x65", "\x5F\x65\x61\x73\x65\x50\x6F\x77\x65\x72", "\x5F\x6F\x6E\x55\x70\x64\x61\x74\x65", "\x6F\x6E\x55\x70\x64\x61\x74\x65", "\x6C\x61\x7A\x79\x54\x77\x65\x65\x6E\x73", "\x5F\x6C\x61\x7A\x79", "\x5F\x70\x61\x75\x73\x65\x64", "\x5F\x73\x74\x61\x72\x74\x41\x74", "\x5F\x64\x75\x6D\x6D\x79\x47\x53", "\x6F\x6E\x53\x74\x61\x72\x74", "\x66", "\x6F\x6E\x52\x65\x70\x65\x61\x74", "\x66\x72\x6F\x6D", "\x72\x75\x6E\x42\x61\x63\x6B\x77\x61\x72\x64\x73", "\x66\x72\x6F\x6D\x54\x6F", "\x73\x74\x61\x72\x74\x41\x74", "\x73\x74\x61\x67\x67\x65\x72\x54\x6F", "\x61\x6C\x6C\x54\x6F", "\x6F\x6E\x43\x6F\x6D\x70\x6C\x65\x74\x65\x53\x63\x6F\x70\x65", "\x63\x61\x6C\x6C\x62\x61\x63\x6B\x53\x63\x6F\x70\x65", "\x73\x65\x6C\x65\x63\x74\x6F\x72", "\x73\x74\x61\x67\x67\x65\x72\x46\x72\x6F\x6D", "\x61\x6C\x6C\x46\x72\x6F\x6D", "\x73\x74\x61\x67\x67\x65\x72\x46\x72\x6F\x6D\x54\x6F", "\x61\x6C\x6C\x46\x72\x6F\x6D\x54\x6F", "\x64\x65\x6C\x61\x79\x65\x64\x43\x61\x6C\x6C", "\x73\x65\x74", "\x69\x73\x54\x77\x65\x65\x6E\x69\x6E\x67", "\x5F\x66\x69\x72\x73\x74", "\x67\x65\x74\x41\x6C\x6C\x54\x77\x65\x65\x6E\x73", "\x6B\x69\x6C\x6C\x41\x6C\x6C", "\x74\x6F\x74\x61\x6C\x54\x69\x6D\x65", "\x6B\x69\x6C\x6C\x43\x68\x69\x6C\x64\x54\x77\x65\x65\x6E\x73\x4F\x66", "\x74\x77\x65\x65\x6E\x4C\x6F\x6F\x6B\x75\x70", "\x74\x77\x65\x65\x6E\x73", "\x70\x61\x75\x73\x65\x41\x6C\x6C", "\x72\x65\x73\x75\x6D\x65\x41\x6C\x6C", "\x67\x6C\x6F\x62\x61\x6C\x54\x69\x6D\x65\x53\x63\x61\x6C\x65", "\x5F\x72\x6F\x6F\x74\x54\x69\x6D\x65\x6C\x69\x6E\x65", "\x74\x69\x6D\x65", "\x5F\x74\x69\x6D\x65\x53\x63\x61\x6C\x65", "\x5F\x72\x6F\x6F\x74\x46\x72\x61\x6D\x65\x73\x54\x69\x6D\x65\x6C\x69\x6E\x65", "\x66\x72\x61\x6D\x65", "\x70\x72\x6F\x67\x72\x65\x73\x73", "\x74\x6F\x74\x61\x6C\x50\x72\x6F\x67\x72\x65\x73\x73", "\x54\x69\x6D\x65\x6C\x69\x6E\x65\x4C\x69\x74\x65", "\x5F\x6C\x61\x62\x65\x6C\x73", "\x73\x6D\x6F\x6F\x74\x68\x43\x68\x69\x6C\x64\x54\x69\x6D\x69\x6E\x67", "\x5F\x73\x6F\x72\x74\x43\x68\x69\x6C\x64\x72\x65\x6E", "\x7B\x73\x65\x6C\x66\x7D", "\x61\x6C\x69\x67\x6E", "\x73\x74\x61\x67\x67\x65\x72", "\x6C\x61\x7A\x79\x52\x65\x6E\x64\x65\x72", "\x67\x6C\x6F\x62\x61\x6C\x73", "\x5F\x67\x73\x44\x65\x66\x69\x6E\x65", "\x70\x61\x75\x73\x65\x43\x61\x6C\x6C\x62\x61\x63\x6B", "\x5F\x66\x6F\x72\x63\x69\x6E\x67\x50\x6C\x61\x79\x68\x65\x61\x64", "\x5F\x68\x61\x73\x50\x61\x75\x73\x65", "\x65\x78\x70\x6F\x72\x74\x52\x6F\x6F\x74", "\x6E\x6F\x72\x6D\x61\x6C", "\x73\x65\x71\x75\x65\x6E\x63\x65", "\x61\x64\x64\x4C\x61\x62\x65\x6C", "\x43\x61\x6E\x6E\x6F\x74\x20\x61\x64\x64\x20", "\x20\x69\x6E\x74\x6F\x20\x74\x68\x65\x20\x74\x69\x6D\x65\x6C\x69\x6E\x65\x3B\x20\x69\x74\x20\x69\x73\x20\x6E\x6F\x74\x20\x61\x20\x74\x77\x65\x65\x6E\x2C\x20\x74\x69\x6D\x65\x6C\x69\x6E\x65\x2C\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x2C\x20\x6F\x72\x20\x73\x74\x72\x69\x6E\x67\x2E", "\x72\x61\x77\x54\x69\x6D\x65", "\x75\x73\x65\x46\x72\x61\x6D\x65\x73", "\x5F\x70\x61\x75\x73\x65\x54\x69\x6D\x65", "\x72\x65\x6D\x6F\x76\x65\x4C\x61\x62\x65\x6C", "\x5F\x72\x65\x6D\x6F\x76\x65", "\x5F\x6C\x61\x73\x74", "\x69\x6E\x73\x65\x72\x74\x4D\x75\x6C\x74\x69\x70\x6C\x65", "\x61\x70\x70\x65\x6E\x64\x4D\x75\x6C\x74\x69\x70\x6C\x65", "\x61\x64\x64\x50\x61\x75\x73\x65", "\x67\x65\x74\x4C\x61\x62\x65\x6C\x54\x69\x6D\x65", "\x5F\x70\x61\x72\x73\x65\x54\x69\x6D\x65\x4F\x72\x4C\x61\x62\x65\x6C", "\x74\x69\x6D\x65\x6C\x69\x6E\x65", "\x31", "\x73\x65\x65\x6B", "\x67\x6F\x74\x6F\x41\x6E\x64\x50\x6C\x61\x79", "\x67\x6F\x74\x6F\x41\x6E\x64\x53\x74\x6F\x70", "\x5F\x70\x72\x65\x76", "\x65\x6E\x64\x54\x69\x6D\x65", "\x5F\x68\x61\x73\x50\x61\x75\x73\x65\x64\x43\x68\x69\x6C\x64", "\x67\x65\x74\x43\x68\x69\x6C\x64\x72\x65\x6E", "\x72\x65\x63\x65\x6E\x74", "\x5F\x72\x65\x63\x65\x6E\x74", "\x5F\x63\x6F\x6E\x74\x61\x69\x6E\x73", "\x73\x68\x69\x66\x74\x43\x68\x69\x6C\x64\x72\x65\x6E", "\x5F\x6B\x69\x6C\x6C", "\x63\x6C\x65\x61\x72", "\x5F\x65\x6E\x61\x62\x6C\x65\x64", "\x74\x69\x6D\x65\x53\x63\x61\x6C\x65", "\x75\x73\x65\x73\x46\x72\x61\x6D\x65\x73", "\x54\x69\x6D\x65\x6C\x69\x6E\x65\x4D\x61\x78", "\x65\x61\x73\x69\x6E\x67\x2E\x45\x61\x73\x65", "\x61\x64\x64\x43\x61\x6C\x6C\x62\x61\x63\x6B", "\x72\x65\x6D\x6F\x76\x65\x43\x61\x6C\x6C\x62\x61\x63\x6B", "\x72\x65\x6D\x6F\x76\x65\x50\x61\x75\x73\x65", "\x74\x77\x65\x65\x6E\x54\x6F", "\x74\x77\x65\x65\x6E\x46\x72\x6F\x6D\x54\x6F", "\x5F\x6C\x6F\x63\x6B\x65\x64", "\x67\x65\x74\x41\x63\x74\x69\x76\x65", "\x67\x65\x74\x4C\x61\x62\x65\x6C\x41\x66\x74\x65\x72", "\x67\x65\x74\x4C\x61\x62\x65\x6C\x73\x41\x72\x72\x61\x79", "\x67\x65\x74\x4C\x61\x62\x65\x6C\x42\x65\x66\x6F\x72\x65", "\x63\x75\x72\x72\x65\x6E\x74\x4C\x61\x62\x65\x6C", "\x62", "\x64", "\x64\x61", "\x63\x61", "\x62\x61", "\x2C\x78\x2C\x79\x2C\x7A\x2C\x6C\x65\x66\x74\x2C\x74\x6F\x70\x2C\x72\x69\x67\x68\x74\x2C\x62\x6F\x74\x74\x6F\x6D\x2C\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70\x2C\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74\x2C\x6D\x61\x72\x67\x69\x6E\x52\x69\x67\x68\x74\x2C\x6D\x61\x72\x67\x69\x6E\x42\x6F\x74\x74\x6F\x6D\x2C\x70\x61\x64\x64\x69\x6E\x67\x4C\x65\x66\x74\x2C\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70\x2C\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74\x2C\x70\x61\x64\x64\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D\x2C\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E\x2C\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x50\x6F\x73\x69\x74\x69\x6F\x6E\x5F\x79\x2C", "\x75\x6E\x73\x68\x69\x66\x74", "\x73\x6F\x66\x74", "\x63\x75\x62\x69\x63", "\x69\x6E\x76\x61\x6C\x69\x64\x20\x42\x65\x7A\x69\x65\x72\x20\x64\x61\x74\x61", "\x62\x65\x7A\x69\x65\x72", "\x31\x2E\x33\x2E\x35", "\x5F\x74\x61\x72\x67\x65\x74", "\x5F\x66\x75\x6E\x63", "\x5F\x72\x6F\x75\x6E\x64", "\x5F\x70\x72\x6F\x70\x73", "\x5F\x74\x69\x6D\x65\x52\x65\x73", "\x74\x69\x6D\x65\x52\x65\x73\x6F\x6C\x75\x74\x69\x6F\x6E", "\x76\x61\x6C\x75\x65\x73", "\x61\x75\x74\x6F\x52\x6F\x74\x61\x74\x65", "\x6F\x72\x69\x65\x6E\x74\x54\x6F\x42\x65\x7A\x69\x65\x72", "\x5F\x61\x75\x74\x6F\x52\x6F\x74\x61\x74\x65", "\x79", "\x72\x6F\x74\x61\x74\x69\x6F\x6E", "\x5F\x6F\x76\x65\x72\x77\x72\x69\x74\x65\x50\x72\x6F\x70\x73", "\x5F\x62\x65\x7A\x69\x65\x72\x73", "\x71\x75\x61\x64\x72\x61\x74\x69\x63", "\x63\x75\x72\x76\x69\x6E\x65\x73\x73", "\x74\x68\x72\x75\x42\x61\x73\x69\x63", "\x63\x6F\x72\x72\x65\x6C\x61\x74\x65", "\x5F\x73\x65\x67\x43\x6F\x75\x6E\x74", "\x5F\x6C\x65\x6E\x67\x74\x68", "\x5F\x6C\x65\x6E\x67\x74\x68\x73", "\x6C\x65\x6E\x67\x74\x68\x73", "\x5F\x73\x65\x67\x6D\x65\x6E\x74\x73", "\x73\x65\x67\x6D\x65\x6E\x74\x73", "\x5F\x6C\x31", "\x5F\x6C\x69", "\x5F\x73\x31", "\x5F\x73\x69", "\x5F\x6C\x32", "\x5F\x63\x75\x72\x53\x65\x67", "\x5F\x73\x32", "\x5F\x70\x72\x65\x63", "\x5F\x69\x6E\x69\x74\x69\x61\x6C\x52\x6F\x74\x61\x74\x69\x6F\x6E\x73", "\x5F\x73\x74\x61\x72\x74\x52\x61\x74\x69\x6F", "\x62\x65\x7A\x69\x65\x72\x54\x68\x72\x6F\x75\x67\x68", "\x63\x75\x62\x69\x63\x54\x6F\x51\x75\x61\x64\x72\x61\x74\x69\x63", "\x5F\x61\x75\x74\x6F\x43\x53\x53", "\x71\x75\x61\x64\x72\x61\x74\x69\x63\x54\x6F\x43\x75\x62\x69\x63", "\x5F\x63\x73\x73\x52\x65\x67\x69\x73\x74\x65\x72", "\x43\x53\x53\x50\x6C\x75\x67\x69\x6E", "\x5F\x70\x61\x72\x73\x65\x54\x6F\x50\x72\x6F\x78\x79", "\x5F\x73\x65\x74\x50\x6C\x75\x67\x69\x6E\x52\x61\x74\x69\x6F", "\x43\x53\x53\x50\x72\x6F\x70\x54\x77\x65\x65\x6E", "\x70\x74", "\x73\x65\x74\x52\x61\x74\x69\x6F", "\x5F\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x5F\x67\x73\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x5F\x72\x6F\x75\x6E\x64\x50\x72\x6F\x70\x73", "\x5F\x73\x75\x70\x65\x72", "\x70\x6C\x75\x67\x69\x6E\x73\x2E\x43\x53\x53\x50\x6C\x75\x67\x69\x6E", "\x70\x6C\x75\x67\x69\x6E\x73\x2E\x54\x77\x65\x65\x6E\x50\x6C\x75\x67\x69\x6E", "\x41\x50\x49", "\x64\x65\x66\x61\x75\x6C\x74\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x50\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65", "\x64\x65\x66\x61\x75\x6C\x74\x53\x6B\x65\x77\x54\x79\x70\x65", "\x63\x6F\x6D\x70\x65\x6E\x73\x61\x74\x65\x64", "\x64\x65\x66\x61\x75\x6C\x74\x53\x6D\x6F\x6F\x74\x68\x4F\x72\x69\x67\x69\x6E", "\x73\x75\x66\x66\x69\x78\x4D\x61\x70", "\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x77\x33\x2E\x6F\x72\x67\x2F\x31\x39\x39\x39\x2F\x78\x68\x74\x6D\x6C", "\x41\x6E\x64\x72\x6F\x69\x64", "\x53\x61\x66\x61\x72\x69", "\x43\x68\x72\x6F\x6D\x65", "\x56\x65\x72\x73\x69\x6F\x6E\x2F", "\x46\x69\x72\x65\x66\x6F\x78", "\x74\x6F\x70\x3A\x31\x70\x78\x3B\x6F\x70\x61\x63\x69\x74\x79\x3A\x2E\x35\x35\x3B", "\x63\x6F\x6E\x73\x6F\x6C\x65", "\x67\x65\x74\x53\x74\x79\x6C\x65", "\x2D\x24\x31", "\x61\x75\x74\x6F\x20\x61\x75\x74\x6F", "\x63\x6F\x6E\x76\x65\x72\x74\x54\x6F\x50\x69\x78\x65\x6C\x73", "\x62\x6F\x72\x64\x65\x72", "\x63\x6C\x69\x65\x6E\x74\x57\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x3A\x30\x20\x73\x6F\x6C\x69\x64\x20\x72\x65\x64\x3B\x70\x6F\x73\x69\x74\x69\x6F\x6E\x3A", "\x3B\x6C\x69\x6E\x65\x2D\x68\x65\x69\x67\x68\x74\x3A\x30\x3B", "\x76", "\x72\x65\x6D", "\x5F\x67\x73\x43\x61\x63\x68\x65", "\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68", "\x63\x61\x63\x68\x65\x57\x69\x64\x74\x68\x73", "\x63\x61\x6C\x63\x75\x6C\x61\x74\x65\x4F\x66\x66\x73\x65\x74", "\x54\x6F\x70", "\x6D\x61\x72\x67\x69\x6E", "\x2D\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x73\x6B\x65\x77\x58", "\x73\x63\x61\x6C\x65\x58", "\x73\x63\x61\x6C\x65\x59", "\x7A", "\x72\x6F\x74\x61\x74\x69\x6F\x6E\x58", "\x72\x6F\x74\x61\x74\x69\x6F\x6E\x59", "\x73\x63\x61\x6C\x65\x5A", "\x66\x69\x6C\x74\x65\x72\x73", "\x4F\x72\x69\x67\x69\x6E", "\x42\x6F\x74\x74\x6F\x6D", "\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74", "\x6D\x61\x72\x67\x69\x6E\x52\x69\x67\x68\x74", "\x67\x65\x74\x42\x42\x6F\x78", "\x70\x61\x64\x64\x69\x6E\x67", "\x57\x69\x64\x74\x68", "\x63\x6F\x6E\x74\x61\x69\x6E", "\x30\x20\x30", "\x30\x25", "\x31\x30\x30\x25", "\x35\x30\x25", "\x6F\x78\x70", "\x6F\x79\x70", "\x6F\x78\x72", "\x6F\x79\x72", "\x6F\x78", "\x6F\x79", "\x5F", "\x72\x61\x64", "\x73\x68\x6F\x72\x74", "\x5F\x63\x77", "\x63\x63\x77", "\x70\x61\x72\x73\x65\x43\x6F\x6C\x6F\x72", "\x62\x6C\x61\x63\x6B", "\x68\x73\x6C", "\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74", "\x68\x73\x6C\x61\x28", "\x25\x2C", "\x72\x67\x62\x61\x28", "\x28\x3F\x3A\x5C\x62\x28\x3F\x3A\x28\x3F\x3A\x72\x67\x62\x7C\x72\x67\x62\x61\x7C\x68\x73\x6C\x7C\x68\x73\x6C\x61\x29\x5C\x28\x2E\x2B\x3F\x5C\x29\x29\x7C\x5C\x42\x23\x28\x3F\x3A\x5B\x30\x2D\x39\x61\x2D\x66\x5D\x7B\x33\x7D\x29\x7B\x31\x2C\x32\x7D\x5C\x62", "\x7C", "\x5C\x62", "\x67\x69", "\x63\x6F\x6C\x6F\x72\x53\x74\x72\x69\x6E\x67\x46\x69\x6C\x74\x65\x72", "\x68\x73\x6C\x28", "\x6C\x61\x73\x74\x49\x6E\x64\x65\x78", "\x64\x65\x66\x61\x75\x6C\x74\x53\x74\x72\x69\x6E\x67\x46\x69\x6C\x74\x65\x72", "\x69\x6E\x73\x65\x74", "\x20\x69\x6E\x73\x65\x74", "\x70\x61\x72\x73\x65", "\x66\x69\x72\x73\x74\x4D\x50\x54", "\x78\x73\x30", "\x78\x73\x31", "\x6C", "\x78\x6E", "\x78\x73", "\x72\x78\x70", "\x6E", "\x70\x72", "\x70\x61\x72\x73\x65\x43\x6F\x6D\x70\x6C\x65\x78", "\x61\x70\x70\x65\x6E\x64\x58\x74\x72\x61", "\x20\x74\x72\x61\x6E\x73\x70\x61\x72\x65\x6E\x74", "\x72\x67\x62\x28", "\x78\x66\x69\x72\x73\x74", "\x70\x72\x65\x66\x69\x78", "\x66\x6F\x72\x6D\x61\x74", "\x66\x6F\x72\x6D\x61\x74\x74\x65\x72", "\x64\x65\x66\x61\x75\x6C\x74\x56\x61\x6C\x75\x65", "\x63\x6F\x6C\x6F\x72", "\x63\x6F\x6C\x6C\x61\x70\x73\x69\x62\x6C\x65", "\x6D\x75\x6C\x74\x69", "\x70\x61\x72\x73\x65\x72", "\x63\x6C\x72\x73", "\x6B\x65\x79\x77\x6F\x72\x64", "\x64\x66\x6C\x74", "\x70\x72\x69\x6F\x72\x69\x74\x79", "\x5F\x72\x65\x67\x69\x73\x74\x65\x72\x43\x6F\x6D\x70\x6C\x65\x78\x53\x70\x65\x63\x69\x61\x6C\x50\x72\x6F\x70", "\x50\x6C\x75\x67\x69\x6E", "\x70\x6C\x75\x67\x69\x6E\x73", "\x67\x72\x65\x65\x6E\x73\x6F\x63\x6B", "\x63\x6F\x6D", "\x45\x72\x72\x6F\x72\x3A\x20", "\x20\x6A\x73\x20\x66\x69\x6C\x65\x20\x6E\x6F\x74\x20\x6C\x6F\x61\x64\x65\x64\x2E", "\x72\x65\x67\x69\x73\x74\x65\x72\x53\x70\x65\x63\x69\x61\x6C\x50\x72\x6F\x70", "\x75\x73\x65\x53\x56\x47\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x41\x74\x74\x72", "\x73\x63\x61\x6C\x65\x58\x2C\x73\x63\x61\x6C\x65\x59\x2C\x73\x63\x61\x6C\x65\x5A\x2C\x78\x2C\x79\x2C\x7A\x2C\x73\x6B\x65\x77\x58\x2C\x73\x6B\x65\x77\x59\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x58\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x59\x2C\x70\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65\x2C\x78\x50\x65\x72\x63\x65\x6E\x74\x2C\x79\x50\x65\x72\x63\x65\x6E\x74", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x4F\x72\x69\x67\x69\x6E", "\x70\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65", "\x66\x6F\x72\x63\x65\x33\x44", "\x64\x65\x66\x61\x75\x6C\x74\x46\x6F\x72\x63\x65\x33\x44", "\x53\x56\x47\x45\x6C\x65\x6D\x65\x6E\x74", "\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x4E\x53", "\x63\x68\x72\x6F\x6D\x65", "\x35\x30\x25\x20\x35\x30\x25", "\x73\x63\x61\x6C\x65\x58\x28\x30\x2E\x35\x29", "\x78\x4F\x72\x69\x67\x69\x6E", "\x79\x4F\x72\x69\x67\x69\x6E", "\x78\x4F\x66\x66\x73\x65\x74", "\x79\x4F\x66\x66\x73\x65\x74", "\x64\x61\x74\x61\x2D\x73\x76\x67\x2D\x6F\x72\x69\x67\x69\x6E", "\x67\x65\x74\x43\x54\x4D", "\x6D\x61\x74\x72\x69\x78\x28\x31\x2C\x20\x30\x2C\x20\x30\x2C\x20\x31\x2C\x20\x30\x2C\x20\x30\x29", "\x6D\x61\x74\x72\x69\x78", "\x74\x72\x61\x6E\x73\x6C\x61\x74\x65", "\x6D\x61\x74\x72\x69\x78\x28\x31\x2C\x30\x2C\x30\x2C\x31\x2C", "\x67\x65\x74\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x30\x20\x30\x20\x30", "\x7A\x4F\x72\x69\x67\x69\x6E", "\x63\x6F\x73", "\x73\x69\x6E", "\x72\x65\x6D\x6F\x76\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65", "\x70\x72\x6F\x67\x69\x64\x3A\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x4D\x61\x74\x72\x69\x78\x28\x4D\x31\x31\x3D", "\x2C\x20\x4D\x31\x32\x3D", "\x2C\x20\x4D\x32\x31\x3D", "\x2C\x20\x4D\x32\x32\x3D", "\x78\x50\x65\x72\x63\x65\x6E\x74", "\x79\x50\x65\x72\x63\x65\x6E\x74", "\x2C\x20\x73\x69\x7A\x69\x6E\x67\x4D\x65\x74\x68\x6F\x64\x3D\x27\x61\x75\x74\x6F\x20\x65\x78\x70\x61\x6E\x64\x27\x29", "\x2C\x20\x44\x78\x3D", "\x2C\x20\x44\x79\x3D", "\x44\x58\x49\x6D\x61\x67\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2E\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x2E\x4D\x61\x74\x72\x69\x78\x28", "\x44\x78\x3D\x30\x2C\x20\x44\x79\x3D\x30", "\x67\x72\x61\x64\x69\x65\x6E\x74\x28", "\x41\x6C\x70\x68\x61", "\x69\x65\x4F\x66\x66\x73\x65\x74\x58", "\x69\x65\x4F\x66\x66\x73\x65\x74\x59", "\x73\x65\x74\x33\x44\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x52\x61\x74\x69\x6F", "\x73\x65\x74\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x52\x61\x74\x69\x6F", "\x74\x77\x65\x65\x6E", "\x73\x6B\x65\x77\x54\x79\x70\x65", "\x73\x69\x6D\x70\x6C\x65", "\x74\x61\x6E", "\x73\x6B\x65\x77\x59", "\x6D\x61\x74\x72\x69\x78\x28", "\x25\x29\x20\x6D\x61\x74\x72\x69\x78\x28", "\x2C\x30\x2C\x30\x2C", "\x25\x29\x20\x74\x72\x61\x6E\x73\x6C\x61\x74\x65\x33\x64\x28", "\x70\x78\x2C", "\x20\x73\x63\x61\x6C\x65\x28", "\x25\x29\x20\x6D\x61\x74\x72\x69\x78\x33\x64\x28", "\x6D\x61\x74\x72\x69\x78\x33\x64\x28", "\x2C\x30\x2C\x30\x2C\x30\x2C\x30\x2C\x31\x2C\x30\x2C", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2C\x73\x63\x61\x6C\x65\x2C\x73\x63\x61\x6C\x65\x58\x2C\x73\x63\x61\x6C\x65\x59\x2C\x73\x63\x61\x6C\x65\x5A\x2C\x78\x2C\x79\x2C\x7A\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x58\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x59\x2C\x72\x6F\x74\x61\x74\x69\x6F\x6E\x5A\x2C\x73\x6B\x65\x77\x58\x2C\x73\x6B\x65\x77\x59\x2C\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E\x2C\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E\x58\x2C\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E\x59\x2C\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E\x5A\x2C\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x4F\x72\x69\x67\x69\x6E\x2C\x73\x76\x67\x4F\x72\x69\x67\x69\x6E\x2C\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x50\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65\x2C\x64\x69\x72\x65\x63\x74\x69\x6F\x6E\x61\x6C\x52\x6F\x74\x61\x74\x69\x6F\x6E\x2C\x70\x61\x72\x73\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x2C\x66\x6F\x72\x63\x65\x33\x44\x2C\x73\x6B\x65\x77\x54\x79\x70\x65\x2C\x78\x50\x65\x72\x63\x65\x6E\x74\x2C\x79\x50\x65\x72\x63\x65\x6E\x74\x2C\x73\x6D\x6F\x6F\x74\x68\x4F\x72\x69\x67\x69\x6E", "\x5F\x6C\x61\x73\x74\x50\x61\x72\x73\x65\x64\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x70\x61\x72\x73\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D", "\x73\x76\x67\x4F\x72\x69\x67\x69\x6E", "\x73\x6D\x6F\x6F\x74\x68\x4F\x72\x69\x67\x69\x6E", "\x73\x63\x61\x6C\x65", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x50\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65", "\x64\x69\x72\x65\x63\x74\x69\x6F\x6E\x61\x6C\x52\x6F\x74\x61\x74\x69\x6F\x6E", "\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E", "\x5F\x73\x68\x6F\x72\x74", "\x72\x6F\x74\x61\x74\x69\x6F\x6E\x5A", "\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E\x58", "\x73\x68\x6F\x72\x74\x52\x6F\x74\x61\x74\x69\x6F\x6E\x59", "\x30\x70\x78\x20\x30\x70\x78", "\x5F\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x54\x79\x70\x65", "\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78\x20\x23\x39\x39\x39", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x4C\x65\x66\x74\x52\x61\x64\x69\x75\x73", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x52\x69\x67\x68\x74\x52\x61\x64\x69\x75\x73", "\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x52\x69\x67\x68\x74\x52\x61\x64\x69\x75\x73", "\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x4C\x65\x66\x74\x52\x61\x64\x69\x75\x73", "\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70", "\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78", "\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x4C\x65\x66\x74\x52\x61\x64\x69\x75\x73\x2C\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x52\x69\x67\x68\x74\x52\x61\x64\x69\x75\x73\x2C\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x4C\x65\x66\x74\x52\x61\x64\x69\x75\x73\x2C\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x52\x69\x67\x68\x74\x52\x61\x64\x69\x75\x73", "\x62\x61\x63\x6B\x67\x72\x6F\x75\x6E\x64\x2D\x70\x6F\x73\x69\x74\x69\x6F\x6E", "\x2D\x78", "\x2D\x79", "\x70\x65\x72\x73\x70\x65\x63\x74\x69\x76\x65\x4F\x72\x69\x67\x69\x6E", "\x74\x72\x61\x6E\x73\x66\x6F\x72\x6D\x53\x74\x79\x6C\x65", "\x62\x61\x63\x6B\x66\x61\x63\x65\x56\x69\x73\x69\x62\x69\x6C\x69\x74\x79", "\x75\x73\x65\x72\x53\x65\x6C\x65\x63\x74", "\x6D\x61\x72\x67\x69\x6E\x54\x6F\x70\x2C\x6D\x61\x72\x67\x69\x6E\x52\x69\x67\x68\x74\x2C\x6D\x61\x72\x67\x69\x6E\x42\x6F\x74\x74\x6F\x6D\x2C\x6D\x61\x72\x67\x69\x6E\x4C\x65\x66\x74", "\x70\x61\x64\x64\x69\x6E\x67\x54\x6F\x70\x2C\x70\x61\x64\x64\x69\x6E\x67\x52\x69\x67\x68\x74\x2C\x70\x61\x64\x64\x69\x6E\x67\x42\x6F\x74\x74\x6F\x6D\x2C\x70\x61\x64\x64\x69\x6E\x67\x4C\x65\x66\x74", "\x63\x6C\x69\x70", "\x72\x65\x63\x74\x28\x30\x70\x78\x2C\x30\x70\x78\x2C\x30\x70\x78\x2C\x30\x70\x78\x29", "\x72\x65\x63\x74\x28", "\x63\x6C\x69\x70\x54\x6F\x70", "\x63\x6C\x69\x70\x52\x69\x67\x68\x74", "\x63\x6C\x69\x70\x42\x6F\x74\x74\x6F\x6D", "\x63\x6C\x69\x70\x4C\x65\x66\x74", "\x30\x70\x78\x20\x30\x70\x78\x20\x30\x70\x78\x20\x23\x39\x39\x39", "\x61\x75\x74\x6F\x52\x6F\x75\x6E\x64\x2C\x73\x74\x72\x69\x63\x74\x55\x6E\x69\x74\x73", "\x30\x70\x78\x20\x73\x6F\x6C\x69\x64\x20\x23\x30\x30\x30", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x53\x74\x79\x6C\x65", "\x73\x6F\x6C\x69\x64", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x43\x6F\x6C\x6F\x72", "\x23\x30\x30\x30", "\x62\x6F\x72\x64\x65\x72\x57\x69\x64\x74\x68", "\x62\x6F\x72\x64\x65\x72\x54\x6F\x70\x57\x69\x64\x74\x68\x2C\x62\x6F\x72\x64\x65\x72\x52\x69\x67\x68\x74\x57\x69\x64\x74\x68\x2C\x62\x6F\x72\x64\x65\x72\x42\x6F\x74\x74\x6F\x6D\x57\x69\x64\x74\x68\x2C\x62\x6F\x72\x64\x65\x72\x4C\x65\x66\x74\x57\x69\x64\x74\x68", "\x66\x6C\x6F\x61\x74\x2C\x63\x73\x73\x46\x6C\x6F\x61\x74\x2C\x73\x74\x79\x6C\x65\x46\x6C\x6F\x61\x74", "\x63\x73\x73\x46\x6C\x6F\x61\x74", "\x73\x74\x79\x6C\x65\x46\x6C\x6F\x61\x74", "\x61\x74\x72\x69\x78\x28", "\x72\x61\x64\x69\x65\x6E\x74\x28", "\x6F\x61\x64\x65\x72\x28", "\x78\x6E\x31", "\x61\x6C\x70\x68\x61\x28\x6F\x70\x61\x63\x69\x74\x79\x3D", "\x70\x61\x63\x69\x74\x79", "\x20\x61\x6C\x70\x68\x61\x28\x6F\x70\x61\x63\x69\x74\x79\x3D", "\x6F\x70\x61\x63\x69\x74\x79\x3D", "\x6F\x70\x61\x63\x69\x74\x79\x2C\x61\x6C\x70\x68\x61\x2C\x61\x75\x74\x6F\x41\x6C\x70\x68\x61", "\x61\x75\x74\x6F\x41\x6C\x70\x68\x61", "\x7A\x6F\x6F\x6D", "\x69\x6E\x68\x65\x72\x69\x74", "\x72\x65\x6D\x6F\x76\x65\x50\x72\x6F\x70\x65\x72\x74\x79", "\x5F\x67\x73\x43\x6C\x61\x73\x73\x50\x54", "\x5F\x63\x6C\x61\x73\x73\x4E\x61\x6D\x65\x50\x54", "\x28\x3F\x3A\x5C\x73\x7C\x5E\x29", "\x28\x3F\x21\x5B\x5C\x77\x2D\x5D\x29", "\x2B", "\x64\x69\x66\x73", "\x69\x73\x46\x72\x6F\x6D\x53\x74\x61\x72\x74", "\x63\x6C\x65\x61\x72\x50\x72\x6F\x70\x73", "\x5F\x74\x77\x65\x65\x6E", "\x62\x65\x7A\x69\x65\x72\x2C\x74\x68\x72\x6F\x77\x50\x72\x6F\x70\x73\x2C\x70\x68\x79\x73\x69\x63\x73\x50\x72\x6F\x70\x73\x2C\x70\x68\x79\x73\x69\x63\x73\x32\x44", "\x5F\x6F\x6E\x49\x6E\x69\x74\x54\x77\x65\x65\x6E", "\x6E\x6F\x64\x65\x54\x79\x70\x65", "\x5F\x76\x61\x72\x73", "\x61\x75\x74\x6F\x52\x6F\x75\x6E\x64", "\x57\x65\x62\x6B\x69\x74\x42\x61\x63\x6B\x66\x61\x63\x65\x56\x69\x73\x69\x62\x69\x6C\x69\x74\x79", "\x76\x69\x73\x69\x62\x6C\x65", "\x66\x69\x6C\x6C", "\x73\x74\x72\x6F\x6B\x65", "\x43\x6F\x6C\x6F\x72", "\x73\x74\x72\x69\x63\x74\x55\x6E\x69\x74\x73", "\x76\x77", "\x76\x68", "\x4E\x61\x4E", "\x69\x6E\x76\x61\x6C\x69\x64\x20", "\x20\x74\x77\x65\x65\x6E\x20\x76\x61\x6C\x75\x65\x3A\x20", "\x53\x74\x79\x6C\x65", "\x78\x73\x32", "\x78\x6E\x32", "\x78\x73\x33", "\x78\x6E\x33", "\x78\x73\x34", "\x78\x6E\x34", "\x78\x73\x35", "\x5F\x65\x6E\x61\x62\x6C\x65\x54\x72\x61\x6E\x73\x66\x6F\x72\x6D\x73", "\x5F\x61\x64\x64\x4C\x61\x7A\x79\x53\x65\x74", "\x5F\x6C\x69\x6E\x6B\x43\x53\x53\x50", "\x61\x6C\x70\x68\x61", "\x63\x61\x73\x63\x61\x64\x65\x54\x6F", "\x72\x65\x73\x65\x72\x76\x65\x64\x50\x72\x6F\x70\x73", "\x5F\x74\x61\x72\x67\x65\x74\x73", "\x61\x63\x74\x69\x76\x61\x74\x65", "\x72\x6F\x75\x6E\x64\x50\x72\x6F\x70\x73", "\x31\x2E\x35", "\x62\x6C\x6F\x62", "\x5F\x6F\x6E\x49\x6E\x69\x74\x41\x6C\x6C\x50\x72\x6F\x70\x73", "\x5F\x70\x72\x6F\x70\x4C\x6F\x6F\x6B\x75\x70", "\x70\x67", "\x5F\x61\x64\x64", "\x30\x2E\x35\x2E\x30", "\x30\x2E\x32\x2E\x31", "\x66\x69\x6E\x61\x6C\x73", "\x75\x73\x65\x52\x61\x64\x69\x61\x6E\x73", "\x65\x61\x73\x69\x6E\x67\x2E\x42\x61\x63\x6B", "\x47\x72\x65\x65\x6E\x53\x6F\x63\x6B\x47\x6C\x6F\x62\x61\x6C\x73", "\x5F\x63\x6C\x61\x73\x73", "\x65\x61\x73\x69\x6E\x67\x2E", "\x67\x61\x70", "\x5F\x70\x31", "\x5F\x70\x32", "\x63\x6F\x6E\x66\x69\x67", "\x42\x61\x63\x6B", "\x42\x61\x63\x6B\x4F\x75\x74", "\x42\x61\x63\x6B\x49\x6E", "\x42\x61\x63\x6B\x49\x6E\x4F\x75\x74", "\x65\x61\x73\x69\x6E\x67\x2E\x53\x6C\x6F\x77\x4D\x6F", "\x5F\x70", "\x5F\x70\x33", "\x65\x61\x73\x69\x6E\x67\x2E\x53\x74\x65\x70\x70\x65\x64\x45\x61\x73\x65", "\x65\x61\x73\x69\x6E\x67\x2E\x52\x6F\x75\x67\x68\x45\x61\x73\x65", "\x74\x61\x70\x65\x72", "\x72\x61\x6E\x64\x6F\x6D\x69\x7A\x65", "\x63\x6C\x61\x6D\x70", "\x73\x74\x72\x65\x6E\x67\x74\x68", "\x6F\x75\x74", "\x69\x6E", "\x42\x6F\x75\x6E\x63\x65", "\x42\x6F\x75\x6E\x63\x65\x4F\x75\x74", "\x42\x6F\x75\x6E\x63\x65\x49\x6E", "\x42\x6F\x75\x6E\x63\x65\x49\x6E\x4F\x75\x74", "\x43\x69\x72\x63", "\x43\x69\x72\x63\x4F\x75\x74", "\x43\x69\x72\x63\x49\x6E", "\x43\x69\x72\x63\x49\x6E\x4F\x75\x74", "\x61\x73\x69\x6E", "\x45\x6C\x61\x73\x74\x69\x63", "\x45\x6C\x61\x73\x74\x69\x63\x4F\x75\x74", "\x45\x6C\x61\x73\x74\x69\x63\x49\x6E", "\x45\x6C\x61\x73\x74\x69\x63\x49\x6E\x4F\x75\x74", "\x45\x78\x70\x6F", "\x45\x78\x70\x6F\x4F\x75\x74", "\x45\x78\x70\x6F\x49\x6E", "\x45\x78\x70\x6F\x49\x6E\x4F\x75\x74", "\x53\x69\x6E\x65", "\x53\x69\x6E\x65\x4F\x75\x74", "\x53\x69\x6E\x65\x49\x6E", "\x53\x69\x6E\x65\x49\x6E\x4F\x75\x74", "\x65\x61\x73\x69\x6E\x67\x2E\x45\x61\x73\x65\x4C\x6F\x6F\x6B\x75\x70", "\x53\x6C\x6F\x77\x4D\x6F", "\x65\x61\x73\x65\x2C", "\x52\x6F\x75\x67\x68\x45\x61\x73\x65", "\x53\x74\x65\x70\x70\x65\x64\x45\x61\x73\x65", "\x5F\x67\x73\x51\x75\x65\x75\x65", "\x63\x6F\x6D\x2E\x67\x72\x65\x65\x6E\x73\x6F\x63\x6B", "\x73\x63", "\x67\x73\x43\x6C\x61\x73\x73", "\x66\x75\x6E\x63", "\x63\x68\x65\x63\x6B", "\x63\x6F\x6D\x2E\x67\x72\x65\x65\x6E\x73\x6F\x63\x6B\x2E", "\x61\x6D\x64", "\x47\x72\x65\x65\x6E\x53\x6F\x63\x6B\x41\x4D\x44\x50\x61\x74\x68", "\x5F\x74\x79\x70\x65", "\x5F\x70\x6F\x77\x65\x72", "\x5F\x70\x61\x72\x61\x6D\x73", "\x65\x61\x73\x65\x49\x6E\x2C\x65\x61\x73\x65\x4F\x75\x74\x2C\x65\x61\x73\x65\x49\x6E\x4F\x75\x74", "\x4C\x69\x6E\x65\x61\x72", "\x51\x75\x61\x64", "\x43\x75\x62\x69\x63", "\x51\x75\x61\x72\x74", "\x51\x75\x69\x6E\x74\x2C\x53\x74\x72\x6F\x6E\x67", "\x2C\x50\x6F\x77\x65\x72", "\x65\x61\x73\x65\x4F\x75\x74", "\x65\x61\x73\x65\x49\x6E", "\x2C\x65\x61\x73\x65\x4E\x6F\x6E\x65", "\x65\x61\x73\x65\x49\x6E\x4F\x75\x74", "\x73\x77\x69\x6E\x67", "\x65\x76\x65\x6E\x74\x73\x2E\x45\x76\x65\x6E\x74\x44\x69\x73\x70\x61\x74\x63\x68\x65\x72", "\x5F\x6C\x69\x73\x74\x65\x6E\x65\x72\x73", "\x5F\x65\x76\x65\x6E\x74\x54\x61\x72\x67\x65\x74", "\x77\x61\x6B\x65", "\x6F", "\x54\x69\x63\x6B\x65\x72", "\x74\x69\x63\x6B", "\x73\x6C\x65\x65\x70", "\x66\x70\x73", "\x75\x73\x65\x52\x41\x46", "\x76\x69\x73\x69\x62\x69\x6C\x69\x74\x79\x53\x74\x61\x74\x65", "\x65\x76\x65\x6E\x74\x73", "\x72\x65\x76\x65\x72\x73\x65\x64", "\x72\x65\x73\x75\x6D\x65", "\x5F\x75\x6E\x63\x61\x63\x68\x65", "\x5F\x73\x77\x61\x70\x53\x65\x6C\x66\x49\x6E\x50\x61\x72\x61\x6D\x73", "\x5F\x63\x61\x6C\x6C\x62\x61\x63\x6B", "\x53\x63\x6F\x70\x65", "\x50\x61\x72\x61\x6D\x73", "\x65\x76\x65\x6E\x74\x43\x61\x6C\x6C\x62\x61\x63\x6B", "\x73\x74\x61\x72\x74\x54\x69\x6D\x65", "\x43\x61\x6E\x6E\x6F\x74\x20\x74\x77\x65\x65\x6E\x20\x61\x20\x6E\x75\x6C\x6C\x20\x74\x61\x72\x67\x65\x74\x2E", "\x6A\x71\x75\x65\x72\x79", "\x6F\x76\x65\x72\x77\x72\x69\x74\x65", "\x5F\x6F\x76\x65\x72\x77\x72\x69\x74\x65", "\x64\x65\x66\x61\x75\x6C\x74\x4F\x76\x65\x72\x77\x72\x69\x74\x65", "\x5F\x73\x69\x62\x6C\x69\x6E\x67\x73", "\x5F\x6F\x76\x65\x72\x77\x72\x69\x74\x74\x65\x6E\x50\x72\x6F\x70\x73", "\x64\x65\x66\x61\x75\x6C\x74\x45\x61\x73\x65", "\x61\x75\x74\x6F\x53\x6C\x65\x65\x70", "\x24", "\x6A\x51\x75\x65\x72\x79", "\x66\x70", "\x5F\x75\x70\x64\x61\x74\x65\x52\x6F\x6F\x74", "\x5F\x67\x73\x54\x77\x65\x65\x6E\x49\x44", "\x6F\x6E\x4F\x76\x65\x72\x77\x72\x69\x74\x65", "\x61\x75\x74\x6F\x43\x53\x53", "\x65\x61\x73\x65\x50\x61\x72\x61\x6D\x73", "\x5F\x69\x6E\x69\x74\x50\x72\x6F\x70\x73", "\x5F\x70\x72\x69\x6F\x72\x69\x74\x79", "\x5F\x6F\x6E\x45\x6E\x61\x62\x6C\x65", "\x73\x74\x72\x69\x6E\x67\x46\x69\x6C\x74\x65\x72", "\x5F\x74\x65\x6D\x70\x4B\x69\x6C\x6C", "\x5F\x70\x72\x6F\x70\x4E\x61\x6D\x65", "\x31\x2E\x31\x38\x2E\x30", "\x5F\x61\x64\x64\x54\x77\x65\x65\x6E", "\x5F\x6F\x6E\x50\x6C\x75\x67\x69\x6E\x45\x76\x65\x6E\x74", "\x70\x72\x6F\x70\x4E\x61\x6D\x65", "\x69\x6C\x6C\x65\x67\x61\x6C\x20\x70\x6C\x75\x67\x69\x6E\x20\x64\x65\x66\x69\x6E\x69\x74\x69\x6F\x6E\x2E", "\x6F\x76\x65\x72\x77\x72\x69\x74\x65\x50\x72\x6F\x70\x73", "\x70\x6C\x75\x67\x69\x6E\x73\x2E", "\x67\x6C\x6F\x62\x61\x6C", "\x47\x53\x41\x50\x20\x65\x6E\x63\x6F\x75\x6E\x74\x65\x72\x65\x64\x20\x6D\x69\x73\x73\x69\x6E\x67\x20\x64\x65\x70\x65\x6E\x64\x65\x6E\x63\x79\x3A\x20\x63\x6F\x6D\x2E\x67\x72\x65\x65\x6E\x73\x6F\x63\x6B\x2E"]; | |
!function(_0x8e92x1) { | |
_0x6341[1]; | |
var _0x8e92x2 = _0x6341[2]; | |
var _0x8e92x3 = { | |
version: _0x8e92x2, | |
_plugins: {}, | |
_uuids: [], | |
rtl: function() { | |
return window[_0x6341[0]](_0x6341[5])[_0x6341[4]](_0x6341[3]) === _0x6341[6] | |
}, | |
plugin: function(_0x8e92x4, _0x8e92x5) { | |
var _0x8e92x6 = _0x8e92x5 || _0x8e92x34(_0x8e92x4); | |
var _0x8e92x7 = _0x8e92x3a(_0x8e92x6); | |
this[_0x6341[7]][_0x8e92x7] = this[_0x8e92x6] = _0x8e92x4 | |
}, | |
registerPlugin: function(_0x8e92x4, _0x8e92x5) { | |
var _0x8e92x8 = _0x8e92x5 ? _0x8e92x3a(_0x8e92x5) : _0x8e92x34(_0x8e92x4[_0x6341[9]])[_0x6341[8]](); | |
_0x8e92x4[_0x6341[10]] = this.GetYoDigits(6, _0x8e92x8); | |
if (!_0x8e92x4[_0x6341[12]][_0x6341[4]](_0x6341[11] + _0x8e92x8)) { | |
_0x8e92x4[_0x6341[12]][_0x6341[4]](_0x6341[11] + _0x8e92x8, _0x8e92x4[_0x6341[10]]) | |
} | |
;if (!_0x8e92x4[_0x6341[12]][_0x6341[14]](_0x6341[13])) { | |
_0x8e92x4[_0x6341[12]][_0x6341[14]](_0x6341[13], _0x8e92x4) | |
} | |
;_0x8e92x4[_0x6341[12]][_0x6341[16]](_0x6341[15] + _0x8e92x8); | |
this[_0x6341[18]][_0x6341[17]](_0x8e92x4[_0x6341[10]]); | |
return | |
}, | |
unregisterPlugin: function(_0x8e92x4) { | |
var _0x8e92x8 = _0x8e92x3a(_0x8e92x34(_0x8e92x4[_0x6341[12]][_0x6341[14]](_0x6341[13])[_0x6341[9]])); | |
this[_0x6341[18]][_0x6341[20]](this[_0x6341[18]][_0x6341[19]](_0x8e92x4[_0x6341[10]]), 1); | |
_0x8e92x4[_0x6341[12]][_0x6341[23]](_0x6341[11] + _0x8e92x8)[_0x6341[22]](_0x6341[13])[_0x6341[16]](_0x6341[21] + _0x8e92x8); | |
for (var _0x8e92x9 in _0x8e92x4) { | |
_0x8e92x4[_0x8e92x9] = null | |
} | |
;return | |
}, | |
reInit: function(_0x8e92xa) { | |
var _0x8e92xb = _0x8e92xa instanceof $; | |
try { | |
if (_0x8e92xb) { | |
_0x8e92xa[_0x6341[24]](function() { | |
window[_0x6341[0]](this)[_0x6341[14]](_0x6341[13])._init() | |
}) | |
} else { | |
var _0x8e92xc = typeof _0x8e92xa | |
, _0x8e92xd = this | |
, _0x8e92xe = { | |
"\x6F\x62\x6A\x65\x63\x74": function(_0x8e92xf) { | |
_0x8e92xf[_0x6341[29]](function(_0x8e92x10) { | |
_0x8e92x10 = _0x8e92x3a(_0x8e92x10); | |
window[_0x6341[0]](_0x6341[27] + _0x8e92x10 + _0x6341[28])[_0x6341[26]](_0x6341[25]) | |
}) | |
}, | |
"\x73\x74\x72\x69\x6E\x67": function() { | |
_0x8e92xa = _0x8e92x3a(_0x8e92xa); | |
window[_0x6341[0]](_0x6341[27] + _0x8e92xa + _0x6341[28])[_0x6341[26]](_0x6341[25]) | |
}, | |
"\x75\x6E\x64\x65\x66\x69\x6E\x65\x64": function() { | |
this[_0x6341[31]](Object[_0x6341[30]](_0x8e92xd._plugins)) | |
} | |
}; | |
_0x8e92xe[_0x8e92xc](_0x8e92xa) | |
} | |
} catch (err) { | |
console[_0x6341[32]](err) | |
} finally { | |
return _0x8e92xa | |
} | |
}, | |
GetYoDigits: function(_0x8e92x11, _0x8e92x12) { | |
_0x8e92x11 = _0x8e92x11 || 6; | |
return Math[_0x6341[36]](Math[_0x6341[34]](36, _0x8e92x11 + 1) - Math[_0x6341[35]]() * Math[_0x6341[34]](36, _0x8e92x11)).toString(36)[_0x6341[33]](1) + (_0x8e92x12 ? _0x6341[37] + _0x8e92x12 : _0x6341[38]) | |
}, | |
reflow: function(_0x8e92x13, _0x8e92xa) { | |
if (typeof _0x8e92xa === _0x6341[39]) { | |
_0x8e92xa = Object[_0x6341[30]](this._plugins) | |
} else { | |
if (typeof _0x8e92xa === _0x6341[40]) { | |
_0x8e92xa = [_0x8e92xa] | |
} | |
} | |
;var _0x8e92xd = this; | |
window[_0x6341[0]][_0x6341[24]](_0x8e92xa, function(_0x8e92x14, _0x8e92x5) { | |
var _0x8e92x4 = _0x8e92xd[_0x6341[7]][_0x8e92x5]; | |
var _0x8e92x15 = window[_0x6341[0]](_0x8e92x13)[_0x6341[42]](_0x6341[27] + _0x8e92x5 + _0x6341[28])[_0x6341[41]](_0x6341[27] + _0x8e92x5 + _0x6341[28]); | |
_0x8e92x15[_0x6341[24]](function() { | |
var _0x8e92x16 = window[_0x6341[0]](this) | |
, _0x8e92x17 = {}; | |
if (_0x8e92x16[_0x6341[14]](_0x6341[13])) { | |
console[_0x6341[45]](_0x6341[43] + _0x8e92x5 + _0x6341[44]); | |
return | |
} | |
;if (_0x8e92x16[_0x6341[4]](_0x6341[46])) { | |
var _0x8e92x18 = _0x8e92x16[_0x6341[4]](_0x6341[46])[_0x6341[50]](_0x6341[51])[_0x6341[29]](function(_0x8e92x19, _0x8e92x14) { | |
var _0x8e92x1a = _0x8e92x19[_0x6341[50]](_0x6341[49])[_0x6341[48]](function(_0x8e92x1b) { | |
return _0x8e92x1b[_0x6341[47]]() | |
}); | |
if (_0x8e92x1a[0]) { | |
_0x8e92x17[_0x8e92x1a[0]] = _0x8e92x38(_0x8e92x1a[1]) | |
} | |
}) | |
} | |
;try { | |
_0x8e92x16[_0x6341[14]](_0x6341[13], new _0x8e92x4(window[_0x6341[0]](this),_0x8e92x17)) | |
} catch (er) { | |
console[_0x6341[32]](er) | |
} finally { | |
return | |
} | |
}) | |
}) | |
}, | |
getFnName: _0x8e92x34, | |
transitionend: function(_0x8e92x15) { | |
var _0x8e92x1c = { | |
"\x74\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E": _0x6341[52], | |
"\x57\x65\x62\x6B\x69\x74\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E": _0x6341[53], | |
"\x4D\x6F\x7A\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E": _0x6341[52], | |
"\x4F\x54\x72\x61\x6E\x73\x69\x74\x69\x6F\x6E": _0x6341[54] | |
}; | |
var _0x8e92x13 = document[_0x6341[56]](_0x6341[55]), _0x8e92x1d; | |
for (var _0x8e92x1e in _0x8e92x1c) { | |
if (typeof _0x8e92x13[_0x6341[57]][_0x8e92x1e] !== _0x6341[39]) { | |
_0x8e92x1d = _0x8e92x1c[_0x8e92x1e] | |
} | |
} | |
;if (_0x8e92x1d) { | |
return _0x8e92x1d | |
} else { | |
_0x8e92x1d = setTimeout(function() { | |
_0x8e92x15[_0x6341[58]](_0x6341[52], [_0x8e92x15]) | |
}, 1); | |
return _0x6341[52] | |
} | |
} | |
}; | |
_0x8e92x3[_0x6341[59]] = { | |
throttle: function(_0x8e92x1f, _0x8e92x20) { | |
var _0x8e92x21 = null ; | |
return function() { | |
var _0x8e92x22 = this | |
, _0x8e92x23 = arguments; | |
if (_0x8e92x21 === null ) { | |
_0x8e92x21 = setTimeout(function() { | |
_0x8e92x1f[_0x6341[60]](_0x8e92x22, _0x8e92x23); | |
_0x8e92x21 = null | |
}, _0x8e92x20) | |
} | |
} | |
} | |
}; | |
var _0x8e92x24 = function(_0x8e92x25) { | |
var _0x8e92xc = typeof _0x8e92x25 | |
, _0x8e92x26 = window[_0x6341[0]](_0x6341[61]) | |
, _0x8e92x27 = window[_0x6341[0]](_0x6341[62]); | |
if (!_0x8e92x26[_0x6341[63]]) { | |
window[_0x6341[0]](_0x6341[66])[_0x6341[65]](document[_0x6341[64]]) | |
} | |
;if (_0x8e92x27[_0x6341[63]]) { | |
_0x8e92x27[_0x6341[68]](_0x6341[67]) | |
} | |
;if (_0x8e92xc === _0x6341[39]) { | |
_0x8e92x3[_0x6341[69]]._init(); | |
_0x8e92x3[_0x6341[70]](this) | |
} else { | |
if (_0x8e92xc === _0x6341[40]) { | |
var _0x8e92x23 = Array[_0x6341[72]][_0x6341[33]][_0x6341[71]](arguments, 1); | |
var _0x8e92x28 = this[_0x6341[14]](_0x6341[13]); | |
if (_0x8e92x28 !== undefined && _0x8e92x28[_0x8e92x25] !== undefined) { | |
if (this[_0x6341[63]] === 1) { | |
_0x8e92x28[_0x8e92x25][_0x6341[60]](_0x8e92x28, _0x8e92x23) | |
} else { | |
this[_0x6341[24]](function(_0x8e92x14, _0x8e92x1b) { | |
_0x8e92x28[_0x8e92x25][_0x6341[60]](window[_0x6341[0]](_0x8e92x1b)[_0x6341[14]](_0x6341[13]), _0x8e92x23) | |
}) | |
} | |
} else { | |
throw new ReferenceError(_0x6341[73] + _0x8e92x25 + _0x6341[74] + (_0x8e92x28 ? _0x8e92x34(_0x8e92x28) : _0x6341[75]) + _0x6341[76]) | |
} | |
} else { | |
throw new TypeError(_0x6341[77] + _0x8e92xc + _0x6341[78]) | |
} | |
} | |
;return this | |
} | |
; | |
window[_0x6341[79]] = _0x8e92x3; | |
window[_0x6341[0]][_0x6341[80]][_0x6341[26]] = _0x8e92x24; | |
(function() { | |
if (!Date[_0x6341[81]] || !window[_0x6341[82]][_0x6341[81]]) { | |
window[_0x6341[82]][_0x6341[81]] = Date[_0x6341[81]] = function() { | |
return new Date()[_0x6341[83]]() | |
} | |
} | |
;var _0x8e92x29 = [_0x6341[84], _0x6341[85]]; | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92x29[_0x6341[63]] && !window[_0x6341[86]]; ++_0x8e92x14) { | |
var _0x8e92x2a = _0x8e92x29[_0x8e92x14]; | |
window[_0x6341[86]] = window[_0x8e92x2a + _0x6341[87]]; | |
window[_0x6341[88]] = window[_0x8e92x2a + _0x6341[89]] || window[_0x8e92x2a + _0x6341[90]] | |
} | |
;if (/iP(ad|hone|od).*OS 6/[_0x6341[93]](window[_0x6341[92]][_0x6341[91]]) || !window[_0x6341[86]] || !window[_0x6341[88]]) { | |
var _0x8e92x2b = 0; | |
window[_0x6341[86]] = function(_0x8e92x2c) { | |
var _0x8e92x2d = Date[_0x6341[81]](); | |
var _0x8e92x2e = Math[_0x6341[94]](_0x8e92x2b + 16, _0x8e92x2d); | |
return setTimeout(function() { | |
_0x8e92x2c(_0x8e92x2b = _0x8e92x2e) | |
}, _0x8e92x2e - _0x8e92x2d) | |
} | |
; | |
window[_0x6341[88]] = clearTimeout | |
} | |
;if (!window[_0x6341[95]] || !window[_0x6341[95]][_0x6341[81]]) { | |
window[_0x6341[95]] = { | |
start: Date[_0x6341[81]](), | |
now: function() { | |
return Date[_0x6341[81]]() - this[_0x6341[96]] | |
} | |
} | |
} | |
})(); | |
if (!Function[_0x6341[72]][_0x6341[97]]) { | |
Function[_0x6341[72]][_0x6341[97]] = function(_0x8e92x2f) { | |
if (typeof this !== _0x6341[98]) { | |
throw new TypeError(_0x6341[99]) | |
} | |
;var _0x8e92x30 = Array[_0x6341[72]][_0x6341[33]][_0x6341[71]](arguments, 1) | |
, _0x8e92x31 = this | |
, _0x8e92x32 = function() {} | |
, _0x8e92x33 = function() { | |
return _0x8e92x31[_0x6341[60]](this instanceof _0x8e92x32 ? this : _0x8e92x2f, _0x8e92x30[_0x6341[100]](Array[_0x6341[72]][_0x6341[33]][_0x6341[71]](arguments))) | |
} | |
; | |
if (this[_0x6341[72]]) { | |
_0x8e92x32[_0x6341[72]] = this[_0x6341[72]] | |
} | |
;_0x8e92x33[_0x6341[72]] = new _0x8e92x32(); | |
return _0x8e92x33 | |
} | |
} | |
;function _0x8e92x34(_0x8e92x35) { | |
if (Function[_0x6341[72]][_0x6341[101]] === undefined) { | |
var _0x8e92x36 = /function\s([^(]{1,})\(/; | |
var _0x8e92x37 = _0x8e92x36[_0x6341[102]](_0x8e92x35.toString()); | |
return _0x8e92x37 && _0x8e92x37[_0x6341[63]] > 1 ? _0x8e92x37[1][_0x6341[47]]() : _0x6341[38] | |
} else { | |
if (_0x8e92x35[_0x6341[72]] === undefined) { | |
return _0x8e92x35[_0x6341[9]][_0x6341[101]] | |
} else { | |
return _0x8e92x35[_0x6341[72]][_0x6341[9]][_0x6341[101]] | |
} | |
} | |
} | |
function _0x8e92x38(_0x8e92x39) { | |
if (/true/[_0x6341[93]](_0x8e92x39)) { | |
return true | |
} else { | |
if (/false/[_0x6341[93]](_0x8e92x39)) { | |
return false | |
} else { | |
if (!isNaN(_0x8e92x39 * 1)) { | |
return parseFloat(_0x8e92x39) | |
} | |
} | |
} | |
;return _0x8e92x39 | |
} | |
function _0x8e92x3a(_0x8e92x39) { | |
return _0x8e92x39[_0x6341[104]](/([a-z])([A-Z])/g, _0x6341[103])[_0x6341[8]]() | |
} | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
var _0x8e92x3c = { | |
"\x64\x65\x66\x61\x75\x6C\x74": _0x6341[105], | |
landscape: _0x6341[106], | |
portrait: _0x6341[107], | |
retina: _0x6341[108] + _0x6341[109] + _0x6341[110] + _0x6341[111] + _0x6341[112] + _0x6341[113] | |
}; | |
var _0x8e92x3d = { | |
queries: [], | |
current: _0x6341[38], | |
_init: function() { | |
var _0x8e92x3e = this; | |
var _0x8e92x3f = window[_0x6341[0]](_0x6341[116])[_0x6341[115]](_0x6341[114]); | |
var _0x8e92x40; | |
_0x8e92x40 = _0x8e92x4c(_0x8e92x3f); | |
for (var _0x8e92x41 in _0x8e92x40) { | |
_0x8e92x3e[_0x6341[119]][_0x6341[17]]({ | |
name: _0x8e92x41, | |
value: _0x6341[117] + _0x8e92x40[_0x8e92x41] + _0x6341[118] | |
}) | |
} | |
;this[_0x6341[120]] = this._getCurrentSize(); | |
this._watcher() | |
}, | |
atLeast: function(_0x8e92x42) { | |
var _0x8e92x43 = this[_0x6341[121]](_0x8e92x42); | |
if (_0x8e92x43) { | |
return window[_0x6341[123]](_0x8e92x43)[_0x6341[122]] | |
} | |
;return false | |
}, | |
get: function(_0x8e92x42) { | |
for (var _0x8e92x14 in this[_0x6341[119]]) { | |
var _0x8e92x43 = this[_0x6341[119]][_0x8e92x14]; | |
if (_0x8e92x42 === _0x8e92x43[_0x6341[101]]) { | |
return _0x8e92x43[_0x6341[124]] | |
} | |
} | |
;return null | |
}, | |
_getCurrentSize: function() { | |
var _0x8e92x44; | |
for (var _0x8e92x14 = 0; _0x8e92x14 < this[_0x6341[119]][_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92x43 = this[_0x6341[119]][_0x8e92x14]; | |
if (window[_0x6341[123]](_0x8e92x43[_0x6341[124]])[_0x6341[122]]) { | |
_0x8e92x44 = _0x8e92x43 | |
} | |
} | |
;if (typeof _0x8e92x44 === _0x6341[31]) { | |
return _0x8e92x44[_0x6341[101]] | |
} else { | |
return _0x8e92x44 | |
} | |
}, | |
_watcher: function() { | |
var _0x8e92xd = this; | |
window[_0x6341[0]](window)[_0x6341[127]](_0x6341[125], function() { | |
var _0x8e92x45 = _0x8e92xd._getCurrentSize(); | |
if (_0x8e92x45 !== _0x8e92xd[_0x6341[120]]) { | |
window[_0x6341[0]](window)[_0x6341[16]](_0x6341[126], [_0x8e92x45, _0x8e92xd[_0x6341[120]]]); | |
_0x8e92xd[_0x6341[120]] = _0x8e92x45 | |
} | |
}) | |
} | |
}; | |
Foundation[_0x6341[69]] = _0x8e92x3d; | |
window[_0x6341[123]] || (window[_0x6341[123]] = function() { | |
_0x6341[1]; | |
var _0x8e92x46 = window[_0x6341[128]] || window[_0x6341[129]]; | |
if (!_0x8e92x46) { | |
var _0x8e92x47 = document[_0x6341[56]](_0x6341[57]) | |
, _0x8e92x48 = document[_0x6341[131]](_0x6341[130])[0] | |
, _0x8e92x49 = null ; | |
_0x8e92x47[_0x6341[132]] = _0x6341[133]; | |
_0x8e92x47[_0x6341[134]] = _0x6341[135]; | |
_0x8e92x48[_0x6341[137]][_0x6341[136]](_0x8e92x47, _0x8e92x48); | |
_0x8e92x49 = _0x6341[138] in window && window[_0x6341[138]](_0x8e92x47, null ) || _0x8e92x47[_0x6341[139]]; | |
_0x8e92x46 = { | |
matchMedium: function(_0x8e92x4a) { | |
var _0x8e92x4b = _0x6341[140] + _0x8e92x4a + _0x6341[141]; | |
if (_0x8e92x47[_0x6341[142]]) { | |
_0x8e92x47[_0x6341[142]][_0x6341[143]] = _0x8e92x4b | |
} else { | |
_0x8e92x47[_0x6341[144]] = _0x8e92x4b | |
} | |
;return _0x8e92x49[_0x6341[145]] === _0x6341[146] | |
} | |
} | |
} | |
;return function(_0x8e92x4a) { | |
return { | |
matches: _0x8e92x46[_0x6341[148]](_0x8e92x4a || _0x6341[147]), | |
media: _0x8e92x4a || _0x6341[147] | |
} | |
} | |
}()); | |
function _0x8e92x4c(_0x8e92x39) { | |
var _0x8e92x4d = {}; | |
if (typeof _0x8e92x39 !== _0x6341[40]) { | |
return _0x8e92x4d | |
} | |
;_0x8e92x39 = _0x8e92x39[_0x6341[47]]()[_0x6341[33]](1, -1); | |
if (!_0x8e92x39) { | |
return _0x8e92x4d | |
} | |
;_0x8e92x4d = _0x8e92x39[_0x6341[50]](_0x6341[154])[_0x6341[153]](function(_0x8e92x4e, _0x8e92x4f) { | |
var _0x8e92x50 = _0x8e92x4f[_0x6341[104]](/\+/g, _0x6341[150])[_0x6341[50]](_0x6341[149]); | |
var _0x8e92x41 = _0x8e92x50[0]; | |
var _0x8e92x51 = _0x8e92x50[1]; | |
_0x8e92x41 = decodeURIComponent(_0x8e92x41); | |
_0x8e92x51 = _0x8e92x51 === undefined ? null : decodeURIComponent(_0x8e92x51); | |
if (!_0x8e92x4e[_0x6341[151]](_0x8e92x41)) { | |
_0x8e92x4e[_0x8e92x41] = _0x8e92x51 | |
} else { | |
if (Array[_0x6341[152]](_0x8e92x4e[_0x8e92x41])) { | |
_0x8e92x4e[_0x8e92x41][_0x6341[17]](_0x8e92x51) | |
} else { | |
_0x8e92x4e[_0x8e92x41] = [_0x8e92x4e[_0x8e92x41], _0x8e92x51] | |
} | |
} | |
;return _0x8e92x4e | |
}, {}); | |
return _0x8e92x4d | |
} | |
Foundation[_0x6341[69]] = _0x8e92x3d | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
var _0x8e92x52 = { | |
9: _0x6341[155], | |
13: _0x6341[156], | |
27: _0x6341[157], | |
32: _0x6341[158], | |
37: _0x6341[159], | |
38: _0x6341[160], | |
39: _0x6341[161], | |
40: _0x6341[162] | |
}; | |
var _0x8e92x53 = {}; | |
var _0x8e92x54 = { | |
keys: _0x8e92x5e(_0x8e92x52), | |
parseKey: function(_0x8e92x55) { | |
var _0x8e92x41 = _0x8e92x52[_0x8e92x55[_0x6341[163]] || _0x8e92x55[_0x6341[164]]] || String[_0x6341[166]](_0x8e92x55[_0x6341[163]])[_0x6341[165]](); | |
if (_0x8e92x55[_0x6341[167]]) { | |
_0x8e92x41 = _0x6341[168] + _0x8e92x41 | |
} | |
;if (_0x8e92x55[_0x6341[169]]) { | |
_0x8e92x41 = _0x6341[170] + _0x8e92x41 | |
} | |
;if (_0x8e92x55[_0x6341[171]]) { | |
_0x8e92x41 = _0x6341[172] + _0x8e92x41 | |
} | |
;return _0x8e92x41 | |
}, | |
handleKey: function(_0x8e92x55, _0x8e92x56, _0x8e92x57) { | |
var _0x8e92x58 = _0x8e92x53[_0x8e92x56], _0x8e92x59 = this[_0x6341[173]](_0x8e92x55), _0x8e92x5a, _0x8e92x5b, _0x8e92x35; | |
if (!_0x8e92x58) { | |
return console[_0x6341[45]](_0x6341[174]) | |
} | |
;if (typeof _0x8e92x58[_0x6341[175]] === _0x6341[39]) { | |
_0x8e92x5a = _0x8e92x58 | |
} else { | |
if (Foundation[_0x6341[6]]()) { | |
_0x8e92x5a = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x58[_0x6341[175]], _0x8e92x58[_0x6341[6]]) | |
} else { | |
_0x8e92x5a = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x58[_0x6341[6]], _0x8e92x58[_0x6341[175]]) | |
} | |
} | |
;_0x8e92x5b = _0x8e92x5a[_0x8e92x59]; | |
_0x8e92x35 = _0x8e92x57[_0x8e92x5b]; | |
if (_0x8e92x35 && typeof _0x8e92x35 === _0x6341[98]) { | |
_0x8e92x35[_0x6341[60]](); | |
if (_0x8e92x57[_0x6341[177]] || typeof _0x8e92x57[_0x6341[177]] === _0x6341[98]) { | |
_0x8e92x57[_0x6341[177]][_0x6341[60]]() | |
} | |
} else { | |
if (_0x8e92x57[_0x6341[178]] || typeof _0x8e92x57[_0x6341[178]] === _0x6341[98]) { | |
_0x8e92x57[_0x6341[178]][_0x6341[60]]() | |
} | |
} | |
}, | |
findFocusable: function(_0x8e92x5c) { | |
return _0x8e92x5c[_0x6341[42]](_0x6341[183])[_0x6341[182]](function() { | |
if (!window[_0x6341[0]](this)[_0x6341[180]](_0x6341[179]) || window[_0x6341[0]](this)[_0x6341[4]](_0x6341[181]) < 0) { | |
return false | |
} | |
;return true | |
}) | |
}, | |
register: function(_0x8e92x5d, _0x8e92x5a) { | |
_0x8e92x53[_0x8e92x5d] = _0x8e92x5a | |
} | |
}; | |
function _0x8e92x5e(_0x8e92x5f) { | |
var _0x8e92x60 = {}; | |
for (var _0x8e92x61 in _0x8e92x5f) { | |
_0x8e92x60[_0x8e92x5f[_0x8e92x61]] = _0x8e92x5f[_0x8e92x61] | |
} | |
;return _0x8e92x60 | |
} | |
Foundation[_0x6341[184]] = _0x8e92x54 | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
var _0x8e92x62 = [_0x6341[185], _0x6341[186]]; | |
var _0x8e92x63 = [_0x6341[187], _0x6341[188]]; | |
var _0x8e92x64 = { | |
animateIn: function(_0x8e92x65, _0x8e92x66, _0x8e92x67) { | |
_0x8e92x6f(true, _0x8e92x65, _0x8e92x66, _0x8e92x67) | |
}, | |
animateOut: function(_0x8e92x65, _0x8e92x66, _0x8e92x67) { | |
_0x8e92x6f(false, _0x8e92x65, _0x8e92x66, _0x8e92x67) | |
} | |
}; | |
function _0x8e92x68(_0x8e92x69, _0x8e92x13, _0x8e92x35) { | |
var _0x8e92x6a, _0x8e92x6b, _0x8e92x6c = null ; | |
function _0x8e92x6d(_0x8e92x6e) { | |
if (!_0x8e92x6c) { | |
_0x8e92x6c = window[_0x6341[95]][_0x6341[81]]() | |
} | |
;_0x8e92x6b = _0x8e92x6e - _0x8e92x6c; | |
_0x8e92x35[_0x6341[60]](_0x8e92x13); | |
if (_0x8e92x6b < _0x8e92x69) { | |
_0x8e92x6a = window[_0x6341[86]](_0x8e92x6d, _0x8e92x13) | |
} else { | |
window[_0x6341[88]](_0x8e92x6a); | |
_0x8e92x13[_0x6341[16]](_0x6341[189], [_0x8e92x13])[_0x6341[58]](_0x6341[189], [_0x8e92x13]) | |
} | |
} | |
_0x8e92x6a = window[_0x6341[86]](_0x8e92x6d) | |
} | |
function _0x8e92x6f(_0x8e92x70, _0x8e92x65, _0x8e92x66, _0x8e92x67) { | |
_0x8e92x65 = window[_0x6341[0]](_0x8e92x65)[_0x6341[190]](0); | |
if (!_0x8e92x65[_0x6341[63]]) { | |
return | |
} | |
;var _0x8e92x71 = _0x8e92x70 ? _0x8e92x62[0] : _0x8e92x62[1]; | |
var _0x8e92x72 = _0x8e92x70 ? _0x8e92x63[0] : _0x8e92x63[1]; | |
_0x8e92x74(); | |
_0x8e92x65[_0x6341[193]](_0x8e92x66)[_0x6341[115]](_0x6341[191], _0x6341[192]); | |
requestAnimationFrame(function() { | |
_0x8e92x65[_0x6341[193]](_0x8e92x71); | |
if (_0x8e92x70) { | |
_0x8e92x65[_0x6341[194]]() | |
} | |
}); | |
requestAnimationFrame(function() { | |
_0x8e92x65[0][_0x6341[195]]; | |
_0x8e92x65[_0x6341[115]](_0x6341[191], _0x6341[38])[_0x6341[193]](_0x8e92x72) | |
}); | |
_0x8e92x65[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x65), _0x8e92x73); | |
function _0x8e92x73() { | |
if (!_0x8e92x70) { | |
_0x8e92x65[_0x6341[197]]() | |
} | |
;_0x8e92x74(); | |
if (_0x8e92x67) { | |
_0x8e92x67[_0x6341[60]](_0x8e92x65) | |
} | |
} | |
function _0x8e92x74() { | |
_0x8e92x65[0][_0x6341[57]][_0x6341[198]] = 0; | |
_0x8e92x65[_0x6341[68]](_0x8e92x71 + _0x6341[150] + _0x8e92x72 + _0x6341[150] + _0x8e92x66) | |
} | |
} | |
Foundation[_0x6341[199]] = _0x8e92x68; | |
Foundation[_0x6341[200]] = _0x8e92x64 | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
var _0x8e92x75 = { | |
Feather: function(_0x8e92x76) { | |
var _0x8e92xc = arguments[_0x6341[63]] <= 1 || arguments[1] === undefined ? _0x6341[201] : arguments[1]; | |
_0x8e92x76[_0x6341[4]](_0x6341[202], _0x6341[203]); | |
var _0x8e92x77 = _0x8e92x76[_0x6341[42]](_0x6341[205])[_0x6341[4]]({ | |
"\x72\x6F\x6C\x65": _0x6341[204] | |
}) | |
, _0x8e92x78 = _0x6341[206] + _0x8e92xc + _0x6341[207] | |
, _0x8e92x79 = _0x8e92x78 + _0x6341[208] | |
, _0x8e92x7a = _0x6341[206] + _0x8e92xc + _0x6341[209]; | |
_0x8e92x76[_0x6341[42]](_0x6341[210])[_0x6341[4]](_0x6341[181], 0); | |
_0x8e92x77[_0x6341[24]](function() { | |
var _0x8e92x7b = window[_0x6341[0]](this) | |
, _0x8e92x7c = _0x8e92x7b[_0x6341[212]](_0x6341[211]); | |
if (_0x8e92x7c[_0x6341[63]]) { | |
_0x8e92x7b[_0x6341[193]](_0x8e92x7a)[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x61\x73\x70\x6F\x70\x75\x70": true, | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": false, | |
"\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C": _0x8e92x7b[_0x6341[212]](_0x6341[210])[_0x6341[213]]() | |
}); | |
_0x8e92x7c[_0x6341[193]](_0x6341[215] + _0x8e92x78)[_0x6341[4]]({ | |
"\x64\x61\x74\x61\x2D\x73\x75\x62\x6D\x65\x6E\x75": _0x6341[38], | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": true, | |
"\x72\x6F\x6C\x65": _0x6341[214] | |
}) | |
} | |
;if (_0x8e92x7b[_0x6341[217]](_0x6341[216])[_0x6341[63]]) { | |
_0x8e92x7b[_0x6341[193]](_0x6341[218] + _0x8e92x79) | |
} | |
}); | |
return | |
}, | |
Burn: function(_0x8e92x76, _0x8e92xc) { | |
var _0x8e92x77 = _0x8e92x76[_0x6341[42]](_0x6341[205])[_0x6341[23]](_0x6341[181]) | |
, _0x8e92x78 = _0x6341[206] + _0x8e92xc + _0x6341[207] | |
, _0x8e92x79 = _0x8e92x78 + _0x6341[208] | |
, _0x8e92x7a = _0x6341[206] + _0x8e92xc + _0x6341[209]; | |
_0x8e92x76[_0x6341[42]](_0x6341[222])[_0x6341[68]](_0x8e92x78 + _0x6341[150] + _0x8e92x79 + _0x6341[150] + _0x8e92x7a + _0x6341[221])[_0x6341[23]](_0x6341[220])[_0x6341[115]](_0x6341[219], _0x6341[38]) | |
} | |
}; | |
Foundation[_0x6341[223]] = _0x8e92x75 | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
Foundation[_0x6341[224]] = { | |
ImNotTouchingYou: _0x8e92x7d, | |
GetDimensions: _0x8e92x88, | |
GetOffsets: _0x8e92x8f | |
}; | |
function _0x8e92x7d(_0x8e92x65, _0x8e92x7e, _0x8e92x7f, _0x8e92x80) { | |
var _0x8e92x81 = _0x8e92x88(_0x8e92x65), _0x8e92x82, _0x8e92x83, _0x8e92x84, _0x8e92x85; | |
if (_0x8e92x7e) { | |
var _0x8e92x86 = _0x8e92x88(_0x8e92x7e); | |
_0x8e92x83 = _0x8e92x81[_0x6341[226]][_0x6341[225]] + _0x8e92x81[_0x6341[227]] <= _0x8e92x86[_0x6341[227]] + _0x8e92x86[_0x6341[226]][_0x6341[225]]; | |
_0x8e92x82 = _0x8e92x81[_0x6341[226]][_0x6341[225]] >= _0x8e92x86[_0x6341[226]][_0x6341[225]]; | |
_0x8e92x84 = _0x8e92x81[_0x6341[226]][_0x6341[228]] >= _0x8e92x86[_0x6341[226]][_0x6341[228]]; | |
_0x8e92x85 = _0x8e92x81[_0x6341[226]][_0x6341[228]] + _0x8e92x81[_0x6341[145]] <= _0x8e92x86[_0x6341[145]] | |
} else { | |
_0x8e92x83 = _0x8e92x81[_0x6341[226]][_0x6341[225]] + _0x8e92x81[_0x6341[227]] <= _0x8e92x81[_0x6341[229]][_0x6341[227]] + _0x8e92x81[_0x6341[229]][_0x6341[226]][_0x6341[225]]; | |
_0x8e92x82 = _0x8e92x81[_0x6341[226]][_0x6341[225]] >= _0x8e92x81[_0x6341[229]][_0x6341[226]][_0x6341[225]]; | |
_0x8e92x84 = _0x8e92x81[_0x6341[226]][_0x6341[228]] >= _0x8e92x81[_0x6341[229]][_0x6341[226]][_0x6341[228]]; | |
_0x8e92x85 = _0x8e92x81[_0x6341[226]][_0x6341[228]] + _0x8e92x81[_0x6341[145]] <= _0x8e92x81[_0x6341[229]][_0x6341[145]] | |
} | |
;var _0x8e92x87 = [_0x8e92x83, _0x8e92x82, _0x8e92x84, _0x8e92x85]; | |
if (_0x8e92x7f) { | |
return _0x8e92x84 === _0x8e92x85 === true | |
} | |
;if (_0x8e92x80) { | |
return _0x8e92x82 === _0x8e92x83 === true | |
} | |
;return _0x8e92x87[_0x6341[19]](false) === -1 | |
} | |
function _0x8e92x88(_0x8e92x13, _0x8e92x89) { | |
_0x8e92x13 = _0x8e92x13[_0x6341[63]] ? _0x8e92x13[0] : _0x8e92x13; | |
if (_0x8e92x13 === window || _0x8e92x13 === document) { | |
throw new Error(_0x6341[230]) | |
} | |
;var _0x8e92x8a = _0x8e92x13[_0x6341[231]]() | |
, _0x8e92x8b = _0x8e92x13[_0x6341[137]][_0x6341[231]]() | |
, _0x8e92x8c = document[_0x6341[232]][_0x6341[231]]() | |
, _0x8e92x8d = window[_0x6341[233]] | |
, _0x8e92x8e = window[_0x6341[234]]; | |
return { | |
width: _0x8e92x8a[_0x6341[145]], | |
height: _0x8e92x8a[_0x6341[227]], | |
offset: { | |
top: _0x8e92x8a[_0x6341[225]] + _0x8e92x8d, | |
left: _0x8e92x8a[_0x6341[228]] + _0x8e92x8e | |
}, | |
parentDims: { | |
width: _0x8e92x8b[_0x6341[145]], | |
height: _0x8e92x8b[_0x6341[227]], | |
offset: { | |
top: _0x8e92x8b[_0x6341[225]] + _0x8e92x8d, | |
left: _0x8e92x8b[_0x6341[228]] + _0x8e92x8e | |
} | |
}, | |
windowDims: { | |
width: _0x8e92x8c[_0x6341[145]], | |
height: _0x8e92x8c[_0x6341[227]], | |
offset: { | |
top: _0x8e92x8d, | |
left: _0x8e92x8e | |
} | |
} | |
} | |
} | |
function _0x8e92x8f(_0x8e92x65, _0x8e92x90, _0x8e92x91, _0x8e92x92, _0x8e92x93, _0x8e92x94) { | |
var _0x8e92x95 = _0x8e92x88(_0x8e92x65) | |
, _0x8e92x96 = _0x8e92x90 ? _0x8e92x88(_0x8e92x90) : null ; | |
switch (_0x8e92x91) { | |
case _0x6341[225]: | |
return { | |
left: Foundation[_0x6341[6]]() ? _0x8e92x96[_0x6341[226]][_0x6341[228]] - _0x8e92x95[_0x6341[145]] + _0x8e92x96[_0x6341[145]] : _0x8e92x96[_0x6341[226]][_0x6341[228]], | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] - (_0x8e92x95[_0x6341[227]] + _0x8e92x92) | |
}; | |
break; | |
case _0x6341[228]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] - (_0x8e92x95[_0x6341[145]] + _0x8e92x93), | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] | |
}; | |
break; | |
case _0x6341[235]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] + _0x8e92x96[_0x6341[145]] + _0x8e92x93, | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] | |
}; | |
break; | |
case _0x6341[236]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] + _0x8e92x96[_0x6341[145]] / 2 - _0x8e92x95[_0x6341[145]] / 2, | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] - (_0x8e92x95[_0x6341[227]] + _0x8e92x92) | |
}; | |
break; | |
case _0x6341[237]: | |
return { | |
left: _0x8e92x94 ? _0x8e92x93 : _0x8e92x96[_0x6341[226]][_0x6341[228]] + _0x8e92x96[_0x6341[145]] / 2 - _0x8e92x95[_0x6341[145]] / 2, | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] + _0x8e92x96[_0x6341[227]] + _0x8e92x92 | |
}; | |
break; | |
case _0x6341[238]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] - (_0x8e92x95[_0x6341[145]] + _0x8e92x93), | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] + _0x8e92x96[_0x6341[227]] / 2 - _0x8e92x95[_0x6341[227]] / 2 | |
}; | |
break; | |
case _0x6341[239]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] + _0x8e92x96[_0x6341[145]] + _0x8e92x93 + 1, | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] + _0x8e92x96[_0x6341[227]] / 2 - _0x8e92x95[_0x6341[227]] / 2 | |
}; | |
break; | |
case _0x6341[240]: | |
return { | |
left: _0x8e92x95[_0x6341[229]][_0x6341[226]][_0x6341[228]] + _0x8e92x95[_0x6341[229]][_0x6341[145]] / 2 - _0x8e92x95[_0x6341[145]] / 2, | |
top: _0x8e92x95[_0x6341[229]][_0x6341[226]][_0x6341[225]] + _0x8e92x95[_0x6341[229]][_0x6341[227]] / 2 - _0x8e92x95[_0x6341[227]] / 2 | |
}; | |
break; | |
case _0x6341[241]: | |
return { | |
left: (_0x8e92x95[_0x6341[229]][_0x6341[145]] - _0x8e92x95[_0x6341[145]]) / 2, | |
top: _0x8e92x95[_0x6341[229]][_0x6341[226]][_0x6341[225]] + _0x8e92x92 | |
}; | |
case _0x6341[242]: | |
return { | |
left: _0x8e92x95[_0x6341[229]][_0x6341[226]][_0x6341[228]], | |
top: _0x8e92x95[_0x6341[229]][_0x6341[226]][_0x6341[225]] | |
}; | |
break; | |
case _0x6341[243]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] - (_0x8e92x95[_0x6341[145]] + _0x8e92x93), | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] + _0x8e92x96[_0x6341[227]] | |
}; | |
break; | |
case _0x6341[244]: | |
return { | |
left: _0x8e92x96[_0x6341[226]][_0x6341[228]] + _0x8e92x96[_0x6341[145]] + _0x8e92x93 - _0x8e92x95[_0x6341[145]], | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] + _0x8e92x96[_0x6341[227]] | |
}; | |
break; | |
default: | |
return { | |
left: Foundation[_0x6341[6]]() ? _0x8e92x96[_0x6341[226]][_0x6341[228]] - _0x8e92x95[_0x6341[145]] + _0x8e92x96[_0x6341[145]] : _0x8e92x96[_0x6341[226]][_0x6341[228]], | |
top: _0x8e92x96[_0x6341[226]][_0x6341[225]] + _0x8e92x96[_0x6341[227]] + _0x8e92x92 | |
} | |
} | |
} | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
var _0x8e92x97 = function() { | |
var _0x8e92x98 = [_0x6341[245], _0x6341[246], _0x6341[247], _0x6341[248], _0x6341[38]]; | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92x98[_0x6341[63]]; _0x8e92x14++) { | |
if (_0x8e92x98[_0x8e92x14] + _0x6341[249] in window) { | |
return window[_0x8e92x98[_0x8e92x14] + _0x6341[249]] | |
} | |
} | |
;return false | |
}(); | |
var _0x8e92x99 = function(_0x8e92x1b, _0x8e92xc) { | |
_0x8e92x1b[_0x6341[14]](_0x8e92xc)[_0x6341[50]](_0x6341[150])[_0x6341[29]](function(_0x8e92x9a) { | |
window[_0x6341[0]](_0x6341[252] + _0x8e92x9a)[_0x8e92xc === _0x6341[251] ? _0x6341[16] : _0x6341[58]](_0x8e92xc + _0x6341[250], [_0x8e92x1b]) | |
}) | |
} | |
; | |
window[_0x6341[0]](document)[_0x6341[127]](_0x6341[253], _0x6341[254], function() { | |
_0x8e92x99(window[_0x6341[0]](this), _0x6341[255]) | |
}); | |
window[_0x6341[0]](document)[_0x6341[127]](_0x6341[253], _0x6341[256], function() { | |
var _0x8e92x9a = window[_0x6341[0]](this)[_0x6341[14]](_0x6341[251]); | |
if (_0x8e92x9a) { | |
_0x8e92x99(window[_0x6341[0]](this), _0x6341[251]) | |
} else { | |
window[_0x6341[0]](this)[_0x6341[16]](_0x6341[257]) | |
} | |
}); | |
window[_0x6341[0]](document)[_0x6341[127]](_0x6341[253], _0x6341[258], function() { | |
_0x8e92x99(window[_0x6341[0]](this), _0x6341[259]) | |
}); | |
window[_0x6341[0]](document)[_0x6341[127]](_0x6341[257], _0x6341[260], function(_0x8e92x19) { | |
_0x8e92x19[_0x6341[261]](); | |
var _0x8e92x66 = window[_0x6341[0]](this)[_0x6341[14]](_0x6341[262]); | |
if (_0x8e92x66 !== _0x6341[38]) { | |
Foundation[_0x6341[200]][_0x6341[264]](window[_0x6341[0]](this), _0x8e92x66, function() { | |
window[_0x6341[0]](this)[_0x6341[16]](_0x6341[263]) | |
}) | |
} else { | |
window[_0x6341[0]](this)[_0x6341[265]]()[_0x6341[16]](_0x6341[263]) | |
} | |
}); | |
window[_0x6341[0]](document)[_0x6341[127]](_0x6341[266], _0x6341[267], function() { | |
var _0x8e92x9a = window[_0x6341[0]](this)[_0x6341[14]](_0x6341[268]); | |
window[_0x6341[0]](_0x6341[252] + _0x8e92x9a)[_0x6341[58]](_0x6341[269], [window[_0x6341[0]](this)]) | |
}); | |
window[_0x6341[0]](window)[_0x6341[270]](function() { | |
_0x8e92x9b() | |
}); | |
function _0x8e92x9b() { | |
_0x8e92xa5(); | |
_0x8e92xa1(); | |
_0x8e92xa4(); | |
_0x8e92x9c() | |
} | |
function _0x8e92x9c(_0x8e92x8) { | |
var _0x8e92x9d = window[_0x6341[0]](_0x6341[271]) | |
, _0x8e92x9e = [_0x6341[272], _0x6341[273], _0x6341[241]]; | |
if (_0x8e92x8) { | |
if (typeof _0x8e92x8 === _0x6341[40]) { | |
_0x8e92x9e[_0x6341[17]](_0x8e92x8) | |
} else { | |
if (typeof _0x8e92x8 === _0x6341[31] && typeof _0x8e92x8[0] === _0x6341[40]) { | |
_0x8e92x9e[_0x6341[100]](_0x8e92x8) | |
} else { | |
console[_0x6341[32]](_0x6341[274]) | |
} | |
} | |
} | |
;if (_0x8e92x9d[_0x6341[63]]) { | |
var _0x8e92x9f = _0x8e92x9e[_0x6341[48]](function(_0x8e92x5) { | |
return _0x6341[276] + _0x8e92x5 | |
})[_0x6341[275]](_0x6341[150]); | |
window[_0x6341[0]](window)[_0x6341[281]](_0x8e92x9f)[_0x6341[127]](_0x8e92x9f, function(_0x8e92x19, _0x8e92xa0) { | |
var _0x8e92x4 = _0x8e92x19[_0x6341[277]][_0x6341[50]](_0x6341[76])[0]; | |
var _0x8e92xa = window[_0x6341[0]](_0x6341[27] + _0x8e92x4 + _0x6341[28])[_0x6341[280]](_0x6341[278] + _0x8e92xa0 + _0x6341[279]); | |
_0x8e92xa[_0x6341[24]](function() { | |
var _0x8e92xd = window[_0x6341[0]](this); | |
_0x8e92xd[_0x6341[58]](_0x6341[257], [_0x8e92xd]) | |
}) | |
}) | |
} | |
} | |
function _0x8e92xa1(_0x8e92xa2) { | |
var _0x8e92x21 = void (0) | |
, _0x8e92xa3 = window[_0x6341[0]](_0x6341[282]); | |
if (_0x8e92xa3[_0x6341[63]]) { | |
window[_0x6341[0]](window)[_0x6341[281]](_0x6341[283])[_0x6341[127]](_0x6341[283], function(_0x8e92x19) { | |
if (_0x8e92x21) { | |
clearTimeout(_0x8e92x21) | |
} | |
;_0x8e92x21 = setTimeout(function() { | |
if (!_0x8e92x97) { | |
_0x8e92xa3[_0x6341[24]](function() { | |
window[_0x6341[0]](this)[_0x6341[58]](_0x6341[284]) | |
}) | |
} | |
;_0x8e92xa3[_0x6341[4]](_0x6341[285], _0x6341[286]) | |
}, _0x8e92xa2 || 10) | |
}) | |
} | |
} | |
function _0x8e92xa4(_0x8e92xa2) { | |
var _0x8e92x21 = void (0) | |
, _0x8e92xa3 = window[_0x6341[0]](_0x6341[287]); | |
if (_0x8e92xa3[_0x6341[63]]) { | |
window[_0x6341[0]](window)[_0x6341[281]](_0x6341[288])[_0x6341[127]](_0x6341[288], function(_0x8e92x19) { | |
if (_0x8e92x21) { | |
clearTimeout(_0x8e92x21) | |
} | |
;_0x8e92x21 = setTimeout(function() { | |
if (!_0x8e92x97) { | |
_0x8e92xa3[_0x6341[24]](function() { | |
window[_0x6341[0]](this)[_0x6341[58]](_0x6341[289]) | |
}) | |
} | |
;_0x8e92xa3[_0x6341[4]](_0x6341[285], _0x6341[290]) | |
}, _0x8e92xa2 || 10) | |
}) | |
} | |
} | |
function _0x8e92xa5() { | |
if (!_0x8e92x97) { | |
return false | |
} | |
;var _0x8e92xa6 = document[_0x6341[292]](_0x6341[291]); | |
var _0x8e92xa7 = function(_0x8e92xa8) { | |
var _0x8e92xa9 = window[_0x6341[0]](_0x8e92xa8[0][_0x6341[293]]); | |
switch (_0x8e92xa9[_0x6341[4]](_0x6341[285])) { | |
case _0x6341[286]: | |
_0x8e92xa9[_0x6341[58]](_0x6341[284], [_0x8e92xa9]); | |
break; | |
case _0x6341[290]: | |
_0x8e92xa9[_0x6341[58]](_0x6341[289], [_0x8e92xa9, window[_0x6341[233]]]); | |
break; | |
default: | |
return false | |
} | |
} | |
; | |
if (_0x8e92xa6[_0x6341[63]]) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 <= _0x8e92xa6[_0x6341[63]] - 1; _0x8e92x14++) { | |
var _0x8e92xaa = new _0x8e92x97(_0x8e92xa7); | |
_0x8e92xaa[_0x6341[294]](_0x8e92xa6[_0x8e92x14], { | |
attributes: true, | |
childList: false, | |
characterData: false, | |
subtree: false, | |
attributeFilter: [_0x6341[285]] | |
}) | |
} | |
} | |
} | |
Foundation[_0x6341[295]] = _0x8e92x9b | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
!function(_0x8e92x3b) { | |
function _0x8e92xab(_0x8e92x13, _0x8e92xac, _0x8e92x67) { | |
var _0x8e92xd = this, _0x8e92x69 = _0x8e92xac[_0x6341[296]], _0x8e92xad = Object[_0x6341[30]](_0x8e92x13[_0x6341[14]]())[0] || _0x6341[297], _0x8e92xae = -1, _0x8e92x6c, _0x8e92x21; | |
this[_0x6341[298]] = false; | |
this[_0x6341[299]] = function() { | |
_0x8e92xae = -1; | |
clearTimeout(_0x8e92x21); | |
this[_0x6341[96]]() | |
} | |
; | |
this[_0x6341[96]] = function() { | |
this[_0x6341[298]] = false; | |
clearTimeout(_0x8e92x21); | |
_0x8e92xae = _0x8e92xae <= 0 ? _0x8e92x69 : _0x8e92xae; | |
_0x8e92x13[_0x6341[14]](_0x6341[300], false); | |
_0x8e92x6c = Date[_0x6341[81]](); | |
_0x8e92x21 = setTimeout(function() { | |
if (_0x8e92xac[_0x6341[301]]) { | |
_0x8e92xd[_0x6341[299]]() | |
} | |
;_0x8e92x67() | |
}, _0x8e92xae); | |
_0x8e92x13[_0x6341[16]](_0x6341[302] + _0x8e92xad) | |
} | |
; | |
this[_0x6341[303]] = function() { | |
this[_0x6341[298]] = true; | |
clearTimeout(_0x8e92x21); | |
_0x8e92x13[_0x6341[14]](_0x6341[300], true); | |
var _0x8e92x1d = Date[_0x6341[81]](); | |
_0x8e92xae = _0x8e92xae - (_0x8e92x1d - _0x8e92x6c); | |
_0x8e92x13[_0x6341[16]](_0x6341[304] + _0x8e92xad) | |
} | |
} | |
function _0x8e92xaf(_0x8e92xb0, _0x8e92x2c) { | |
var _0x8e92x3e = this | |
, _0x8e92xb1 = _0x8e92xb0[_0x6341[63]]; | |
if (_0x8e92xb1 === 0) { | |
_0x8e92x2c() | |
} | |
;_0x8e92xb0[_0x6341[24]](function() { | |
if (this[_0x6341[305]]) { | |
_0x8e92xb2() | |
} else { | |
if (typeof this[_0x6341[306]] !== _0x6341[39] && this[_0x6341[306]] > 0) { | |
_0x8e92xb2() | |
} else { | |
window[_0x6341[0]](this)[_0x6341[196]](_0x6341[270], function() { | |
_0x8e92xb2() | |
}) | |
} | |
} | |
}); | |
function _0x8e92xb2() { | |
_0x8e92xb1--; | |
if (_0x8e92xb1 === 0) { | |
_0x8e92x2c() | |
} | |
} | |
} | |
Foundation[_0x6341[307]] = _0x8e92xab; | |
Foundation[_0x6341[308]] = _0x8e92xaf | |
}(window[_0x6341[0]]); | |
(function(_0x8e92x3b) { | |
window[_0x6341[0]][_0x6341[309]] = { | |
version: _0x6341[310], | |
enabled: _0x6341[311] in document[_0x6341[312]], | |
preventDefault: false, | |
moveThreshold: 75, | |
timeThreshold: 200 | |
}; | |
var _0x8e92xb3, _0x8e92xb4, _0x8e92xb5, _0x8e92xb6, _0x8e92xb7 = false; | |
function _0x8e92xb8() { | |
this[_0x6341[314]](_0x6341[313], _0x8e92xb9); | |
this[_0x6341[314]](_0x6341[315], _0x8e92xb8); | |
_0x8e92xb7 = false | |
} | |
function _0x8e92xb9(_0x8e92x19) { | |
if (window[_0x6341[0]][_0x6341[309]][_0x6341[316]]) { | |
_0x8e92x19[_0x6341[316]]() | |
} | |
;if (_0x8e92xb7) { | |
var _0x8e92xba = _0x8e92x19[_0x6341[318]][0][_0x6341[317]]; | |
var _0x8e92xbb = _0x8e92x19[_0x6341[318]][0][_0x6341[319]]; | |
var _0x8e92xbc = _0x8e92xb3 - _0x8e92xba; | |
var _0x8e92xbd = _0x8e92xb4 - _0x8e92xbb; | |
var _0x8e92xbe; | |
_0x8e92xb6 = new Date()[_0x6341[83]]() - _0x8e92xb5; | |
if (Math[_0x6341[320]](_0x8e92xbc) >= window[_0x6341[0]][_0x6341[309]][_0x6341[321]] && _0x8e92xb6 <= window[_0x6341[0]][_0x6341[309]][_0x6341[322]]) { | |
_0x8e92xbe = _0x8e92xbc > 0 ? _0x6341[228] : _0x6341[235] | |
} | |
;if (_0x8e92xbe) { | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92xb8[_0x6341[71]](this); | |
window[_0x6341[0]](this)[_0x6341[16]](_0x6341[323], _0x8e92xbe)[_0x6341[16]](_0x6341[323] + _0x8e92xbe) | |
} | |
} | |
} | |
function _0x8e92xbf(_0x8e92x19) { | |
if (_0x8e92x19[_0x6341[318]][_0x6341[63]] == 1) { | |
_0x8e92xb3 = _0x8e92x19[_0x6341[318]][0][_0x6341[317]]; | |
_0x8e92xb4 = _0x8e92x19[_0x6341[318]][0][_0x6341[319]]; | |
_0x8e92xb7 = true; | |
_0x8e92xb5 = new Date()[_0x6341[83]](); | |
this[_0x6341[324]](_0x6341[313], _0x8e92xb9, false); | |
this[_0x6341[324]](_0x6341[315], _0x8e92xb8, false) | |
} | |
} | |
function _0x8e92xc0() { | |
this[_0x6341[324]] && this[_0x6341[324]](_0x6341[325], _0x8e92xbf, false) | |
} | |
function _0x8e92xc1() { | |
this[_0x6341[314]](_0x6341[325], _0x8e92xbf) | |
} | |
window[_0x6341[0]][_0x6341[327]][_0x6341[326]][_0x6341[323]] = { | |
setup: _0x8e92xc0 | |
}; | |
window[_0x6341[0]][_0x6341[24]]([_0x6341[228], _0x6341[328], _0x6341[329], _0x6341[235]], function() { | |
window[_0x6341[0]][_0x6341[327]][_0x6341[326]][_0x6341[323] + this] = { | |
setup: function() { | |
window[_0x6341[0]](this)[_0x6341[127]](_0x6341[323], window[_0x6341[0]][_0x6341[330]]) | |
} | |
} | |
}) | |
})(window[_0x6341[0]]); | |
!function(_0x8e92x3b) { | |
window[_0x6341[0]][_0x6341[80]][_0x6341[331]] = function() { | |
this[_0x6341[24]](function(_0x8e92x14, _0x8e92x1b) { | |
window[_0x6341[0]](_0x8e92x1b)[_0x6341[97]](_0x6341[332], function() { | |
_0x8e92xc2(event) | |
}) | |
}); | |
var _0x8e92xc2 = function(_0x8e92x55) { | |
var _0x8e92xc3 = _0x8e92x55[_0x6341[333]], _0x8e92xc4 = _0x8e92xc3[0], _0x8e92xc5 = { | |
touchstart: _0x6341[334], | |
touchmove: _0x6341[335], | |
touchend: _0x6341[336] | |
}, _0x8e92xc = _0x8e92xc5[_0x8e92x55[_0x6341[132]]], _0x8e92xc6; | |
if (_0x6341[337] in window && typeof window[_0x6341[337]] === _0x6341[98]) { | |
_0x8e92xc6 = window.MouseEvent(_0x8e92xc, { | |
"\x62\x75\x62\x62\x6C\x65\x73": true, | |
"\x63\x61\x6E\x63\x65\x6C\x61\x62\x6C\x65": true, | |
"\x73\x63\x72\x65\x65\x6E\x58": _0x8e92xc4[_0x6341[338]], | |
"\x73\x63\x72\x65\x65\x6E\x59": _0x8e92xc4[_0x6341[339]], | |
"\x63\x6C\x69\x65\x6E\x74\x58": _0x8e92xc4[_0x6341[340]], | |
"\x63\x6C\x69\x65\x6E\x74\x59": _0x8e92xc4[_0x6341[341]] | |
}) | |
} else { | |
_0x8e92xc6 = document[_0x6341[342]](_0x6341[337]); | |
_0x8e92xc6[_0x6341[343]](_0x8e92xc, true, true, window, 1, _0x8e92xc4[_0x6341[338]], _0x8e92xc4[_0x6341[339]], _0x8e92xc4[_0x6341[340]], _0x8e92xc4[_0x6341[341]], false, false, false, false, 0, null ) | |
} | |
;_0x8e92xc4[_0x6341[293]][_0x6341[344]](_0x8e92xc6) | |
} | |
} | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92xd1 = function() { | |
function _0x8e92xd1(_0x8e92x65) { | |
var _0x8e92xac = arguments[_0x6341[63]] <= 1 || arguments[1] === undefined ? {} : arguments[1]; | |
_classCallCheck(this, _0x8e92xd1); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92xd1[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[353]) | |
} | |
_createClass(_0x8e92xd1, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
this[_0x6341[355]] = this[_0x6341[12]][_0x6341[42]](_0x6341[357])[_0x6341[280]](_0x6341[356]); | |
this._events() | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
var _0x8e92xd4 = this; | |
this[_0x6341[12]][_0x6341[281]](_0x6341[363])[_0x6341[127]](_0x6341[361], function() { | |
_0x8e92xd4[_0x6341[362]]() | |
})[_0x6341[127]](_0x6341[359], function() { | |
return _0x8e92xd4[_0x6341[360]]() | |
}); | |
if (this[_0x6341[351]][_0x6341[364]] === _0x6341[365]) { | |
this[_0x6341[355]][_0x6341[281]](_0x6341[366])[_0x6341[127]](_0x6341[366], function(_0x8e92x19) { | |
_0x8e92xd4[_0x6341[367]](window[_0x6341[0]](_0x8e92x19[_0x6341[293]])) | |
}) | |
} | |
;if (this[_0x6341[351]][_0x6341[368]]) { | |
this[_0x6341[355]][_0x6341[281]](_0x6341[369])[_0x6341[127]](_0x6341[369], function(_0x8e92x19) { | |
_0x8e92xd4[_0x6341[367]](window[_0x6341[0]](_0x8e92x19[_0x6341[293]])) | |
}) | |
} | |
} | |
}, { | |
key: _0x6341[370], | |
value: function _0x8e92xd5() { | |
this._init() | |
} | |
}, { | |
key: _0x6341[371], | |
value: function _0x8e92xd6(_0x8e92x16) { | |
if (!_0x8e92x16[_0x6341[4]](_0x6341[372])) { | |
return true | |
} | |
;var _0x8e92xd7 = true; | |
switch (_0x8e92x16[0][_0x6341[132]]) { | |
case _0x6341[373]: | |
; | |
case _0x6341[374]: | |
; | |
case _0x6341[377]: | |
var _0x8e92x1a = _0x8e92x16[_0x6341[42]](_0x6341[375]); | |
if (!_0x8e92x1a[_0x6341[63]] || !_0x8e92x1a[_0x6341[376]]()) { | |
_0x8e92xd7 = false | |
} | |
;break; | |
default: | |
if (!_0x8e92x16[_0x6341[376]]() || !_0x8e92x16[_0x6341[376]]()[_0x6341[63]]) { | |
_0x8e92xd7 = false | |
} | |
} | |
;return _0x8e92xd7 | |
} | |
}, { | |
key: _0x6341[378], | |
value: function _0x8e92xd8(_0x8e92x16) { | |
var _0x8e92xd9 = _0x8e92x16[_0x6341[380]](this[_0x6341[351]][_0x6341[379]]); | |
if (!_0x8e92xd9[_0x6341[63]]) { | |
_0x8e92xd9 = _0x8e92x16[_0x6341[217]]()[_0x6341[42]](this[_0x6341[351]][_0x6341[379]]) | |
} | |
;return _0x8e92xd9 | |
} | |
}, { | |
key: _0x6341[381], | |
value: function _0x8e92xda(_0x8e92x16) { | |
var _0x8e92x9a = _0x8e92x16[0][_0x6341[134]]; | |
var _0x8e92xdb = this[_0x6341[12]][_0x6341[42]](_0x6341[382] + _0x8e92x9a + _0x6341[279]); | |
if (!_0x8e92xdb[_0x6341[63]]) { | |
return _0x8e92x16[_0x6341[384]](_0x6341[383]) | |
} | |
;return _0x8e92xdb | |
} | |
}, { | |
key: _0x6341[385], | |
value: function _0x8e92xdc(_0x8e92xdd) { | |
var _0x8e92xde = this; | |
var _0x8e92xdf = _0x8e92xdd[_0x6341[48]](function(_0x8e92x14, _0x8e92x1b) { | |
var _0x8e92x9a = _0x8e92x1b[_0x6341[134]]; | |
var _0x8e92xdb = _0x8e92xde[_0x6341[12]][_0x6341[42]](_0x6341[382] + _0x8e92x9a + _0x6341[279]); | |
if (!_0x8e92xdb[_0x6341[63]]) { | |
_0x8e92xdb = window[_0x6341[0]](_0x8e92x1b)[_0x6341[384]](_0x6341[383]) | |
} | |
;return _0x8e92xdb[0] | |
}); | |
return window[_0x6341[0]](_0x8e92xdf) | |
} | |
}, { | |
key: _0x6341[386], | |
value: function _0x8e92xe0(_0x8e92x16) { | |
var _0x8e92xdb = this[_0x6341[381]](_0x8e92x16); | |
var _0x8e92xe1 = this[_0x6341[378]](_0x8e92x16); | |
if (_0x8e92xdb[_0x6341[63]]) { | |
_0x8e92xdb[_0x6341[193]](this[_0x6341[351]][_0x6341[387]]) | |
} | |
;if (_0x8e92xe1[_0x6341[63]]) { | |
_0x8e92xe1[_0x6341[193]](this[_0x6341[351]][_0x6341[388]]) | |
} | |
;_0x8e92x16[_0x6341[193]](this[_0x6341[351]][_0x6341[390]])[_0x6341[4]](_0x6341[389], _0x6341[38]) | |
} | |
}, { | |
key: _0x6341[391], | |
value: function _0x8e92xe2(_0x8e92xe3) { | |
var _0x8e92xdd = this[_0x6341[12]][_0x6341[42]](_0x6341[392] + _0x8e92xe3 + _0x6341[279]); | |
var _0x8e92xe4 = this[_0x6341[385]](_0x8e92xdd); | |
var _0x8e92xe5 = this[_0x6341[378]](_0x8e92xdd); | |
if (_0x8e92xe4[_0x6341[63]]) { | |
_0x8e92xe4[_0x6341[68]](this[_0x6341[351]][_0x6341[387]]) | |
} | |
;if (_0x8e92xe5[_0x6341[63]]) { | |
_0x8e92xe5[_0x6341[68]](this[_0x6341[351]][_0x6341[388]]) | |
} | |
;_0x8e92xdd[_0x6341[68]](this[_0x6341[351]][_0x6341[390]])[_0x6341[23]](_0x6341[389]) | |
} | |
}, { | |
key: _0x6341[393], | |
value: function _0x8e92xe6(_0x8e92x16) { | |
if (_0x8e92x16[0][_0x6341[132]] == _0x6341[394]) { | |
return this[_0x6341[391]](_0x8e92x16[_0x6341[4]](_0x6341[101])) | |
} | |
;var _0x8e92xdb = this[_0x6341[381]](_0x8e92x16); | |
var _0x8e92xe1 = this[_0x6341[378]](_0x8e92x16); | |
if (_0x8e92xdb[_0x6341[63]]) { | |
_0x8e92xdb[_0x6341[68]](this[_0x6341[351]][_0x6341[387]]) | |
} | |
;if (_0x8e92xe1[_0x6341[63]]) { | |
_0x8e92xe1[_0x6341[68]](this[_0x6341[351]][_0x6341[388]]) | |
} | |
;_0x8e92x16[_0x6341[68]](this[_0x6341[351]][_0x6341[390]])[_0x6341[23]](_0x6341[389]) | |
} | |
}, { | |
key: _0x6341[367], | |
value: function _0x8e92xe7(_0x8e92x16) { | |
var _0x8e92xe8 = this[_0x6341[371]](_0x8e92x16) | |
, _0x8e92xe9 = false | |
, _0x8e92xea = true | |
, _0x8e92xeb = _0x8e92x16[_0x6341[4]](_0x6341[395]) | |
, _0x8e92xec = true; | |
switch (_0x8e92x16[0][_0x6341[132]]) { | |
case _0x6341[394]: | |
_0x8e92xe9 = this[_0x6341[396]](_0x8e92x16[_0x6341[4]](_0x6341[101])); | |
break; | |
case _0x6341[397]: | |
_0x8e92xe9 = _0x8e92xe8; | |
break; | |
case _0x6341[373]: | |
; | |
case _0x6341[374]: | |
; | |
case _0x6341[377]: | |
_0x8e92xe9 = _0x8e92xe8; | |
break; | |
default: | |
_0x8e92xe9 = this[_0x6341[398]](_0x8e92x16) | |
} | |
;if (_0x8e92xeb) { | |
_0x8e92xea = this[_0x6341[399]](_0x8e92x16, _0x8e92xeb, _0x8e92x16[_0x6341[4]](_0x6341[372])) | |
} | |
;if (_0x8e92x16[_0x6341[4]](_0x6341[400])) { | |
_0x8e92xec = this[_0x6341[351]][_0x6341[402]][_0x6341[401]](_0x8e92x16) | |
} | |
;var _0x8e92xed = [_0x8e92xe8, _0x8e92xe9, _0x8e92xea, _0x8e92xec][_0x6341[19]](false) === -1; | |
var _0x8e92xee = (_0x8e92xed ? _0x6341[403] : _0x6341[404]) + _0x6341[405]; | |
this[_0x8e92xed ? _0x6341[393] : _0x6341[386]](_0x8e92x16); | |
_0x8e92x16[_0x6341[16]](_0x8e92xee, [_0x8e92x16]); | |
return _0x8e92xed | |
} | |
}, { | |
key: _0x6341[360], | |
value: function _0x8e92xef() { | |
var _0x8e92xf0 = []; | |
var _0x8e92xd = this; | |
this[_0x6341[355]][_0x6341[24]](function() { | |
_0x8e92xf0[_0x6341[17]](_0x8e92xd[_0x6341[367]](window[_0x6341[0]](this))) | |
}); | |
var _0x8e92xf1 = _0x8e92xf0[_0x6341[19]](false) === -1; | |
this[_0x6341[12]][_0x6341[42]](_0x6341[407])[_0x6341[115]](_0x6341[219], _0x8e92xf1 ? _0x6341[192] : _0x6341[406]); | |
this[_0x6341[12]][_0x6341[16]]((_0x8e92xf1 ? _0x6341[408] : _0x6341[409]) + _0x6341[405], [this[_0x6341[12]]]); | |
return _0x8e92xf1 | |
} | |
}, { | |
key: _0x6341[398], | |
value: function _0x8e92xf2(_0x8e92x16, _0x8e92xf3) { | |
_0x8e92xf3 = _0x8e92xf3 || _0x8e92x16[_0x6341[4]](_0x6341[410]) || _0x8e92x16[_0x6341[4]](_0x6341[132]); | |
var _0x8e92xf4 = _0x8e92x16[_0x6341[376]](); | |
var _0x8e92xf5 = false; | |
if (_0x8e92xf4[_0x6341[63]]) { | |
if (this[_0x6341[351]][_0x6341[411]][_0x6341[151]](_0x8e92xf3)) { | |
_0x8e92xf5 = this[_0x6341[351]][_0x6341[411]][_0x8e92xf3][_0x6341[93]](_0x8e92xf4) | |
} else { | |
if (_0x8e92xf3 !== _0x8e92x16[_0x6341[4]](_0x6341[132])) { | |
_0x8e92xf5 = new RegExp(_0x8e92xf3)[_0x6341[93]](_0x8e92xf4) | |
} else { | |
_0x8e92xf5 = true | |
} | |
} | |
} else { | |
if (!_0x8e92x16[_0x6341[412]](_0x6341[372])) { | |
_0x8e92xf5 = true | |
} | |
} | |
;return _0x8e92xf5 | |
} | |
}, { | |
key: _0x6341[396], | |
value: function _0x8e92xf6(_0x8e92xe3) { | |
var _0x8e92xf7 = this[_0x6341[12]][_0x6341[42]](_0x6341[392] + _0x8e92xe3 + _0x6341[279]); | |
var _0x8e92xf5 = false; | |
if (_0x8e92xf7[_0x6341[4]](_0x6341[372]) === undefined) { | |
_0x8e92xf5 = true | |
} | |
;_0x8e92xf7[_0x6341[24]](function(_0x8e92x14, _0x8e92x19) { | |
if (window[_0x6341[0]](_0x8e92x19)[_0x6341[412]](_0x6341[413])) { | |
_0x8e92xf5 = true | |
} | |
}); | |
return _0x8e92xf5 | |
} | |
}, { | |
key: _0x6341[399], | |
value: function _0x8e92xf8(_0x8e92x16, _0x8e92xf9, _0x8e92xfa) { | |
var _0x8e92xfb = this; | |
_0x8e92xfa = _0x8e92xfa ? true : false; | |
var _0x8e92xfc = _0x8e92xf9[_0x6341[50]](_0x6341[150])[_0x6341[48]](function(_0x8e92xfd) { | |
return _0x8e92xfb[_0x6341[351]][_0x6341[402]][_0x8e92xfd](_0x8e92x16, _0x8e92xfa, _0x8e92x16[_0x6341[217]]()) | |
}); | |
return _0x8e92xfc[_0x6341[19]](false) === -1 | |
} | |
}, { | |
key: _0x6341[362], | |
value: function _0x8e92xfe() { | |
var _0x8e92xff = this[_0x6341[12]] | |
, _0x8e92x17 = this[_0x6341[351]]; | |
window[_0x6341[0]](_0x6341[76] + _0x8e92x17[_0x6341[387]], _0x8e92xff)[_0x6341[280]](_0x6341[414])[_0x6341[68]](_0x8e92x17[_0x6341[387]]); | |
window[_0x6341[0]](_0x6341[76] + _0x8e92x17[_0x6341[390]], _0x8e92xff)[_0x6341[280]](_0x6341[414])[_0x6341[68]](_0x8e92x17[_0x6341[390]]); | |
window[_0x6341[0]](_0x8e92x17[_0x6341[379]] + _0x6341[76] + _0x8e92x17[_0x6341[388]])[_0x6341[68]](_0x8e92x17[_0x6341[388]]); | |
_0x8e92xff[_0x6341[42]](_0x6341[407])[_0x6341[115]](_0x6341[219], _0x6341[192]); | |
window[_0x6341[0]](_0x6341[416], _0x8e92xff)[_0x6341[280]](_0x6341[415])[_0x6341[376]](_0x6341[38])[_0x6341[23]](_0x6341[389]); | |
_0x8e92xff[_0x6341[16]](_0x6341[417], [_0x8e92xff]) | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
var _0x8e92xd = this; | |
this[_0x6341[12]][_0x6341[281]](_0x6341[363])[_0x6341[42]](_0x6341[407])[_0x6341[115]](_0x6341[219], _0x6341[192]); | |
this[_0x6341[355]][_0x6341[281]](_0x6341[363])[_0x6341[24]](function() { | |
_0x8e92xd[_0x6341[393]](window[_0x6341[0]](this)) | |
}); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92xd1 | |
}(); | |
_0x8e92xd1[_0x6341[352]] = { | |
validateOn: _0x6341[365], | |
labelErrorClass: _0x6341[420], | |
inputErrorClass: _0x6341[421], | |
formErrorSelector: _0x6341[422], | |
formErrorClass: _0x6341[423], | |
liveValidate: false, | |
patterns: { | |
alpha: /^[a-zA-Z]+$/, | |
alpha_numeric: /^[a-zA-Z0-9]+$/, | |
integer: /^[-+]?\d+$/, | |
number: /^[-+]?\d*(?:[\.\,]\d+)?$/, | |
card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, | |
cvv: /^([0-9]){3,4}$/, | |
email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, | |
url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/, | |
domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, | |
datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, | |
date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, | |
time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, | |
dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, | |
month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, | |
day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, | |
color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ | |
}, | |
validators: { | |
equalTo: function(_0x8e92x1b, _0x8e92xfa, _0x8e92x7e) { | |
return window[_0x6341[0]](_0x6341[252] + _0x8e92x1b[_0x6341[4]](_0x6341[400]))[_0x6341[376]]() === _0x8e92x1b[_0x6341[376]]() | |
} | |
} | |
}; | |
Foundation[_0x6341[424]](_0x8e92xd1, _0x6341[353]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x101 = function() { | |
function _0x8e92x101(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x101); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x101[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[425]); | |
Foundation[_0x6341[184]][_0x6341[428]](_0x6341[425], { | |
"\x45\x4E\x54\x45\x52": _0x6341[259], | |
"\x53\x50\x41\x43\x45": _0x6341[259], | |
"\x41\x52\x52\x4F\x57\x5F\x44\x4F\x57\x4E": _0x6341[426], | |
"\x41\x52\x52\x4F\x57\x5F\x55\x50": _0x6341[427] | |
}) | |
} | |
_createClass(_0x8e92x101, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
this[_0x6341[12]][_0x6341[4]](_0x6341[202], _0x6341[429]); | |
this[_0x6341[430]] = this[_0x6341[12]][_0x6341[212]](_0x6341[431]); | |
this[_0x6341[430]][_0x6341[24]](function(_0x8e92x102, _0x8e92x1b) { | |
var _0x8e92x16 = window[_0x6341[0]](_0x8e92x1b) | |
, _0x8e92x103 = _0x8e92x16[_0x6341[212]](_0x6341[432]) | |
, _0x8e92x9a = _0x8e92x103[0][_0x6341[134]] || Foundation.GetYoDigits(6, _0x6341[433]) | |
, _0x8e92x104 = _0x8e92x1b[_0x6341[134]] || _0x8e92x9a + _0x6341[434]; | |
_0x8e92x16[_0x6341[42]](_0x6341[210])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x73": _0x8e92x9a, | |
"\x72\x6F\x6C\x65": _0x6341[435], | |
"\x69\x64": _0x8e92x104, | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": false, | |
"\x61\x72\x69\x61\x2D\x73\x65\x6C\x65\x63\x74\x65\x64": false | |
}); | |
_0x8e92x103[_0x6341[4]]({ | |
"\x72\x6F\x6C\x65": _0x6341[436], | |
"\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C\x6C\x65\x64\x62\x79": _0x8e92x104, | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": true, | |
"\x69\x64": _0x8e92x9a | |
}) | |
}); | |
var _0x8e92x105 = this[_0x6341[12]][_0x6341[42]](_0x6341[437])[_0x6341[212]](_0x6341[432]); | |
if (_0x8e92x105[_0x6341[63]]) { | |
this[_0x6341[329]](_0x8e92x105, true) | |
} | |
;this._events() | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
var _0x8e92xd = this; | |
this[_0x6341[430]][_0x6341[24]](function() { | |
var _0x8e92x15 = window[_0x6341[0]](this); | |
var _0x8e92x106 = _0x8e92x15[_0x6341[212]](_0x6341[432]); | |
if (_0x8e92x106[_0x6341[63]]) { | |
_0x8e92x15[_0x6341[212]](_0x6341[440])[_0x6341[281]](_0x6341[448])[_0x6341[127]](_0x6341[442], function(_0x8e92x19) { | |
_0x8e92x19[_0x6341[316]](); | |
if (_0x8e92x15[_0x6341[446]](_0x6341[445])) { | |
if (_0x8e92xd[_0x6341[351]][_0x6341[447]] || _0x8e92x15[_0x6341[380]]()[_0x6341[446]](_0x6341[445])) { | |
_0x8e92xd[_0x6341[328]](_0x8e92x106) | |
} | |
} else { | |
_0x8e92xd[_0x6341[329]](_0x8e92x106) | |
} | |
})[_0x6341[127]](_0x6341[438], function(_0x8e92x19) { | |
Foundation[_0x6341[184]][_0x6341[444]](_0x8e92x19, _0x6341[425], { | |
toggle: function() { | |
_0x8e92xd[_0x6341[259]](_0x8e92x106) | |
}, | |
next: function() { | |
var _0x8e92x107 = _0x8e92x15[_0x6341[426]]()[_0x6341[42]](_0x6341[440])[_0x6341[439]](); | |
if (!_0x8e92xd[_0x6341[351]][_0x6341[441]]) { | |
_0x8e92x107[_0x6341[16]](_0x6341[442]) | |
} | |
}, | |
previous: function() { | |
var _0x8e92x107 = _0x8e92x15[_0x6341[443]]()[_0x6341[42]](_0x6341[440])[_0x6341[439]](); | |
if (!_0x8e92xd[_0x6341[351]][_0x6341[441]]) { | |
_0x8e92x107[_0x6341[16]](_0x6341[442]) | |
} | |
}, | |
handled: function() { | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92x19[_0x6341[261]]() | |
} | |
}) | |
}) | |
} | |
}) | |
} | |
}, { | |
key: _0x6341[259], | |
value: function _0x8e92x108(_0x8e92xa9) { | |
if (_0x8e92xa9[_0x6341[217]]()[_0x6341[446]](_0x6341[445])) { | |
if (this[_0x6341[351]][_0x6341[447]] || _0x8e92xa9[_0x6341[217]]()[_0x6341[380]]()[_0x6341[446]](_0x6341[445])) { | |
this[_0x6341[328]](_0x8e92xa9) | |
} else { | |
return | |
} | |
} else { | |
this[_0x6341[329]](_0x8e92xa9) | |
} | |
} | |
}, { | |
key: _0x6341[329], | |
value: function _0x8e92x109(_0x8e92xa9, _0x8e92x10a) { | |
var _0x8e92xd4 = this; | |
if (!this[_0x6341[351]][_0x6341[441]] && !_0x8e92x10a) { | |
var _0x8e92x10b = this[_0x6341[12]][_0x6341[212]](_0x6341[437])[_0x6341[212]](_0x6341[432]); | |
if (_0x8e92x10b[_0x6341[63]]) { | |
this[_0x6341[328]](_0x8e92x10b) | |
} | |
} | |
;_0x8e92xa9[_0x6341[4]](_0x6341[449], false)[_0x6341[217]](_0x6341[432])[_0x6341[41]]()[_0x6341[217]]()[_0x6341[193]](_0x6341[445]); | |
_0x8e92xa9[_0x6341[452]](this[_0x6341[351]][_0x6341[450]], function() { | |
_0x8e92xd4[_0x6341[12]][_0x6341[16]](_0x6341[451], [_0x8e92xa9]) | |
}); | |
window[_0x6341[0]](_0x6341[252] + _0x8e92xa9[_0x6341[4]](_0x6341[453]))[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": true, | |
"\x61\x72\x69\x61\x2D\x73\x65\x6C\x65\x63\x74\x65\x64": true | |
}) | |
} | |
}, { | |
key: _0x6341[328], | |
value: function _0x8e92x10c(_0x8e92xa9) { | |
var _0x8e92x10d = _0x8e92xa9[_0x6341[217]]()[_0x6341[380]]() | |
, _0x8e92xd = this; | |
var _0x8e92x10e = this[_0x6341[351]][_0x6341[441]] ? _0x8e92x10d[_0x6341[446]](_0x6341[445]) : _0x8e92xa9[_0x6341[217]]()[_0x6341[446]](_0x6341[445]); | |
if (!this[_0x6341[351]][_0x6341[447]] && !_0x8e92x10e) { | |
return | |
} | |
;_0x8e92xa9[_0x6341[455]](_0x8e92xd[_0x6341[351]][_0x6341[450]], function() { | |
_0x8e92xd[_0x6341[12]][_0x6341[16]](_0x6341[454], [_0x8e92xa9]) | |
}); | |
_0x8e92xa9[_0x6341[4]](_0x6341[449], true)[_0x6341[217]]()[_0x6341[68]](_0x6341[445]); | |
window[_0x6341[0]](_0x6341[252] + _0x8e92xa9[_0x6341[4]](_0x6341[453]))[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": false, | |
"\x61\x72\x69\x61\x2D\x73\x65\x6C\x65\x63\x74\x65\x64": false | |
}) | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
this[_0x6341[12]][_0x6341[42]](_0x6341[432])[_0x6341[455]](0)[_0x6341[115]](_0x6341[219], _0x6341[38]); | |
this[_0x6341[12]][_0x6341[42]](_0x6341[440])[_0x6341[281]](_0x6341[456]); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92x101 | |
}(); | |
_0x8e92x101[_0x6341[352]] = { | |
slideSpeed: 250, | |
multiExpand: false, | |
allowAllClosed: false | |
}; | |
Foundation[_0x6341[424]](_0x8e92x101, _0x6341[425]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x10f = function() { | |
function _0x8e92x10f(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x10f); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x10f[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
Foundation[_0x6341[223]].Feather(this.$element, _0x6341[433]); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[457]); | |
Foundation[_0x6341[184]][_0x6341[428]](_0x6341[457], { | |
"\x45\x4E\x54\x45\x52": _0x6341[259], | |
"\x53\x50\x41\x43\x45": _0x6341[259], | |
"\x41\x52\x52\x4F\x57\x5F\x52\x49\x47\x48\x54": _0x6341[255], | |
"\x41\x52\x52\x4F\x57\x5F\x55\x50": _0x6341[328], | |
"\x41\x52\x52\x4F\x57\x5F\x44\x4F\x57\x4E": _0x6341[329], | |
"\x41\x52\x52\x4F\x57\x5F\x4C\x45\x46\x54": _0x6341[251], | |
"\x45\x53\x43\x41\x50\x45": _0x6341[458], | |
"\x54\x41\x42": _0x6341[329], | |
"\x53\x48\x49\x46\x54\x5F\x54\x41\x42": _0x6341[328] | |
}) | |
} | |
_createClass(_0x8e92x10f, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
this[_0x6341[12]][_0x6341[42]](_0x6341[216])[_0x6341[280]](_0x6341[437])[_0x6341[455]](0); | |
this[_0x6341[12]][_0x6341[4]]({ | |
"\x72\x6F\x6C\x65": _0x6341[429], | |
"\x61\x72\x69\x61\x2D\x6D\x75\x6C\x74\x69\x73\x65\x6C\x65\x63\x74\x61\x62\x6C\x65": this[_0x6341[351]][_0x6341[459]] | |
}); | |
this[_0x6341[460]] = this[_0x6341[12]][_0x6341[42]](_0x6341[461]); | |
this[_0x6341[460]][_0x6341[24]](function() { | |
var _0x8e92x104 = this[_0x6341[134]] || Foundation.GetYoDigits(6, _0x6341[462]) | |
, _0x8e92x15 = window[_0x6341[0]](this) | |
, _0x8e92x7c = _0x8e92x15[_0x6341[212]](_0x6341[216]) | |
, _0x8e92x110 = _0x8e92x7c[0][_0x6341[134]] || Foundation.GetYoDigits(6, _0x6341[463]) | |
, _0x8e92x111 = _0x8e92x7c[_0x6341[446]](_0x6341[445]); | |
_0x8e92x15[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x73": _0x8e92x110, | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": _0x8e92x111, | |
"\x72\x6F\x6C\x65": _0x6341[435], | |
"\x69\x64": _0x8e92x104 | |
}); | |
_0x8e92x7c[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C\x6C\x65\x64\x62\x79": _0x8e92x104, | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": !_0x8e92x111, | |
"\x72\x6F\x6C\x65": _0x6341[436], | |
"\x69\x64": _0x8e92x110 | |
}) | |
}); | |
var _0x8e92x112 = this[_0x6341[12]][_0x6341[42]](_0x6341[437]); | |
if (_0x8e92x112[_0x6341[63]]) { | |
var _0x8e92xd = this; | |
_0x8e92x112[_0x6341[24]](function() { | |
_0x8e92xd[_0x6341[329]](window[_0x6341[0]](this)) | |
}) | |
} | |
;this._events() | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
var _0x8e92xd = this; | |
this[_0x6341[12]][_0x6341[42]](_0x6341[205])[_0x6341[24]](function() { | |
var _0x8e92x116 = window[_0x6341[0]](this)[_0x6341[212]](_0x6341[216]); | |
if (_0x8e92x116[_0x6341[63]]) { | |
window[_0x6341[0]](this)[_0x6341[212]](_0x6341[440])[_0x6341[281]](_0x6341[476])[_0x6341[127]](_0x6341[476], function(_0x8e92x19) { | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92xd[_0x6341[259]](_0x8e92x116) | |
}) | |
} | |
})[_0x6341[127]](_0x6341[464], function(_0x8e92x19) { | |
var _0x8e92x5c = window[_0x6341[0]](this), _0x8e92x113 = _0x8e92x5c[_0x6341[217]](_0x6341[211])[_0x6341[212]](_0x6341[205]), _0x8e92x114, _0x8e92x115, _0x8e92xa9 = _0x8e92x5c[_0x6341[212]](_0x6341[216]); | |
_0x8e92x113[_0x6341[24]](function(_0x8e92x14) { | |
if (window[_0x6341[0]](this)[_0x6341[180]](_0x8e92x5c)) { | |
_0x8e92x114 = _0x8e92x113[_0x6341[190]](Math[_0x6341[94]](0, _0x8e92x14 - 1))[_0x6341[42]](_0x6341[440])[_0x6341[465]](); | |
_0x8e92x115 = _0x8e92x113[_0x6341[190]](Math[_0x6341[466]](_0x8e92x14 + 1, _0x8e92x113[_0x6341[63]] - 1))[_0x6341[42]](_0x6341[440])[_0x6341[465]](); | |
if (window[_0x6341[0]](this)[_0x6341[212]](_0x6341[467])[_0x6341[63]]) { | |
_0x8e92x115 = _0x8e92x5c[_0x6341[42]](_0x6341[468])[_0x6341[42]](_0x6341[440])[_0x6341[465]]() | |
} | |
;if (window[_0x6341[0]](this)[_0x6341[180]](_0x6341[469])) { | |
_0x8e92x114 = _0x8e92x5c[_0x6341[470]](_0x6341[205])[_0x6341[465]]()[_0x6341[42]](_0x6341[440])[_0x6341[465]]() | |
} else { | |
if (_0x8e92x114[_0x6341[212]](_0x6341[467])[_0x6341[63]]) { | |
_0x8e92x114 = _0x8e92x114[_0x6341[42]](_0x6341[471])[_0x6341[42]](_0x6341[440])[_0x6341[465]]() | |
} | |
} | |
;if (window[_0x6341[0]](this)[_0x6341[180]](_0x6341[472])) { | |
_0x8e92x115 = _0x8e92x5c[_0x6341[470]](_0x6341[205])[_0x6341[465]]()[_0x6341[426]](_0x6341[205])[_0x6341[42]](_0x6341[440])[_0x6341[465]]() | |
} | |
;return | |
} | |
}); | |
Foundation[_0x6341[184]][_0x6341[444]](_0x8e92x19, _0x6341[457], { | |
open: function() { | |
if (_0x8e92xa9[_0x6341[180]](_0x6341[473])) { | |
_0x8e92xd[_0x6341[329]](_0x8e92xa9); | |
_0x8e92xa9[_0x6341[42]](_0x6341[205])[_0x6341[465]]()[_0x6341[42]](_0x6341[440])[_0x6341[465]]()[_0x6341[439]]() | |
} | |
}, | |
close: function() { | |
if (_0x8e92xa9[_0x6341[63]] && !_0x8e92xa9[_0x6341[180]](_0x6341[473])) { | |
_0x8e92xd[_0x6341[328]](_0x8e92xa9) | |
} else { | |
if (_0x8e92x5c[_0x6341[217]](_0x6341[216])[_0x6341[63]]) { | |
_0x8e92xd[_0x6341[328]](_0x8e92x5c[_0x6341[217]](_0x6341[216])); | |
_0x8e92x5c[_0x6341[470]](_0x6341[205])[_0x6341[465]]()[_0x6341[42]](_0x6341[440])[_0x6341[465]]()[_0x6341[439]]() | |
} | |
} | |
}, | |
up: function() { | |
_0x8e92x114[_0x6341[4]](_0x6341[181], -1)[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
}, | |
down: function() { | |
_0x8e92x115[_0x6341[4]](_0x6341[181], -1)[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
}, | |
toggle: function() { | |
if (_0x8e92x5c[_0x6341[212]](_0x6341[216])[_0x6341[63]]) { | |
_0x8e92xd[_0x6341[259]](_0x8e92x5c[_0x6341[212]](_0x6341[216])) | |
} | |
}, | |
closeAll: function() { | |
_0x8e92xd[_0x6341[474]]() | |
}, | |
handled: function() { | |
_0x8e92x19[_0x6341[475]]() | |
} | |
}) | |
}) | |
} | |
}, { | |
key: _0x6341[474], | |
value: function _0x8e92x117() { | |
this[_0x6341[12]][_0x6341[42]](_0x6341[216])[_0x6341[455]](this[_0x6341[351]][_0x6341[450]]) | |
} | |
}, { | |
key: _0x6341[259], | |
value: function _0x8e92x108(_0x8e92xa9) { | |
if (!_0x8e92xa9[_0x6341[180]](_0x6341[477])) { | |
if (!_0x8e92xa9[_0x6341[180]](_0x6341[473])) { | |
this[_0x6341[328]](_0x8e92xa9) | |
} else { | |
this[_0x6341[329]](_0x8e92xa9) | |
} | |
} | |
} | |
}, { | |
key: _0x6341[329], | |
value: function _0x8e92x109(_0x8e92xa9) { | |
var _0x8e92xd = this; | |
if (!this[_0x6341[351]][_0x6341[459]]) { | |
this[_0x6341[328]](this[_0x6341[12]][_0x6341[42]](_0x6341[437])[_0x6341[280]](_0x8e92xa9[_0x6341[479]](this.$element)[_0x6341[478]](_0x8e92xa9))) | |
} | |
;_0x8e92xa9[_0x6341[193]](_0x6341[445])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": false | |
})[_0x6341[217]](_0x6341[461])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": true | |
}); | |
Foundation.Move(this[_0x6341[351]][_0x6341[450]], _0x8e92xa9, function() { | |
_0x8e92xa9[_0x6341[452]](_0x8e92xd[_0x6341[351]][_0x6341[450]], function() { | |
_0x8e92xd[_0x6341[12]][_0x6341[16]](_0x6341[480], [_0x8e92xa9]) | |
}) | |
}) | |
} | |
}, { | |
key: _0x6341[328], | |
value: function _0x8e92x10c(_0x8e92xa9) { | |
var _0x8e92xd = this; | |
Foundation.Move(this[_0x6341[351]][_0x6341[450]], _0x8e92xa9, function() { | |
_0x8e92xa9[_0x6341[455]](_0x8e92xd[_0x6341[351]][_0x6341[450]], function() { | |
_0x8e92xd[_0x6341[12]][_0x6341[16]](_0x6341[481], [_0x8e92xa9]) | |
}) | |
}); | |
var _0x8e92x118 = _0x8e92xa9[_0x6341[42]](_0x6341[216])[_0x6341[455]](0)[_0x6341[41]]()[_0x6341[4]](_0x6341[449], true); | |
_0x8e92x118[_0x6341[217]](_0x6341[461])[_0x6341[4]](_0x6341[482], false) | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
this[_0x6341[12]][_0x6341[42]](_0x6341[216])[_0x6341[452]](0)[_0x6341[115]](_0x6341[219], _0x6341[38]); | |
this[_0x6341[12]][_0x6341[42]](_0x6341[440])[_0x6341[281]](_0x6341[476]); | |
Foundation[_0x6341[223]].Burn(this.$element, _0x6341[433]); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92x10f | |
}(); | |
_0x8e92x10f[_0x6341[352]] = { | |
slideSpeed: 250, | |
multiOpen: true | |
}; | |
Foundation[_0x6341[424]](_0x8e92x10f, _0x6341[457]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x119 = function() { | |
function _0x8e92x119(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x119); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x119[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
Foundation[_0x6341[223]].Feather(this.$element, _0x6341[483]); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[484]); | |
Foundation[_0x6341[184]][_0x6341[428]](_0x6341[484], { | |
"\x45\x4E\x54\x45\x52": _0x6341[255], | |
"\x53\x50\x41\x43\x45": _0x6341[255], | |
"\x41\x52\x52\x4F\x57\x5F\x52\x49\x47\x48\x54": _0x6341[426], | |
"\x41\x52\x52\x4F\x57\x5F\x55\x50": _0x6341[328], | |
"\x41\x52\x52\x4F\x57\x5F\x44\x4F\x57\x4E": _0x6341[329], | |
"\x41\x52\x52\x4F\x57\x5F\x4C\x45\x46\x54": _0x6341[427], | |
"\x45\x53\x43\x41\x50\x45": _0x6341[251], | |
"\x54\x41\x42": _0x6341[329], | |
"\x53\x48\x49\x46\x54\x5F\x54\x41\x42": _0x6341[328] | |
}) | |
} | |
_createClass(_0x8e92x119, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
this[_0x6341[485]] = this[_0x6341[12]][_0x6341[42]](_0x6341[486])[_0x6341[212]](_0x6341[440]); | |
this[_0x6341[487]] = this[_0x6341[485]][_0x6341[217]](_0x6341[205])[_0x6341[212]](_0x6341[216]); | |
this[_0x6341[488]] = this[_0x6341[12]][_0x6341[42]](_0x6341[205])[_0x6341[280]](_0x6341[489])[_0x6341[4]](_0x6341[202], _0x6341[204])[_0x6341[42]](_0x6341[440]); | |
this._prepareMenu(); | |
this._keyboardEvents() | |
} | |
}, { | |
key: _0x6341[490], | |
value: function _0x8e92x11a() { | |
var _0x8e92xd = this; | |
this[_0x6341[485]][_0x6341[24]](function() { | |
var _0x8e92x7c = window[_0x6341[0]](this); | |
var _0x8e92x11b = _0x8e92x7c[_0x6341[42]](_0x6341[210]); | |
if (_0x8e92xd[_0x6341[351]][_0x6341[491]]) { | |
_0x8e92x11b[_0x6341[495]]()[_0x6341[494]](_0x8e92x7c[_0x6341[212]](_0x6341[216]))[_0x6341[493]](_0x6341[492]) | |
} | |
;_0x8e92x11b[_0x6341[14]](_0x6341[497], _0x8e92x11b[_0x6341[4]](_0x6341[496]))[_0x6341[23]](_0x6341[496]); | |
_0x8e92x7c[_0x6341[212]](_0x6341[216])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": true, | |
"\x74\x61\x62\x69\x6E\x64\x65\x78": 0, | |
"\x72\x6F\x6C\x65": _0x6341[214] | |
}); | |
_0x8e92xd._events(_0x8e92x7c) | |
}); | |
this[_0x6341[487]][_0x6341[24]](function() { | |
var _0x8e92x11c = window[_0x6341[0]](this) | |
, _0x8e92x11d = _0x8e92x11c[_0x6341[42]](_0x6341[489]); | |
if (!_0x8e92x11d[_0x6341[63]]) { | |
_0x8e92x11c[_0x6341[499]](_0x8e92xd[_0x6341[351]][_0x6341[498]]) | |
} | |
;_0x8e92xd._back(_0x8e92x11c) | |
}); | |
if (!this[_0x6341[12]][_0x6341[217]]()[_0x6341[446]](_0x6341[500])) { | |
this[_0x6341[501]] = window[_0x6341[0]](this[_0x6341[351]][_0x6341[502]])[_0x6341[193]](_0x6341[500])[_0x6341[115]](this._getMaxDims()); | |
this[_0x6341[12]][_0x6341[493]](this.$wrapper) | |
} | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3(_0x8e92x15) { | |
var _0x8e92xd = this; | |
_0x8e92x15[_0x6341[281]](_0x6341[503])[_0x6341[127]](_0x6341[503], function(_0x8e92x19) { | |
if (window[_0x6341[0]](_0x8e92x19[_0x6341[293]])[_0x6341[479]](_0x6341[211], _0x6341[205])[_0x6341[446]](_0x6341[504])) { | |
_0x8e92x19[_0x6341[475]](); | |
_0x8e92x19[_0x6341[316]]() | |
} | |
;_0x8e92xd._show(_0x8e92x15[_0x6341[217]](_0x6341[205])); | |
if (_0x8e92xd[_0x6341[351]][_0x6341[505]]) { | |
var _0x8e92x11e = window[_0x6341[0]](_0x6341[232])[_0x6341[280]](_0x8e92xd.$wrapper); | |
_0x8e92x11e[_0x6341[281]](_0x6341[506])[_0x6341[127]](_0x6341[503], function(_0x8e92x19) { | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92xd._hideAll(); | |
_0x8e92x11e[_0x6341[281]](_0x6341[506]) | |
}) | |
} | |
}) | |
} | |
}, { | |
key: _0x6341[507], | |
value: function _0x8e92x11f() { | |
var _0x8e92xd = this; | |
this[_0x6341[488]][_0x6341[478]](this[_0x6341[12]][_0x6341[42]](_0x6341[510]))[_0x6341[127]](_0x6341[508], function(_0x8e92x19) { | |
var _0x8e92x5c = window[_0x6341[0]](this), _0x8e92x113 = _0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])[_0x6341[212]](_0x6341[205])[_0x6341[212]](_0x6341[440]), _0x8e92x114, _0x8e92x115; | |
_0x8e92x113[_0x6341[24]](function(_0x8e92x14) { | |
if (window[_0x6341[0]](this)[_0x6341[180]](_0x8e92x5c)) { | |
_0x8e92x114 = _0x8e92x113[_0x6341[190]](Math[_0x6341[94]](0, _0x8e92x14 - 1)); | |
_0x8e92x115 = _0x8e92x113[_0x6341[190]](Math[_0x6341[466]](_0x8e92x14 + 1, _0x8e92x113[_0x6341[63]] - 1)); | |
return | |
} | |
}); | |
Foundation[_0x6341[184]][_0x6341[444]](_0x8e92x19, _0x6341[484], { | |
next: function() { | |
if (_0x8e92x5c[_0x6341[180]](_0x8e92xd.$submenuAnchors)) { | |
_0x8e92xd._show(_0x8e92x5c[_0x6341[217]](_0x6341[205])); | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x5c), function() { | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[42]](_0x6341[509])[_0x6341[182]](_0x8e92xd.$menuItems)[_0x6341[465]]()[_0x6341[439]]() | |
}); | |
_0x8e92x19[_0x6341[316]]() | |
} | |
}, | |
previous: function() { | |
_0x8e92xd._hide(_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])); | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x5c), function() { | |
setTimeout(function() { | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])[_0x6341[217]](_0x6341[205])[_0x6341[212]](_0x6341[440])[_0x6341[465]]()[_0x6341[439]]() | |
}, 1) | |
}); | |
_0x8e92x19[_0x6341[316]]() | |
}, | |
up: function() { | |
_0x8e92x114[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
}, | |
down: function() { | |
_0x8e92x115[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
}, | |
close: function() { | |
_0x8e92xd._back() | |
}, | |
open: function() { | |
if (!_0x8e92x5c[_0x6341[180]](_0x8e92xd.$menuItems)) { | |
_0x8e92xd._hide(_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])); | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x5c), function() { | |
setTimeout(function() { | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[217]](_0x6341[211])[_0x6341[217]](_0x6341[205])[_0x6341[212]](_0x6341[440])[_0x6341[465]]()[_0x6341[439]]() | |
}, 1) | |
}); | |
_0x8e92x19[_0x6341[316]]() | |
} else { | |
if (_0x8e92x5c[_0x6341[180]](_0x8e92xd.$submenuAnchors)) { | |
_0x8e92xd._show(_0x8e92x5c[_0x6341[217]](_0x6341[205])); | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x5c), function() { | |
_0x8e92x5c[_0x6341[217]](_0x6341[205])[_0x6341[42]](_0x6341[509])[_0x6341[182]](_0x8e92xd.$menuItems)[_0x6341[465]]()[_0x6341[439]]() | |
}); | |
_0x8e92x19[_0x6341[316]]() | |
} | |
} | |
}, | |
handled: function() { | |
_0x8e92x19[_0x6341[475]]() | |
} | |
}) | |
}) | |
} | |
}, { | |
key: _0x6341[511], | |
value: function _0x8e92x120() { | |
var _0x8e92x15 = this[_0x6341[12]][_0x6341[42]](_0x6341[513])[_0x6341[193]](_0x6341[512]); | |
_0x8e92x15[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x15), function(_0x8e92x19) { | |
_0x8e92x15[_0x6341[68]](_0x6341[514]) | |
}); | |
this[_0x6341[12]][_0x6341[16]](_0x6341[515]) | |
} | |
}, { | |
key: _0x6341[516], | |
value: function _0x8e92x121(_0x8e92x15) { | |
var _0x8e92xd = this; | |
_0x8e92x15[_0x6341[281]](_0x6341[503]); | |
_0x8e92x15[_0x6341[212]](_0x6341[489])[_0x6341[127]](_0x6341[503], function(_0x8e92x19) { | |
_0x8e92x19[_0x6341[475]](); | |
_0x8e92xd._hide(_0x8e92x15) | |
}) | |
} | |
}, { | |
key: _0x6341[517], | |
value: function _0x8e92x122() { | |
var _0x8e92xd = this; | |
this[_0x6341[488]][_0x6341[280]](_0x6341[518])[_0x6341[281]](_0x6341[503])[_0x6341[127]](_0x6341[503], function(_0x8e92x19) { | |
setTimeout(function() { | |
_0x8e92xd._hideAll() | |
}, 0) | |
}) | |
} | |
}, { | |
key: _0x6341[519], | |
value: function _0x8e92x123(_0x8e92x15) { | |
_0x8e92x15[_0x6341[212]](_0x6341[216])[_0x6341[193]](_0x6341[445]); | |
this[_0x6341[12]][_0x6341[16]](_0x6341[520], [_0x8e92x15]) | |
} | |
}, { | |
key: _0x6341[521], | |
value: function _0x8e92x124(_0x8e92x15) { | |
var _0x8e92xd = this; | |
_0x8e92x15[_0x6341[193]](_0x6341[512])[_0x6341[196]](Foundation[_0x6341[52]](_0x8e92x15), function() { | |
_0x8e92x15[_0x6341[68]](_0x6341[514]); | |
_0x8e92x15[_0x6341[522]]() | |
}); | |
_0x8e92x15[_0x6341[16]](_0x6341[523], [_0x8e92x15]) | |
} | |
}, { | |
key: _0x6341[524], | |
value: function _0x8e92x125() { | |
var _0x8e92x126 = 0 | |
, _0x8e92x127 = {}; | |
this[_0x6341[487]][_0x6341[478]](this.$element)[_0x6341[24]](function() { | |
var _0x8e92x128 = window[_0x6341[0]](this)[_0x6341[212]](_0x6341[205])[_0x6341[63]]; | |
_0x8e92x126 = _0x8e92x128 > _0x8e92x126 ? _0x8e92x128 : _0x8e92x126 | |
}); | |
_0x8e92x127[_0x6341[525]] = _0x8e92x126 * this[_0x6341[488]][0][_0x6341[231]]()[_0x6341[227]] + _0x6341[526]; | |
_0x8e92x127[_0x6341[527]] = this[_0x6341[12]][0][_0x6341[231]]()[_0x6341[145]] + _0x6341[526]; | |
return _0x8e92x127 | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
this._hideAll(); | |
Foundation[_0x6341[223]].Burn(this.$element, _0x6341[483]); | |
this[_0x6341[12]][_0x6341[535]]()[_0x6341[42]](_0x6341[534])[_0x6341[533]]()[_0x6341[529]]()[_0x6341[42]](_0x6341[532])[_0x6341[68]](_0x6341[531])[_0x6341[529]]()[_0x6341[42]](_0x6341[216])[_0x6341[23]](_0x6341[530])[_0x6341[281]](_0x6341[506])[_0x6341[529]]()[_0x6341[281]](_0x6341[528]); | |
this[_0x6341[12]][_0x6341[42]](_0x6341[440])[_0x6341[24]](function() { | |
var _0x8e92x11b = window[_0x6341[0]](this); | |
if (_0x8e92x11b[_0x6341[14]](_0x6341[497])) { | |
_0x8e92x11b[_0x6341[4]](_0x6341[496], _0x8e92x11b[_0x6341[14]](_0x6341[497]))[_0x6341[22]](_0x6341[497]) | |
} else { | |
return | |
} | |
}); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92x119 | |
}(); | |
_0x8e92x119[_0x6341[352]] = { | |
backButton: _0x6341[536], | |
wrapper: _0x6341[537], | |
parentLink: false, | |
closeOnClick: false | |
}; | |
Foundation[_0x6341[424]](_0x8e92x119, _0x6341[484]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x129 = function() { | |
function _0x8e92x129(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x129); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x129[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[538]); | |
Foundation[_0x6341[184]][_0x6341[428]](_0x6341[538], { | |
"\x45\x4E\x54\x45\x52": _0x6341[255], | |
"\x53\x50\x41\x43\x45": _0x6341[255], | |
"\x45\x53\x43\x41\x50\x45": _0x6341[251], | |
"\x54\x41\x42": _0x6341[539], | |
"\x53\x48\x49\x46\x54\x5F\x54\x41\x42": _0x6341[540] | |
}) | |
} | |
_createClass(_0x8e92x129, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
var _0x8e92x12a = this[_0x6341[12]][_0x6341[4]](_0x6341[134]); | |
this[_0x6341[541]] = window[_0x6341[0]](_0x6341[542] + _0x8e92x12a + _0x6341[279]) || window[_0x6341[0]](_0x6341[543] + _0x8e92x12a + _0x6341[279]); | |
this[_0x6341[541]][_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x63\x6F\x6E\x74\x72\x6F\x6C\x73": _0x8e92x12a, | |
"\x64\x61\x74\x61\x2D\x69\x73\x2D\x66\x6F\x63\x75\x73": false, | |
"\x64\x61\x74\x61\x2D\x79\x65\x74\x69\x2D\x62\x6F\x78": _0x8e92x12a, | |
"\x61\x72\x69\x61\x2D\x68\x61\x73\x70\x6F\x70\x75\x70": true, | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": false | |
}); | |
this[_0x6341[351]][_0x6341[544]] = this[_0x6341[545]](); | |
this[_0x6341[546]] = 4; | |
this[_0x6341[547]] = []; | |
this[_0x6341[12]][_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": _0x6341[548], | |
"\x64\x61\x74\x61\x2D\x79\x65\x74\x69\x2D\x62\x6F\x78": _0x8e92x12a, | |
"\x64\x61\x74\x61\x2D\x72\x65\x73\x69\x7A\x65": _0x8e92x12a, | |
"\x61\x72\x69\x61\x2D\x6C\x61\x62\x65\x6C\x6C\x65\x64\x62\x79": this[_0x6341[541]][0][_0x6341[134]] || Foundation.GetYoDigits(6, _0x6341[549]) | |
}); | |
this._events() | |
} | |
}, { | |
key: _0x6341[545], | |
value: function _0x8e92x12b() { | |
var _0x8e92x12c = this[_0x6341[12]][0][_0x6341[551]][_0x6341[550]](/(top|left|right|bottom)/g); | |
_0x8e92x12c = _0x8e92x12c ? _0x8e92x12c[0] : _0x6341[38]; | |
var _0x8e92x12d = /float-(.+)\s/[_0x6341[102]](this[_0x6341[541]][0][_0x6341[551]]); | |
_0x8e92x12d = _0x8e92x12d ? _0x8e92x12d[1] : _0x6341[38]; | |
var _0x8e92x91 = _0x8e92x12d ? _0x8e92x12d + _0x6341[150] + _0x8e92x12c : _0x8e92x12c; | |
return _0x8e92x91 | |
} | |
}, { | |
key: _0x6341[552], | |
value: function _0x8e92x12e(_0x8e92x91) { | |
this[_0x6341[547]][_0x6341[17]](_0x8e92x91 ? _0x8e92x91 : _0x6341[553]); | |
if (!_0x8e92x91 && this[_0x6341[547]][_0x6341[19]](_0x6341[225]) < 0) { | |
this[_0x6341[12]][_0x6341[193]](_0x6341[225]) | |
} else { | |
if (_0x8e92x91 === _0x6341[225] && this[_0x6341[547]][_0x6341[19]](_0x6341[553]) < 0) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91) | |
} else { | |
if (_0x8e92x91 === _0x6341[228] && this[_0x6341[547]][_0x6341[19]](_0x6341[235]) < 0) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91)[_0x6341[193]](_0x6341[235]) | |
} else { | |
if (_0x8e92x91 === _0x6341[235] && this[_0x6341[547]][_0x6341[19]](_0x6341[228]) < 0) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91)[_0x6341[193]](_0x6341[228]) | |
} else { | |
if (!_0x8e92x91 && this[_0x6341[547]][_0x6341[19]](_0x6341[225]) > -1 && this[_0x6341[547]][_0x6341[19]](_0x6341[228]) < 0) { | |
this[_0x6341[12]][_0x6341[193]](_0x6341[228]) | |
} else { | |
if (_0x8e92x91 === _0x6341[225] && this[_0x6341[547]][_0x6341[19]](_0x6341[553]) > -1 && this[_0x6341[547]][_0x6341[19]](_0x6341[228]) < 0) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91)[_0x6341[193]](_0x6341[228]) | |
} else { | |
if (_0x8e92x91 === _0x6341[228] && this[_0x6341[547]][_0x6341[19]](_0x6341[235]) > -1 && this[_0x6341[547]][_0x6341[19]](_0x6341[553]) < 0) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91) | |
} else { | |
if (_0x8e92x91 === _0x6341[235] && this[_0x6341[547]][_0x6341[19]](_0x6341[228]) > -1 && this[_0x6341[547]][_0x6341[19]](_0x6341[553]) < 0) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91) | |
} else { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x91) | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
;this[_0x6341[554]] = true; | |
this[_0x6341[546]]-- | |
} | |
}, { | |
key: _0x6341[555], | |
value: function _0x8e92x12f() { | |
if (this[_0x6341[541]][_0x6341[4]](_0x6341[482]) === _0x6341[556]) { | |
return false | |
} | |
;var _0x8e92x91 = this[_0x6341[545]]() | |
, _0x8e92x95 = Foundation[_0x6341[224]].GetDimensions(this.$element) | |
, _0x8e92x96 = Foundation[_0x6341[224]].GetDimensions(this.$anchor) | |
, _0x8e92xd = this | |
, _0x8e92x130 = _0x8e92x91 === _0x6341[228] ? _0x6341[228] : _0x8e92x91 === _0x6341[235] ? _0x6341[228] : _0x6341[225] | |
, _0x8e92x4f = _0x8e92x130 === _0x6341[225] ? _0x6341[227] : _0x6341[145] | |
, _0x8e92x131 = _0x8e92x4f === _0x6341[227] ? this[_0x6341[351]][_0x6341[557]] : this[_0x6341[351]][_0x6341[558]]; | |
if (_0x8e92x95[_0x6341[145]] >= _0x8e92x95[_0x6341[229]][_0x6341[145]] || !this[_0x6341[546]] && !Foundation[_0x6341[224]].ImNotTouchingYou(this.$element)) { | |
this[_0x6341[12]][_0x6341[226]](Foundation[_0x6341[224]].GetOffsets(this.$element, this.$anchor, _0x6341[237], this[_0x6341[351]][_0x6341[557]], this[_0x6341[351]][_0x6341[558]], true))[_0x6341[115]]({ | |
"\x77\x69\x64\x74\x68": _0x8e92x95[_0x6341[229]][_0x6341[145]] - this[_0x6341[351]][_0x6341[558]] * 2, | |
"\x68\x65\x69\x67\x68\x74": _0x6341[559] | |
}); | |
this[_0x6341[554]] = true; | |
return false | |
} | |
;this[_0x6341[12]][_0x6341[226]](Foundation[_0x6341[224]].GetOffsets(this.$element, this.$anchor, _0x8e92x91, this[_0x6341[351]][_0x6341[557]], this[_0x6341[351]][_0x6341[558]])); | |
while (!Foundation[_0x6341[224]].ImNotTouchingYou(this.$element, false, true) && this[_0x6341[546]]) { | |
this._reposition(_0x8e92x91); | |
this._setPosition() | |
} | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
var _0x8e92xd = this; | |
this[_0x6341[12]][_0x6341[127]]({ | |
"\x6F\x70\x65\x6E\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72": this[_0x6341[255]][_0x6341[97]](this), | |
"\x63\x6C\x6F\x73\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72": this[_0x6341[251]][_0x6341[97]](this), | |
"\x74\x6F\x67\x67\x6C\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72": this[_0x6341[259]][_0x6341[97]](this), | |
"\x72\x65\x73\x69\x7A\x65\x6D\x65\x2E\x7A\x66\x2E\x74\x72\x69\x67\x67\x65\x72": this[_0x6341[555]][_0x6341[97]](this) | |
}); | |
if (this[_0x6341[351]][_0x6341[560]]) { | |
this[_0x6341[541]][_0x6341[281]](_0x6341[565])[_0x6341[127]](_0x6341[564], function() { | |
clearTimeout(_0x8e92xd[_0x6341[562]]); | |
_0x8e92xd[_0x6341[562]] = setTimeout(function() { | |
_0x8e92xd[_0x6341[255]](); | |
_0x8e92xd[_0x6341[541]][_0x6341[14]](_0x6341[560], true) | |
}, _0x8e92xd[_0x6341[351]][_0x6341[563]]) | |
})[_0x6341[127]](_0x6341[561], function() { | |
clearTimeout(_0x8e92xd[_0x6341[562]]); | |
_0x8e92xd[_0x6341[562]] = setTimeout(function() { | |
_0x8e92xd[_0x6341[251]](); | |
_0x8e92xd[_0x6341[541]][_0x6341[14]](_0x6341[560], false) | |
}, _0x8e92xd[_0x6341[351]][_0x6341[563]]) | |
}); | |
if (this[_0x6341[351]][_0x6341[566]]) { | |
this[_0x6341[12]][_0x6341[281]](_0x6341[565])[_0x6341[127]](_0x6341[564], function() { | |
clearTimeout(_0x8e92xd[_0x6341[562]]) | |
})[_0x6341[127]](_0x6341[561], function() { | |
clearTimeout(_0x8e92xd[_0x6341[562]]); | |
_0x8e92xd[_0x6341[562]] = setTimeout(function() { | |
_0x8e92xd[_0x6341[251]](); | |
_0x8e92xd[_0x6341[541]][_0x6341[14]](_0x6341[560], false) | |
}, _0x8e92xd[_0x6341[351]][_0x6341[563]]) | |
}) | |
} | |
} | |
;this[_0x6341[541]][_0x6341[478]](this.$element)[_0x6341[127]](_0x6341[567], function(_0x8e92x19) { | |
var _0x8e92xa9 = window[_0x6341[0]](this) | |
, _0x8e92x132 = Foundation[_0x6341[184]][_0x6341[568]](_0x8e92xd.$element); | |
Foundation[_0x6341[184]][_0x6341[444]](_0x8e92x19, _0x6341[538], { | |
tab_forward: function() { | |
if (_0x8e92xd[_0x6341[12]][_0x6341[42]](_0x6341[569])[_0x6341[180]](_0x8e92x132[_0x6341[190]](-1))) { | |
if (_0x8e92xd[_0x6341[351]][_0x6341[570]]) { | |
_0x8e92x132[_0x6341[190]](0)[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
} else { | |
_0x8e92xd[_0x6341[251]]() | |
} | |
} | |
}, | |
tab_backward: function() { | |
if (_0x8e92xd[_0x6341[12]][_0x6341[42]](_0x6341[569])[_0x6341[180]](_0x8e92x132[_0x6341[190]](0)) || _0x8e92xd[_0x6341[12]][_0x6341[180]](_0x6341[569])) { | |
if (_0x8e92xd[_0x6341[351]][_0x6341[570]]) { | |
_0x8e92x132[_0x6341[190]](-1)[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
} else { | |
_0x8e92xd[_0x6341[251]]() | |
} | |
} | |
}, | |
open: function() { | |
if (_0x8e92xa9[_0x6341[180]](_0x8e92xd.$anchor)) { | |
_0x8e92xd[_0x6341[255]](); | |
_0x8e92xd[_0x6341[12]][_0x6341[4]](_0x6341[181], -1)[_0x6341[439]](); | |
_0x8e92x19[_0x6341[316]]() | |
} | |
}, | |
close: function() { | |
_0x8e92xd[_0x6341[251]](); | |
_0x8e92xd[_0x6341[541]][_0x6341[439]]() | |
} | |
}) | |
}) | |
} | |
}, { | |
key: _0x6341[571], | |
value: function _0x8e92x133() { | |
var _0x8e92x11e = window[_0x6341[0]](document[_0x6341[232]])[_0x6341[280]](this.$element) | |
, _0x8e92xd = this; | |
_0x8e92x11e[_0x6341[281]](_0x6341[572])[_0x6341[127]](_0x6341[572], function(_0x8e92x19) { | |
if (_0x8e92xd[_0x6341[541]][_0x6341[180]](_0x8e92x19[_0x6341[293]]) || _0x8e92xd[_0x6341[541]][_0x6341[42]](_0x8e92x19[_0x6341[293]])[_0x6341[63]]) { | |
return | |
} | |
;if (_0x8e92xd[_0x6341[12]][_0x6341[42]](_0x8e92x19[_0x6341[293]])[_0x6341[63]]) { | |
return | |
} | |
;_0x8e92xd[_0x6341[251]](); | |
_0x8e92x11e[_0x6341[281]](_0x6341[572]) | |
}) | |
} | |
}, { | |
key: _0x6341[255], | |
value: function _0x8e92x134() { | |
this[_0x6341[12]][_0x6341[16]](_0x6341[573], this[_0x6341[12]][_0x6341[4]](_0x6341[134])); | |
this[_0x6341[541]][_0x6341[193]](_0x6341[560])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": true | |
}); | |
this._setPosition(); | |
this[_0x6341[12]][_0x6341[193]](_0x6341[574])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": false | |
}); | |
if (this[_0x6341[351]][_0x6341[575]]) { | |
var _0x8e92x135 = Foundation[_0x6341[184]][_0x6341[568]](this.$element); | |
if (_0x8e92x135[_0x6341[63]]) { | |
_0x8e92x135[_0x6341[190]](0)[_0x6341[439]]() | |
} | |
} | |
;if (this[_0x6341[351]][_0x6341[505]]) { | |
this._addBodyHandler() | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[576], [this[_0x6341[12]]]) | |
} | |
}, { | |
key: _0x6341[251], | |
value: function _0x8e92x136() { | |
if (!this[_0x6341[12]][_0x6341[446]](_0x6341[574])) { | |
return false | |
} | |
;this[_0x6341[12]][_0x6341[68]](_0x6341[574])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": true | |
}); | |
this[_0x6341[541]][_0x6341[68]](_0x6341[560])[_0x6341[4]](_0x6341[482], false); | |
if (this[_0x6341[554]]) { | |
var _0x8e92x137 = this[_0x6341[545]](); | |
if (_0x8e92x137) { | |
this[_0x6341[12]][_0x6341[68]](_0x8e92x137) | |
} | |
;this[_0x6341[12]][_0x6341[193]](this[_0x6341[351]][_0x6341[544]])[_0x6341[115]]({ | |
height: _0x6341[38], | |
width: _0x6341[38] | |
}); | |
this[_0x6341[554]] = false; | |
this[_0x6341[546]] = 4; | |
this[_0x6341[547]][_0x6341[63]] = 0 | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[577], [this[_0x6341[12]]]) | |
} | |
}, { | |
key: _0x6341[259], | |
value: function _0x8e92x108() { | |
if (this[_0x6341[12]][_0x6341[446]](_0x6341[574])) { | |
if (this[_0x6341[541]][_0x6341[14]](_0x6341[560])) { | |
return | |
} | |
;this[_0x6341[251]]() | |
} else { | |
this[_0x6341[255]]() | |
} | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
this[_0x6341[12]][_0x6341[281]](_0x6341[250])[_0x6341[197]](); | |
this[_0x6341[541]][_0x6341[281]](_0x6341[578]); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92x129 | |
}(); | |
_0x8e92x129[_0x6341[352]] = { | |
hoverDelay: 250, | |
hover: false, | |
hoverPane: false, | |
vOffset: 1, | |
hOffset: 1, | |
positionClass: _0x6341[38], | |
trapFocus: false, | |
autoFocus: false, | |
closeOnClick: false | |
}; | |
Foundation[_0x6341[424]](_0x8e92x129, _0x6341[538]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x138 = function() { | |
function _0x8e92x138(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x138); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x138[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
Foundation[_0x6341[223]].Feather(this.$element, _0x6341[272]); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[579]); | |
Foundation[_0x6341[184]][_0x6341[428]](_0x6341[579], { | |
"\x45\x4E\x54\x45\x52": _0x6341[255], | |
"\x53\x50\x41\x43\x45": _0x6341[255], | |
"\x41\x52\x52\x4F\x57\x5F\x52\x49\x47\x48\x54": _0x6341[426], | |
"\x41\x52\x52\x4F\x57\x5F\x55\x50": _0x6341[328], | |
"\x41\x52\x52\x4F\x57\x5F\x44\x4F\x57\x4E": _0x6341[329], | |
"\x41\x52\x52\x4F\x57\x5F\x4C\x45\x46\x54": _0x6341[427], | |
"\x45\x53\x43\x41\x50\x45": _0x6341[251] | |
}) | |
} | |
_createClass(_0x8e92x138, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
var _0x8e92x139 = this[_0x6341[12]][_0x6341[42]](_0x6341[580]); | |
this[_0x6341[12]][_0x6341[212]](_0x6341[583])[_0x6341[212]](_0x6341[582])[_0x6341[193]](_0x6341[581]); | |
this[_0x6341[488]] = this[_0x6341[12]][_0x6341[42]](_0x6341[584]); | |
this[_0x6341[430]] = this[_0x6341[12]][_0x6341[212]](_0x6341[584]); | |
this[_0x6341[430]][_0x6341[42]](_0x6341[586])[_0x6341[193]](this[_0x6341[351]][_0x6341[585]]); | |
if (this[_0x6341[12]][_0x6341[446]](this[_0x6341[351]][_0x6341[587]]) || this[_0x6341[351]][_0x6341[588]] === _0x6341[235] || Foundation[_0x6341[6]]() || this[_0x6341[12]][_0x6341[470]](_0x6341[589])[_0x6341[180]](_0x6341[222])) { | |
this[_0x6341[351]][_0x6341[588]] = _0x6341[235]; | |
_0x8e92x139[_0x6341[193]](_0x6341[590]) | |
} else { | |
_0x8e92x139[_0x6341[193]](_0x6341[591]) | |
} | |
;this[_0x6341[592]] = false; | |
this._events() | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
var _0x8e92xd = this | |
, _0x8e92x13a = _0x6341[311] in window || typeof window[_0x6341[311]] !== _0x6341[39] | |
, _0x8e92x13b = _0x6341[593]; | |
if (this[_0x6341[351]][_0x6341[594]] || _0x8e92x13a) { | |
this[_0x6341[488]][_0x6341[127]](_0x6341[595], function(_0x8e92x19) { | |
var _0x8e92x15 = window[_0x6341[0]](_0x8e92x19[_0x6341[293]])[_0x6341[479]](_0x6341[211], _0x6341[76] + _0x8e92x13b) | |
, _0x8e92x13c = _0x8e92x15[_0x6341[446]](_0x8e92x13b) | |
, _0x8e92x13d = _0x8e92x15[_0x6341[4]](_0x6341[596]) === _0x6341[548] | |
, _0x8e92x7c = _0x8e92x15[_0x6341[212]](_0x6341[582]); | |
if (_0x8e92x13c) { | |
if (_0x8e92x13d) { | |
if (!_0x8e92xd[_0x6341[351]][_0x6341[505]] || !_0x8e92xd[_0x6341[351]][_0x6341[594]] && !_0x8e92x13a || _0x8e92xd[_0x6341[351]][_0x6341[597]] && _0x8e92x13a) { | |
return | |
} else { | |
_0x8e92x19[_0x6341[475]](); | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92xd._hide(_0x8e92x15) | |
} | |
} else { | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92x19[_0x6341[475]](); | |
_0x8e92xd._show(_0x8e92x15[_0x6341[212]](_0x6341[582])); | |
_0x8e92x15[_0x6341[478]](_0x8e92x15[_0x6341[479]](_0x8e92xd.$element, _0x6341[76] + _0x8e92x13b))[_0x6341[4]](_0x6341[596], true) | |
} | |
} else { | |
return | |
} | |
}) | |
} | |
;if (!this[_0x6341[351]][_0x6341[598]]) { | |
this[_0x6341[488]][_0x6341[127]](_0x6341[603], function(_0x8e92x19) { | |
_0x8e92x19[_0x6341[475]](); | |
var _0x8e92x15 = window[_0x6341[0]](this) | |
, _0x8e92x13c = _0x8e92x15[_0x6341[446]](_0x8e92x13b); | |
if (_0x8e92x13c) { | |
clearTimeout(_0x8e92xd[_0x6341[601]]); | |
_0x8e92xd[_0x6341[601]] = setTimeout(function() { | |
_0x8e92xd._show(_0x8e92x15[_0x6341[212]](_0x6341[582])) | |
}, _0x8e92xd[_0x6341[351]][_0x6341[563]]) | |
} | |
})[_0x6341[127]](_0x6341[599], function(_0x8e92x19) { | |
var _0x8e92x15 = window[_0x6341[0]](this) | |
, _0x8e92x13c = _0x8e92x15[_0x6341[446]](_0x8e92x13b); | |
if (_0x8e92x13c && _0x8e92xd[_0x6341[351]][_0x6341[600]]) { | |
if (_0x8e92x15[_0x6341[4]](_0x6341[596]) === _0x6341[548] && _0x8e92xd[_0x6341[351]][_0x6341[594]]) { | |
return false | |
} | |
;clearTimeout(_0x8e92xd[_0x6341[601]]); | |
_0x8e92xd[_0x6341[601]] = setTimeout(function() { | |
_0x8e92xd._hide(_0x8e92x15) | |
}, _0x8e92xd[_0x6341[351]][_0x6341[602]]) | |
} | |
}) | |
} | |
;this[_0x6341[488]][_0x6341[127]](_0x6341[604], function(_0x8e92x19) { | |
var _0x8e92x5c = window[_0x6341[0]](_0x8e92x19[_0x6341[293]])[_0x6341[479]](_0x6341[211], _0x6341[584]), _0x8e92x13e = _0x8e92xd[_0x6341[430]][_0x6341[605]](_0x8e92x5c) > -1, _0x8e92x113 = _0x8e92x13e ? _0x8e92xd[_0x6341[430]] : _0x8e92x5c[_0x6341[380]](_0x6341[205])[_0x6341[478]](_0x8e92x5c), _0x8e92x114, _0x8e92x115; | |
_0x8e92x113[_0x6341[24]](function(_0x8e92x14) { | |
if (window[_0x6341[0]](this)[_0x6341[180]](_0x8e92x5c)) { | |
_0x8e92x114 = _0x8e92x113[_0x6341[190]](_0x8e92x14 - 1); | |
_0x8e92x115 = _0x8e92x113[_0x6341[190]](_0x8e92x14 + 1); | |
return | |
} | |
}); | |
var _0x8e92x13f = function() { | |
if (!_0x8e92x5c[_0x6341[180]](_0x6341[472])) { | |
_0x8e92x115[_0x6341[212]](_0x6341[210])[_0x6341[439]]() | |
} | |
} | |
, _0x8e92x140 = function() { | |
_0x8e92x114[_0x6341[212]](_0x6341[210])[_0x6341[439]]() | |
} | |
, _0x8e92x141 = function() { | |
var _0x8e92x7c = _0x8e92x5c[_0x6341[212]](_0x6341[586]); | |
if (_0x8e92x7c[_0x6341[63]]) { | |
_0x8e92xd._show(_0x8e92x7c); | |
_0x8e92x5c[_0x6341[42]](_0x6341[606])[_0x6341[439]]() | |
} else { | |
return | |
} | |
} | |
, _0x8e92x142 = function() { | |
var _0x8e92x136 = _0x8e92x5c[_0x6341[217]](_0x6341[211])[_0x6341[217]](_0x6341[205]); | |
_0x8e92x136[_0x6341[212]](_0x6341[210])[_0x6341[439]](); | |
_0x8e92xd._hide(_0x8e92x136) | |
} | |
; | |
var _0x8e92x57 = { | |
open: _0x8e92x141, | |
close: function() { | |
_0x8e92xd._hide(_0x8e92xd.$element); | |
_0x8e92xd[_0x6341[488]][_0x6341[42]](_0x6341[210])[_0x6341[439]]() | |
}, | |
handled: function() { | |
_0x8e92x19[_0x6341[316]](); | |
_0x8e92x19[_0x6341[475]]() | |
} | |
}; | |
if (_0x8e92x13e) { | |
if (_0x8e92xd[_0x6341[607]]) { | |
if (_0x8e92xd[_0x6341[351]][_0x6341[588]] === _0x6341[228]) { | |
window[_0x6341[0]][_0x6341[176]](_0x8e92x57, { | |
down: _0x8e92x13f, | |
up: _0x8e92x140, | |
next: _0x8e92x141, | |
previous: _0x8e92x142 | |
}) | |
} else { | |
window[_0x6341[0]][_0x6341[176]](_0x8e92x57, { | |
down: _0x8e92x13f, | |
up: _0x8e92x140, | |
next: _0x8e92x142, | |
previous: _0x8e92x141 | |
}) | |
} | |
} else { | |
window[_0x6341[0]][_0x6341[176]](_0x8e92x57, { | |
next: _0x8e92x13f, | |
previous: _0x8e92x140, | |
down: _0x8e92x141, | |
up: _0x8e92x142 | |
}) | |
} | |
} else { | |
if (_0x8e92xd[_0x6341[351]][_0x6341[588]] === _0x6341[228]) { | |
window[_0x6341[0]][_0x6341[176]](_0x8e92x57, { | |
next: _0x8e92x141, | |
previous: _0x8e92x142, | |
down: _0x8e92x13f, | |
up: _0x8e92x140 | |
}) | |
} else { | |
window[_0x6341[0]][_0x6341[176]](_0x8e92x57, { | |
next: _0x8e92x142, | |
previous: _0x8e92x141, | |
down: _0x8e92x13f, | |
up: _0x8e92x140 | |
}) | |
} | |
} | |
;Foundation[_0x6341[184]][_0x6341[444]](_0x8e92x19, _0x6341[579], _0x8e92x57) | |
}) | |
} | |
}, { | |
key: _0x6341[571], | |
value: function _0x8e92x133() { | |
var _0x8e92x11e = window[_0x6341[0]](document[_0x6341[232]]) | |
, _0x8e92xd = this; | |
_0x8e92x11e[_0x6341[281]](_0x6341[608])[_0x6341[127]](_0x6341[608], function(_0x8e92x19) { | |
var _0x8e92x11b = _0x8e92xd[_0x6341[12]][_0x6341[42]](_0x8e92x19[_0x6341[293]]); | |
if (_0x8e92x11b[_0x6341[63]]) { | |
return | |
} | |
;_0x8e92xd._hide(); | |
_0x8e92x11e[_0x6341[281]](_0x6341[608]) | |
}) | |
} | |
}, { | |
key: _0x6341[519], | |
value: function _0x8e92x123(_0x8e92x7c) { | |
var _0x8e92x102 = this[_0x6341[430]][_0x6341[605]](this[_0x6341[430]][_0x6341[182]](function(_0x8e92x14, _0x8e92x1b) { | |
return window[_0x6341[0]](_0x8e92x1b)[_0x6341[42]](_0x8e92x7c)[_0x6341[63]] > 0 | |
})); | |
var _0x8e92x143 = _0x8e92x7c[_0x6341[217]](_0x6341[580])[_0x6341[380]](_0x6341[580]); | |
this._hide(_0x8e92x143, _0x8e92x102); | |
_0x8e92x7c[_0x6341[115]](_0x6341[610], _0x6341[611])[_0x6341[193]](_0x6341[609])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": false | |
})[_0x6341[217]](_0x6341[580])[_0x6341[193]](_0x6341[445])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": true | |
}); | |
var _0x8e92xfc = Foundation[_0x6341[224]].ImNotTouchingYou(_0x8e92x7c, null , true); | |
if (!_0x8e92xfc) { | |
var _0x8e92x144 = this[_0x6341[351]][_0x6341[588]] === _0x6341[228] ? _0x6341[612] : _0x6341[613] | |
, _0x8e92x145 = _0x8e92x7c[_0x6341[217]](_0x6341[583]); | |
_0x8e92x145[_0x6341[68]](_0x6341[615] + _0x8e92x144)[_0x6341[193]](_0x6341[614] + this[_0x6341[351]][_0x6341[588]]); | |
_0x8e92xfc = Foundation[_0x6341[224]].ImNotTouchingYou(_0x8e92x7c, null , true); | |
if (!_0x8e92xfc) { | |
_0x8e92x145[_0x6341[68]](_0x6341[614] + this[_0x6341[351]][_0x6341[588]])[_0x6341[193]](_0x6341[616]) | |
} | |
;this[_0x6341[592]] = true | |
} | |
;_0x8e92x7c[_0x6341[115]](_0x6341[610], _0x6341[38]); | |
if (this[_0x6341[351]][_0x6341[505]]) { | |
this._addBodyHandler() | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[617], [_0x8e92x7c]) | |
} | |
}, { | |
key: _0x6341[521], | |
value: function _0x8e92x124(_0x8e92x15, _0x8e92x102) { | |
var _0x8e92x146; | |
if (_0x8e92x15 && _0x8e92x15[_0x6341[63]]) { | |
_0x8e92x146 = _0x8e92x15 | |
} else { | |
if (_0x8e92x102 !== undefined) { | |
_0x8e92x146 = this[_0x6341[430]][_0x6341[280]](function(_0x8e92x14, _0x8e92x1b) { | |
return _0x8e92x14 === _0x8e92x102 | |
}) | |
} else { | |
_0x8e92x146 = this[_0x6341[12]] | |
} | |
} | |
;var _0x8e92x147 = _0x8e92x146[_0x6341[446]](_0x6341[445]) || _0x8e92x146[_0x6341[42]](_0x6341[437])[_0x6341[63]] > 0; | |
if (_0x8e92x147) { | |
_0x8e92x146[_0x6341[42]](_0x6341[618])[_0x6341[478]](_0x8e92x146)[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x65\x78\x70\x61\x6E\x64\x65\x64": false, | |
"\x64\x61\x74\x61\x2D\x69\x73\x2D\x63\x6C\x69\x63\x6B": false | |
})[_0x6341[68]](_0x6341[445]); | |
_0x8e92x146[_0x6341[42]](_0x6341[619])[_0x6341[4]]({ | |
"\x61\x72\x69\x61\x2D\x68\x69\x64\x64\x65\x6E": true | |
})[_0x6341[68]](_0x6341[609]); | |
if (this[_0x6341[592]] || _0x8e92x146[_0x6341[42]](_0x6341[616])[_0x6341[63]]) { | |
var _0x8e92x144 = this[_0x6341[351]][_0x6341[588]] === _0x6341[228] ? _0x6341[235] : _0x6341[228]; | |
_0x8e92x146[_0x6341[42]](_0x6341[580])[_0x6341[478]](_0x8e92x146)[_0x6341[68]](_0x6341[620] + this[_0x6341[351]][_0x6341[588]])[_0x6341[193]](_0x6341[614] + _0x8e92x144); | |
this[_0x6341[592]] = false | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[621], [_0x8e92x146]) | |
} | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
this[_0x6341[488]][_0x6341[281]](_0x6341[623])[_0x6341[23]](_0x6341[596])[_0x6341[68]](_0x6341[622]); | |
window[_0x6341[0]](document[_0x6341[232]])[_0x6341[281]](_0x6341[623]); | |
Foundation[_0x6341[223]].Burn(this.$element, _0x6341[272]); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92x138 | |
}(); | |
_0x8e92x138[_0x6341[352]] = { | |
disableHover: false, | |
autoclose: true, | |
hoverDelay: 50, | |
clickOpen: false, | |
closingTime: 500, | |
alignment: _0x6341[228], | |
closeOnClick: true, | |
verticalClass: _0x6341[607], | |
rightClass: _0x6341[624], | |
forceFollow: true | |
}; | |
Foundation[_0x6341[424]](_0x8e92x138, _0x6341[579]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x148 = function() { | |
function _0x8e92x148(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x148); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x148[_0x6341[352]], this[_0x6341[12]][_0x6341[14]](), _0x8e92xac); | |
this._init(); | |
Foundation[_0x6341[354]](this, _0x6341[625]) | |
} | |
_createClass(_0x8e92x148, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
var _0x8e92x149 = this[_0x6341[12]][_0x6341[4]](_0x6341[626]) || _0x6341[38]; | |
var _0x8e92x14a = this[_0x6341[12]][_0x6341[42]](_0x6341[627] + _0x8e92x149 + _0x6341[279]); | |
this[_0x6341[628]] = _0x8e92x14a[_0x6341[63]] ? _0x8e92x14a : this[_0x6341[12]][_0x6341[42]](_0x6341[629]); | |
this[_0x6341[12]][_0x6341[4]](_0x6341[630], _0x8e92x149 || Foundation.GetYoDigits(6, _0x6341[190])); | |
this[_0x6341[631]] = this[_0x6341[12]][_0x6341[42]](_0x6341[632])[_0x6341[63]] > 0; | |
this[_0x6341[633]] = this[_0x6341[12]][_0x6341[479]](document[_0x6341[232]], _0x6341[632])[_0x6341[63]] > 0; | |
this[_0x6341[634]] = false; | |
var _0x8e92x14b = this[_0x6341[12]][_0x6341[42]](_0x6341[635]); | |
var _0x8e92x14c; | |
if (this[_0x6341[351]][_0x6341[636]]) { | |
_0x8e92x14c = this._checkMQ(); | |
window[_0x6341[0]](window)[_0x6341[127]](_0x6341[126], this[_0x6341[637]][_0x6341[97]](this)) | |
} else { | |
this._events() | |
} | |
;if (_0x8e92x14c !== undefined && _0x8e92x14c === false || _0x8e92x14c === undefined) { | |
if (_0x8e92x14b[_0x6341[63]]) { | |
Foundation[_0x6341[308]](_0x8e92x14b, this[_0x6341[370]][_0x6341[97]](this)) | |
} else { | |
this._reflow() | |
} | |
} | |
} | |
}, { | |
key: _0x6341[638], | |
value: function _0x8e92x14d() { | |
this[_0x6341[634]] = false; | |
this[_0x6341[12]][_0x6341[281]](_0x6341[639]) | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
var _0x8e92xd = this; | |
this._pauseEvents(); | |
if (this[_0x6341[631]]) { | |
this[_0x6341[12]][_0x6341[127]](_0x6341[640], function(_0x8e92x19) { | |
if (_0x8e92x19[_0x6341[293]] !== _0x8e92xd[_0x6341[12]][0]) { | |
_0x8e92xd._reflow() | |
} | |
}) | |
} else { | |
this[_0x6341[12]][_0x6341[127]](_0x6341[284], this[_0x6341[370]][_0x6341[97]](this)) | |
} | |
;this[_0x6341[634]] = true | |
} | |
}, { | |
key: _0x6341[637], | |
value: function _0x8e92x14e() { | |
var _0x8e92x14c = !Foundation[_0x6341[69]][_0x6341[641]](this[_0x6341[351]][_0x6341[636]]); | |
if (_0x8e92x14c) { | |
if (this[_0x6341[634]]) { | |
this._pauseEvents(); | |
this[_0x6341[628]][_0x6341[115]](_0x6341[227], _0x6341[559]) | |
} | |
} else { | |
if (!this[_0x6341[634]]) { | |
this._events() | |
} | |
} | |
;return _0x8e92x14c | |
} | |
}, { | |
key: _0x6341[642], | |
value: function _0x8e92x14f() { | |
return | |
} | |
}, { | |
key: _0x6341[370], | |
value: function _0x8e92xd5() { | |
if (!this[_0x6341[351]][_0x6341[643]]) { | |
if (this._isStacked()) { | |
this[_0x6341[628]][_0x6341[115]](_0x6341[227], _0x6341[559]); | |
return false | |
} | |
} | |
;if (this[_0x6341[351]][_0x6341[644]]) { | |
this[_0x6341[646]](this[_0x6341[645]][_0x6341[97]](this)) | |
} else { | |
this[_0x6341[648]](this[_0x6341[647]][_0x6341[97]](this)) | |
} | |
} | |
}, { | |
key: _0x6341[649], | |
value: function _0x8e92x150() { | |
return this[_0x6341[628]][0][_0x6341[650]] !== this[_0x6341[628]][1][_0x6341[650]] | |
} | |
}, { | |
key: _0x6341[648], | |
value: function _0x8e92x151(_0x8e92x67) { | |
var _0x8e92x152 = []; | |
for (var _0x8e92x14 = 0, _0x8e92x153 = this[_0x6341[628]][_0x6341[63]]; _0x8e92x14 < _0x8e92x153; _0x8e92x14++) { | |
this[_0x6341[628]][_0x8e92x14][_0x6341[57]][_0x6341[227]] = _0x6341[559]; | |
_0x8e92x152[_0x6341[17]](this[_0x6341[628]][_0x8e92x14][_0x6341[651]]) | |
} | |
;_0x8e92x67(_0x8e92x152) | |
} | |
}, { | |
key: _0x6341[646], | |
value: function _0x8e92x154(_0x8e92x67) { | |
var _0x8e92x155 = this[_0x6341[628]][_0x6341[63]] ? this[_0x6341[628]][_0x6341[465]]()[_0x6341[226]]()[_0x6341[225]] : 0 | |
, _0x8e92x156 = [] | |
, _0x8e92x157 = 0; | |
_0x8e92x156[_0x8e92x157] = []; | |
for (var _0x8e92x14 = 0, _0x8e92x153 = this[_0x6341[628]][_0x6341[63]]; _0x8e92x14 < _0x8e92x153; _0x8e92x14++) { | |
this[_0x6341[628]][_0x8e92x14][_0x6341[57]][_0x6341[227]] = _0x6341[559]; | |
var _0x8e92x158 = window[_0x6341[0]](this[_0x6341[628]][_0x8e92x14])[_0x6341[226]]()[_0x6341[225]]; | |
if (_0x8e92x158 != _0x8e92x155) { | |
_0x8e92x157++; | |
_0x8e92x156[_0x8e92x157] = []; | |
_0x8e92x155 = _0x8e92x158 | |
} | |
;_0x8e92x156[_0x8e92x157][_0x6341[17]]([this[_0x6341[628]][_0x8e92x14], this[_0x6341[628]][_0x8e92x14][_0x6341[651]]]) | |
} | |
;for (var _0x8e92x159 = 0, _0x8e92x15a = _0x8e92x156[_0x6341[63]]; _0x8e92x159 < _0x8e92x15a; _0x8e92x159++) { | |
var _0x8e92x152 = window[_0x6341[0]](_0x8e92x156[_0x8e92x159])[_0x6341[48]](function() { | |
return this[1] | |
})[_0x6341[121]](); | |
var _0x8e92x126 = Math[_0x6341[94]][_0x6341[60]](null , _0x8e92x152); | |
_0x8e92x156[_0x8e92x159][_0x6341[17]](_0x8e92x126) | |
} | |
;_0x8e92x67(_0x8e92x156) | |
} | |
}, { | |
key: _0x6341[647], | |
value: function _0x8e92x15b(_0x8e92x152) { | |
var _0x8e92x126 = Math[_0x6341[94]][_0x6341[60]](null , _0x8e92x152); | |
this[_0x6341[12]][_0x6341[16]](_0x6341[652]); | |
this[_0x6341[628]][_0x6341[115]](_0x6341[227], _0x8e92x126); | |
this[_0x6341[12]][_0x6341[16]](_0x6341[640]) | |
} | |
}, { | |
key: _0x6341[645], | |
value: function _0x8e92x15c(_0x8e92x156) { | |
this[_0x6341[12]][_0x6341[16]](_0x6341[652]); | |
for (var _0x8e92x14 = 0, _0x8e92x153 = _0x8e92x156[_0x6341[63]]; _0x8e92x14 < _0x8e92x153; _0x8e92x14++) { | |
var _0x8e92x15d = _0x8e92x156[_0x8e92x14][_0x6341[63]] | |
, _0x8e92x126 = _0x8e92x156[_0x8e92x14][_0x8e92x15d - 1]; | |
if (_0x8e92x15d <= 2) { | |
window[_0x6341[0]](_0x8e92x156[_0x8e92x14][0][0])[_0x6341[115]]({ | |
"\x68\x65\x69\x67\x68\x74": _0x6341[559] | |
}); | |
continue | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[653]); | |
for (var _0x8e92x159 = 0, _0x8e92x15e = _0x8e92x15d - 1; _0x8e92x159 < _0x8e92x15e; _0x8e92x159++) { | |
window[_0x6341[0]](_0x8e92x156[_0x8e92x14][_0x8e92x159][0])[_0x6341[115]]({ | |
"\x68\x65\x69\x67\x68\x74": _0x8e92x126 | |
}) | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[654]) | |
} | |
;this[_0x6341[12]][_0x6341[16]](_0x6341[640]) | |
} | |
}, { | |
key: _0x6341[418], | |
value: function _0x8e92x100() { | |
this._pauseEvents(); | |
this[_0x6341[628]][_0x6341[115]](_0x6341[227], _0x6341[559]); | |
Foundation[_0x6341[419]](this) | |
} | |
}]); | |
return _0x8e92x148 | |
}(); | |
_0x8e92x148[_0x6341[352]] = { | |
equalizeOnStack: true, | |
equalizeByRow: false, | |
equalizeOn: _0x6341[38] | |
}; | |
Foundation[_0x6341[424]](_0x8e92x148, _0x6341[625]) | |
}(window[_0x6341[0]]); | |
_0x6341[1]; | |
var _createClass = function() { | |
function _0x8e92xc8(_0x8e92xc9, _0x8e92xca) { | |
for (var _0x8e92x14 = 0; _0x8e92x14 < _0x8e92xca[_0x6341[63]]; _0x8e92x14++) { | |
var _0x8e92xcb = _0x8e92xca[_0x8e92x14]; | |
_0x8e92xcb[_0x6341[345]] = _0x8e92xcb[_0x6341[345]] || false; | |
_0x8e92xcb[_0x6341[346]] = true; | |
if (_0x6341[124] in _0x8e92xcb) { | |
_0x8e92xcb[_0x6341[347]] = true | |
} | |
;Object[_0x6341[349]](_0x8e92xc9, _0x8e92xcb[_0x6341[348]], _0x8e92xcb) | |
} | |
} | |
return function(_0x8e92xcc, _0x8e92xcd, _0x8e92xce) { | |
if (_0x8e92xcd) { | |
_0x8e92xc8(_0x8e92xcc[_0x6341[72]], _0x8e92xcd) | |
} | |
;if (_0x8e92xce) { | |
_0x8e92xc8(_0x8e92xcc, _0x8e92xce) | |
} | |
;return _0x8e92xcc | |
} | |
}(); | |
function _classCallCheck(_0x8e92xd0, _0x8e92xcc) { | |
if (!(_0x8e92xd0 instanceof _0x8e92xcc)) { | |
throw new TypeError(_0x6341[350]) | |
} | |
} | |
!function(_0x8e92x3b) { | |
var _0x8e92x15f = function() { | |
function _0x8e92x15f(_0x8e92x65, _0x8e92xac) { | |
_classCallCheck(this, _0x8e92x15f); | |
this[_0x6341[12]] = _0x8e92x65; | |
this[_0x6341[351]] = window[_0x6341[0]][_0x6341[176]]({}, _0x8e92x15f[_0x6341[352]], _0x8e92xac); | |
this[_0x6341[655]] = []; | |
this[_0x6341[656]] = _0x6341[38]; | |
this._init(); | |
this._events(); | |
Foundation[_0x6341[354]](this, _0x6341[657]) | |
} | |
_createClass(_0x8e92x15f, [{ | |
key: _0x6341[25], | |
value: function _0x8e92xd2() { | |
this._addBreakpoints(); | |
this._generateRules(); | |
this._reflow() | |
} | |
}, { | |
key: _0x6341[358], | |
value: function _0x8e92xd3() { | |
window[_0x6341[0]](window)[_0x6341[127]](_0x6341[658], Foundation[_0x6341[59]][_0x6341[659]](this[_0x6341[370]][_0x6341[97]](this), 50)) | |
} | |
}, { | |
key: _0x6341[370], | |
value: function _0x8e92xd5() { | |
var _0x8e92x160; | |
for (var _0x8e92x14 in this[_0x6341[655]]) { | |
var _0x8e92x161 = this[_0x6341[655]][_0x8e92x14]; | |
if (window[_0x6341[123]](_0x8e92x161[_0x6341[660]])[_0x6341[122]]) { | |
_0x8e92x160 = _0x8e92x161 | |
} | |
} | |
;if (_0x8e92x160) { | |
this[_0x6341[104]](_0x8e92x160[_0x6341[661]]) | |
} | |
} | |
}, { | |
key: _0x6341[662], | |
value: function _0x8e92x162() { | |
for (var _0x8e92x14 in Foundation[_0x6341[69]][_0x6341[119]]) { | |
var _0x8e92x43 = Foundation[_0x6341[69]][_0x6341[119]][_0x8e92x14]; | |
_0x8e92x15f[_0x6341[663]][_0x8e92x43[_0x6341[101]]] = _0x8e92x43[_0x6341[124]] | |
} | |
} | |
}, { | |
key: _0x6341[664], | |
value: function _0x8e92x163(_0x8e92x65) { | |
var _0x8e92x164 = []; | |
var _0x8e92x165; | |
if (this[_0x6341[351]][_0x6341[655]]) { | |
_0x8e92x165 = this[_0x6341[351]][_0x6341[655]] | |
} else { | |
_0x8e92x165 = this[_0x6341[12]][_0x6341[14]](_0x6341[665])[_0x6341[550]](/\[.*?\]/g) | |
} | |
;for (var _0x8e92x14 in _0x8e92x165) { | |
var _0x8e92x161 = _0x8e92x165[_0x8e92x14][_0x6341[33]](1, -1)[_0x6341[50]](_0x6341[666]); | |
var _0x8e92x166 = _0x8e92x161[_0x6341[33]](0, -1)[_0x6341[275]](_0x6341[38]); | |
var |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment