calvin-cljs
Version:
a minimalistic build tool for clojurescript in clojurescript
1,546 lines (1,544 loc) • 2.18 MB
JavaScript
#!/usr/bin/env node
if(typeof Math.imul == "undefined" || (Math.imul(0xffffffff,5) == 0)) {
Math.imul = function (a, b) {
var ah = (a >>> 16) & 0xffff;
var al = a & 0xffff;
var bh = (b >>> 16) & 0xffff;
var bl = b & 0xffff;
// the shift by 0 fixes the sign on the high part
// the final |0 converts the unsigned value into a signed value
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
}
}
var COMPILED = !0, goog = goog || {};
goog.global = this;
goog.isDef = function(a) {
return void 0 !== a;
};
goog.exportPath_ = function(a, b, c) {
a = a.split(".");
c = c || goog.global;
a[0] in c || !c.execScript || c.execScript("var " + a[0]);
for (var d;a.length && (d = a.shift());) {
!a.length && goog.isDef(b) ? c[d] = b : c = c[d] ? c[d] : c[d] = {};
}
};
goog.define = function(a, b) {
var c = b;
COMPILED || (goog.global.CLOSURE_UNCOMPILED_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES, a) ? c = goog.global.CLOSURE_UNCOMPILED_DEFINES[a] : goog.global.CLOSURE_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES, a) && (c = goog.global.CLOSURE_DEFINES[a]));
goog.exportPath_(a, c);
};
goog.DEBUG = !0;
goog.LOCALE = "en";
goog.TRUSTED_SITE = !0;
goog.STRICT_MODE_COMPATIBLE = !1;
goog.DISALLOW_TEST_ONLY_CODE = COMPILED && !goog.DEBUG;
goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1;
goog.provide = function(a) {
if (goog.isInModuleLoader_()) {
throw Error("goog.provide can not be used within a goog.module.");
}
if (!COMPILED && goog.isProvided_(a)) {
throw Error('Namespace "' + a + '" already declared.');
}
goog.constructNamespace_(a);
};
goog.constructNamespace_ = function(a, b) {
if (!COMPILED) {
delete goog.implicitNamespaces_[a];
for (var c = a;(c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);) {
goog.implicitNamespaces_[c] = !0;
}
}
goog.exportPath_(a, b);
};
goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
goog.module = function(a) {
if (!goog.isString(a) || !a || -1 == a.search(goog.VALID_MODULE_RE_)) {
throw Error("Invalid module identifier");
}
if (!goog.isInModuleLoader_()) {
throw Error("Module " + a + " has been loaded incorrectly.");
}
if (goog.moduleLoaderState_.moduleName) {
throw Error("goog.module may only be called once per module.");
}
goog.moduleLoaderState_.moduleName = a;
if (!COMPILED) {
if (goog.isProvided_(a)) {
throw Error('Namespace "' + a + '" already declared.');
}
delete goog.implicitNamespaces_[a];
}
};
goog.module.get = function(a) {
return goog.module.getInternal_(a);
};
goog.module.getInternal_ = function(a) {
if (!COMPILED) {
return goog.isProvided_(a) ? a in goog.loadedModules_ ? goog.loadedModules_[a] : goog.getObjectByName(a) : null;
}
};
goog.moduleLoaderState_ = null;
goog.isInModuleLoader_ = function() {
return null != goog.moduleLoaderState_;
};
goog.module.declareLegacyNamespace = function() {
if (!COMPILED && !goog.isInModuleLoader_()) {
throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");
}
if (!COMPILED && !goog.moduleLoaderState_.moduleName) {
throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");
}
goog.moduleLoaderState_.declareLegacyNamespace = !0;
};
goog.setTestOnly = function(a) {
if (goog.DISALLOW_TEST_ONLY_CODE) {
throw a = a || "", Error("Importing test-only code into non-debug environment" + (a ? ": " + a : "."));
}
};
goog.forwardDeclare = function(a) {
};
COMPILED || (goog.isProvided_ = function(a) {
return a in goog.loadedModules_ || !goog.implicitNamespaces_[a] && goog.isDefAndNotNull(goog.getObjectByName(a));
}, goog.implicitNamespaces_ = {"goog.module":!0});
goog.getObjectByName = function(a, b) {
for (var c = a.split("."), d = b || goog.global, e;e = c.shift();) {
if (goog.isDefAndNotNull(d[e])) {
d = d[e];
} else {
return null;
}
}
return d;
};
goog.globalize = function(a, b) {
var c = b || goog.global, d;
for (d in a) {
c[d] = a[d];
}
};
goog.addDependency = function(a, b, c, d) {
if (goog.DEPENDENCIES_ENABLED) {
var e;
a = a.replace(/\\/g, "/");
var f = goog.dependencies_;
d && "boolean" !== typeof d || (d = d ? {module:"goog"} : {});
for (var g = 0;e = b[g];g++) {
f.nameToPath[e] = a, f.loadFlags[a] = d;
}
for (d = 0;b = c[d];d++) {
a in f.requires || (f.requires[a] = {}), f.requires[a][b] = !0;
}
}
};
goog.ENABLE_DEBUG_LOADER = !0;
goog.logToConsole_ = function(a) {
goog.global.console && goog.global.console.error(a);
};
goog.require = function(a) {
if (!COMPILED) {
goog.ENABLE_DEBUG_LOADER && goog.IS_OLD_IE_ && goog.maybeProcessDeferredDep_(a);
if (goog.isProvided_(a)) {
return goog.isInModuleLoader_() ? goog.module.getInternal_(a) : null;
}
if (goog.ENABLE_DEBUG_LOADER) {
var b = goog.getPathFromDeps_(a);
if (b) {
return goog.writeScripts_(b), null;
}
}
a = "goog.require could not find: " + a;
goog.logToConsole_(a);
throw Error(a);
}
};
goog.basePath = "";
goog.nullFunction = function() {
};
goog.abstractMethod = function() {
throw Error("unimplemented abstract method");
};
goog.addSingletonGetter = function(a) {
a.getInstance = function() {
if (a.instance_) {
return a.instance_;
}
goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a);
return a.instance_ = new a;
};
};
goog.instantiatedSingletons_ = [];
goog.LOAD_MODULE_USING_EVAL = !0;
goog.SEAL_MODULE_EXPORTS = goog.DEBUG;
goog.loadedModules_ = {};
goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
goog.TRANSPILE = "detect";
goog.TRANSPILER = "transpile.js";
goog.DEPENDENCIES_ENABLED && (goog.dependencies_ = {loadFlags:{}, nameToPath:{}, requires:{}, visited:{}, written:{}, deferred:{}}, goog.inHtmlDocument_ = function() {
var a = goog.global.document;
return null != a && "write" in a;
}, goog.findBasePath_ = function() {
if (goog.isDef(goog.global.CLOSURE_BASE_PATH)) {
goog.basePath = goog.global.CLOSURE_BASE_PATH;
} else {
if (goog.inHtmlDocument_()) {
for (var a = goog.global.document.getElementsByTagName("SCRIPT"), b = a.length - 1;0 <= b;--b) {
var c = a[b].src, d = c.lastIndexOf("?"), d = -1 == d ? c.length : d;
if ("base.js" == c.substr(d - 7, 7)) {
goog.basePath = c.substr(0, d - 7);
break;
}
}
}
}
}, goog.importScript_ = function(a, b) {
(goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_)(a, b) && (goog.dependencies_.written[a] = !0);
}, goog.IS_OLD_IE_ = !(goog.global.atob || !goog.global.document || !goog.global.document.all), goog.importProcessedScript_ = function(a, b, c) {
goog.importScript_("", 'goog.retrieveAndExec_("' + a + '", ' + b + ", " + c + ");");
}, goog.queuedModules_ = [], goog.wrapModule_ = function(a, b) {
return goog.LOAD_MODULE_USING_EVAL && goog.isDef(goog.global.JSON) ? "goog.loadModule(" + goog.global.JSON.stringify(b + "\n//# sourceURL\x3d" + a + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + b + "\n;return exports});\n//# sourceURL\x3d" + a + "\n";
}, goog.loadQueuedModules_ = function() {
var a = goog.queuedModules_.length;
if (0 < a) {
var b = goog.queuedModules_;
goog.queuedModules_ = [];
for (var c = 0;c < a;c++) {
goog.maybeProcessDeferredPath_(b[c]);
}
}
}, goog.maybeProcessDeferredDep_ = function(a) {
goog.isDeferredModule_(a) && goog.allDepsAreAvailable_(a) && (a = goog.getPathFromDeps_(a), goog.maybeProcessDeferredPath_(goog.basePath + a));
}, goog.isDeferredModule_ = function(a) {
var b = (a = goog.getPathFromDeps_(a)) && goog.dependencies_.loadFlags[a] || {};
return a && ("goog" == b.module || goog.needsTranspile_(b.lang)) ? goog.basePath + a in goog.dependencies_.deferred : !1;
}, goog.allDepsAreAvailable_ = function(a) {
if ((a = goog.getPathFromDeps_(a)) && a in goog.dependencies_.requires) {
for (var b in goog.dependencies_.requires[a]) {
if (!goog.isProvided_(b) && !goog.isDeferredModule_(b)) {
return !1;
}
}
}
return !0;
}, goog.maybeProcessDeferredPath_ = function(a) {
if (a in goog.dependencies_.deferred) {
var b = goog.dependencies_.deferred[a];
delete goog.dependencies_.deferred[a];
goog.globalEval(b);
}
}, goog.loadModuleFromUrl = function(a) {
goog.retrieveAndExec_(a, !0, !1);
}, goog.loadModule = function(a) {
var b = goog.moduleLoaderState_;
try {
goog.moduleLoaderState_ = {moduleName:void 0, declareLegacyNamespace:!1};
var c;
if (goog.isFunction(a)) {
c = a.call(goog.global, {});
} else {
if (goog.isString(a)) {
c = goog.loadModuleFromSource_.call(goog.global, a);
} else {
throw Error("Invalid module definition");
}
}
var d = goog.moduleLoaderState_.moduleName;
if (!goog.isString(d) || !d) {
throw Error('Invalid module name "' + d + '"');
}
goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && Object.seal(c);
goog.loadedModules_[d] = c;
} finally {
goog.moduleLoaderState_ = b;
}
}, goog.loadModuleFromSource_ = function(a) {
eval(a);
return {};
}, goog.writeScriptSrcNode_ = function(a) {
goog.global.document.write('\x3cscript type\x3d"text/javascript" src\x3d"' + a + '"\x3e\x3c/script\x3e');
}, goog.appendScriptSrcNode_ = function(a) {
var b = goog.global.document, c = b.createElement("script");
c.type = "text/javascript";
c.src = a;
c.defer = !1;
c.async = !1;
b.head.appendChild(c);
}, goog.writeScriptTag_ = function(a, b) {
if (goog.inHtmlDocument_()) {
var c = goog.global.document;
if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && "complete" == c.readyState) {
if (/\bdeps.js$/.test(a)) {
return !1;
}
throw Error('Cannot write "' + a + '" after document load');
}
if (void 0 === b) {
if (goog.IS_OLD_IE_) {
var d = " onreadystatechange\x3d'goog.onScriptLoad_(this, " + ++goog.lastNonModuleScriptIndex_ + ")' ";
c.write('\x3cscript type\x3d"text/javascript" src\x3d"' + a + '"' + d + "\x3e\x3c/script\x3e");
} else {
goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING ? goog.appendScriptSrcNode_(a) : goog.writeScriptSrcNode_(a);
}
} else {
c.write('\x3cscript type\x3d"text/javascript"\x3e' + b + "\x3c/script\x3e");
}
return !0;
}
return !1;
}, goog.needsTranspile_ = function(a) {
if ("always" == goog.TRANSPILE) {
return !0;
}
if ("never" == goog.TRANSPILE) {
return !1;
}
if (!goog.transpiledLanguages_) {
goog.transpiledLanguages_ = {es5:!0, es6:!0, "es6-impl":!0};
try {
goog.transpiledLanguages_.es5 = eval("[1,].length!\x3d1"), eval('(()\x3d\x3e{"use strict";let a\x3d{};const X\x3dclass{constructor(){}x(z){return new Map([...arguments]).get(z[0])\x3d\x3d3}};return new X().x([a,3])})()') && (goog.transpiledLanguages_["es6-impl"] = !1), eval('(()\x3d\x3e{"use strict";class X{constructor(){if(new.target!\x3dString)throw 1;this.x\x3d42}}let q\x3dReflect.construct(X,[],String);if(q.x!\x3d42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a\x3d\x3d2)continue;function f(z\x3d{a}){let a\x3d0;return z.a}{function f(){return 0;}}return f()\x3d\x3d3}})()') &&
(goog.transpiledLanguages_.es6 = !1);
} catch (b) {
}
}
return !!goog.transpiledLanguages_[a];
}, goog.transpiledLanguages_ = null, goog.lastNonModuleScriptIndex_ = 0, goog.onScriptLoad_ = function(a, b) {
"complete" == a.readyState && goog.lastNonModuleScriptIndex_ == b && goog.loadQueuedModules_();
return !0;
}, goog.writeScripts_ = function(a) {
function b(a) {
if (!(a in e.written || a in e.visited)) {
e.visited[a] = !0;
if (a in e.requires) {
for (var f in e.requires[a]) {
if (!goog.isProvided_(f)) {
if (f in e.nameToPath) {
b(e.nameToPath[f]);
} else {
throw Error("Undefined nameToPath for " + f);
}
}
}
}
a in d || (d[a] = !0, c.push(a));
}
}
var c = [], d = {}, e = goog.dependencies_;
b(a);
for (a = 0;a < c.length;a++) {
var f = c[a];
goog.dependencies_.written[f] = !0;
}
var g = goog.moduleLoaderState_;
goog.moduleLoaderState_ = null;
for (a = 0;a < c.length;a++) {
if (f = c[a]) {
var h = e.loadFlags[f] || {}, k = goog.needsTranspile_(h.lang);
"goog" == h.module || k ? goog.importProcessedScript_(goog.basePath + f, "goog" == h.module, k) : goog.importScript_(goog.basePath + f);
} else {
throw goog.moduleLoaderState_ = g, Error("Undefined script input");
}
}
goog.moduleLoaderState_ = g;
}, goog.getPathFromDeps_ = function(a) {
return a in goog.dependencies_.nameToPath ? goog.dependencies_.nameToPath[a] : null;
}, goog.findBasePath_(), goog.global.CLOSURE_NO_DEPS || goog.importScript_(goog.basePath + "deps.js"));
goog.normalizePath_ = function(a) {
a = a.split("/");
for (var b = 0;b < a.length;) {
"." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++;
}
return a.join("/");
};
goog.loadFileSync_ = function(a) {
if (goog.global.CLOSURE_LOAD_FILE_SYNC) {
return goog.global.CLOSURE_LOAD_FILE_SYNC(a);
}
try {
var b = new goog.global.XMLHttpRequest;
b.open("get", a, !1);
b.send();
return 0 == b.status || 200 == b.status ? b.responseText : null;
} catch (c) {
return null;
}
};
goog.retrieveAndExec_ = function(a, b, c) {
if (!COMPILED) {
var d = a;
a = goog.normalizePath_(a);
var e = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_, f = goog.loadFileSync_(a);
if (null == f) {
throw Error('Load of "' + a + '" failed');
}
c && (f = goog.transpile_.call(goog.global, f, a));
f = b ? goog.wrapModule_(a, f) : f + ("\n//# sourceURL\x3d" + a);
goog.IS_OLD_IE_ ? (goog.dependencies_.deferred[d] = f, goog.queuedModules_.push(d)) : e(a, f);
}
};
goog.transpile_ = function(a, b) {
var c = goog.global.$jscomp;
c || (goog.global.$jscomp = c = {});
var d = c.transpile;
if (!d) {
var e = goog.basePath + goog.TRANSPILER, f = goog.loadFileSync_(e);
f && (eval(f + "\n//# sourceURL\x3d" + e), c = goog.global.$jscomp, d = c.transpile);
}
d || (d = c.transpile = function(a, b) {
goog.logToConsole_(b + " requires transpilation but no transpiler was found.");
return a;
});
return d(a, b);
};
goog.typeOf = function(a) {
var b = typeof a;
if ("object" == b) {
if (a) {
if (a instanceof Array) {
return "array";
}
if (a instanceof Object) {
return b;
}
var c = Object.prototype.toString.call(a);
if ("[object Window]" == c) {
return "object";
}
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) {
return "array";
}
if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) {
return "function";
}
} else {
return "null";
}
} else {
if ("function" == b && "undefined" == typeof a.call) {
return "object";
}
}
return b;
};
goog.isNull = function(a) {
return null === a;
};
goog.isDefAndNotNull = function(a) {
return null != a;
};
goog.isArray = function(a) {
return "array" == goog.typeOf(a);
};
goog.isArrayLike = function(a) {
var b = goog.typeOf(a);
return "array" == b || "object" == b && "number" == typeof a.length;
};
goog.isDateLike = function(a) {
return goog.isObject(a) && "function" == typeof a.getFullYear;
};
goog.isString = function(a) {
return "string" == typeof a;
};
goog.isBoolean = function(a) {
return "boolean" == typeof a;
};
goog.isNumber = function(a) {
return "number" == typeof a;
};
goog.isFunction = function(a) {
return "function" == goog.typeOf(a);
};
goog.isObject = function(a) {
var b = typeof a;
return "object" == b && null != a || "function" == b;
};
goog.getUid = function(a) {
return a[goog.UID_PROPERTY_] || (a[goog.UID_PROPERTY_] = ++goog.uidCounter_);
};
goog.hasUid = function(a) {
return !!a[goog.UID_PROPERTY_];
};
goog.removeUid = function(a) {
null !== a && "removeAttribute" in a && a.removeAttribute(goog.UID_PROPERTY_);
try {
delete a[goog.UID_PROPERTY_];
} catch (b) {
}
};
goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0);
goog.uidCounter_ = 0;
goog.getHashCode = goog.getUid;
goog.removeHashCode = goog.removeUid;
goog.cloneObject = function(a) {
var b = goog.typeOf(a);
if ("object" == b || "array" == b) {
if (a.clone) {
return a.clone();
}
var b = "array" == b ? [] : {}, c;
for (c in a) {
b[c] = goog.cloneObject(a[c]);
}
return b;
}
return a;
};
goog.bindNative_ = function(a, b, c) {
return a.call.apply(a.bind, arguments);
};
goog.bindJs_ = function(a, b, c) {
if (!a) {
throw Error();
}
if (2 < arguments.length) {
var d = Array.prototype.slice.call(arguments, 2);
return function() {
var c = Array.prototype.slice.call(arguments);
Array.prototype.unshift.apply(c, d);
return a.apply(b, c);
};
}
return function() {
return a.apply(b, arguments);
};
};
goog.bind = function(a, b, c) {
Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_;
return goog.bind.apply(null, arguments);
};
goog.partial = function(a, b) {
var c = Array.prototype.slice.call(arguments, 1);
return function() {
var b = c.slice();
b.push.apply(b, arguments);
return a.apply(this, b);
};
};
goog.mixin = function(a, b) {
for (var c in b) {
a[c] = b[c];
}
};
goog.now = goog.TRUSTED_SITE && Date.now || function() {
return +new Date;
};
goog.globalEval = function(a) {
if (goog.global.execScript) {
goog.global.execScript(a, "JavaScript");
} else {
if (goog.global.eval) {
if (null == goog.evalWorksForGlobals_) {
if (goog.global.eval("var _evalTest_ \x3d 1;"), "undefined" != typeof goog.global._evalTest_) {
try {
delete goog.global._evalTest_;
} catch (d) {
}
goog.evalWorksForGlobals_ = !0;
} else {
goog.evalWorksForGlobals_ = !1;
}
}
if (goog.evalWorksForGlobals_) {
goog.global.eval(a);
} else {
var b = goog.global.document, c = b.createElement("SCRIPT");
c.type = "text/javascript";
c.defer = !1;
c.appendChild(b.createTextNode(a));
b.body.appendChild(c);
b.body.removeChild(c);
}
} else {
throw Error("goog.globalEval not available");
}
}
};
goog.evalWorksForGlobals_ = null;
goog.getCssName = function(a, b) {
var c = function(a) {
return goog.cssNameMapping_[a] || a;
}, d = function(a) {
a = a.split("-");
for (var b = [], d = 0;d < a.length;d++) {
b.push(c(a[d]));
}
return b.join("-");
}, d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function(a) {
return a;
};
return b ? a + "-" + d(b) : d(a);
};
goog.setCssNameMapping = function(a, b) {
goog.cssNameMapping_ = a;
goog.cssNameMappingStyle_ = b;
};
!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING && (goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING);
goog.getMsg = function(a, b) {
b && (a = a.replace(/\{\$([^}]+)}/g, function(a, d) {
return null != b && d in b ? b[d] : a;
}));
return a;
};
goog.getMsgWithFallback = function(a, b) {
return a;
};
goog.exportSymbol = function(a, b, c) {
goog.exportPath_(a, b, c);
};
goog.exportProperty = function(a, b, c) {
a[b] = c;
};
goog.inherits = function(a, b) {
function c() {
}
c.prototype = b.prototype;
a.superClass_ = b.prototype;
a.prototype = new c;
a.prototype.constructor = a;
a.base = function(a, c, f) {
for (var d = Array(arguments.length - 2), e = 2;e < arguments.length;e++) {
d[e - 2] = arguments[e];
}
return b.prototype[c].apply(a, d);
};
};
goog.base = function(a, b, c) {
var d = arguments.callee.caller;
if (goog.STRICT_MODE_COMPATIBLE || goog.DEBUG && !d) {
throw Error("arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");
}
if (d.superClass_) {
for (var e = Array(arguments.length - 1), f = 1;f < arguments.length;f++) {
e[f - 1] = arguments[f];
}
return d.superClass_.constructor.apply(a, e);
}
e = Array(arguments.length - 2);
for (f = 2;f < arguments.length;f++) {
e[f - 2] = arguments[f];
}
for (var f = !1, g = a.constructor;g;g = g.superClass_ && g.superClass_.constructor) {
if (g.prototype[b] === d) {
f = !0;
} else {
if (f) {
return g.prototype[b].apply(a, e);
}
}
}
if (a[b] === d) {
return a.constructor.prototype[b].apply(a, e);
}
throw Error("goog.base called from a method of one name to a method of a different name");
};
goog.scope = function(a) {
if (goog.isInModuleLoader_()) {
throw Error("goog.scope is not supported within a goog.module.");
}
a.call(goog.global);
};
COMPILED || (goog.global.COMPILED = COMPILED);
goog.defineClass = function(a, b) {
var c = b.constructor, d = b.statics;
c && c != Object.prototype.constructor || (c = function() {
throw Error("cannot instantiate an interface (no constructor defined).");
});
c = goog.defineClass.createSealingConstructor_(c, a);
a && goog.inherits(c, a);
delete b.constructor;
delete b.statics;
goog.defineClass.applyProperties_(c.prototype, b);
null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d));
return c;
};
goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG;
goog.defineClass.createSealingConstructor_ = function(a, b) {
if (!goog.defineClass.SEAL_CLASS_INSTANCES) {
return a;
}
var c = !goog.defineClass.isUnsealable_(b), d = function() {
var b = a.apply(this, arguments) || this;
b[goog.UID_PROPERTY_] = b[goog.UID_PROPERTY_];
this.constructor === d && c && Object.seal instanceof Function && Object.seal(b);
return b;
};
return d;
};
goog.defineClass.isUnsealable_ = function(a) {
return a && a.prototype && a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_];
};
goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
goog.defineClass.applyProperties_ = function(a, b) {
for (var c in b) {
Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
}
for (var d = 0;d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++) {
c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d], Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]);
}
};
goog.tagUnsealableClass = function(a) {
!COMPILED && goog.defineClass.SEAL_CLASS_INSTANCES && (a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_] = !0);
};
goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_ = "goog_defineClass_legacy_unsealable";
goog.string = {};
goog.string.DETECT_DOUBLE_ESCAPING = !1;
goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1;
goog.string.Unicode = {NBSP:" "};
goog.string.startsWith = function(a, b) {
return 0 == a.lastIndexOf(b, 0);
};
goog.string.endsWith = function(a, b) {
var c = a.length - b.length;
return 0 <= c && a.indexOf(b, c) == c;
};
goog.string.caseInsensitiveStartsWith = function(a, b) {
return 0 == goog.string.caseInsensitiveCompare(b, a.substr(0, b.length));
};
goog.string.caseInsensitiveEndsWith = function(a, b) {
return 0 == goog.string.caseInsensitiveCompare(b, a.substr(a.length - b.length, b.length));
};
goog.string.caseInsensitiveEquals = function(a, b) {
return a.toLowerCase() == b.toLowerCase();
};
goog.string.subs = function(a, b) {
for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1);e.length && 1 < c.length;) {
d += c.shift() + e.shift();
}
return d + c.join("%s");
};
goog.string.collapseWhitespace = function(a) {
return a.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "");
};
goog.string.isEmptyOrWhitespace = function(a) {
return /^[\s\xa0]*$/.test(a);
};
goog.string.isEmptyString = function(a) {
return 0 == a.length;
};
goog.string.isEmpty = goog.string.isEmptyOrWhitespace;
goog.string.isEmptyOrWhitespaceSafe = function(a) {
return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a));
};
goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;
goog.string.isBreakingWhitespace = function(a) {
return !/[^\t\n\r ]/.test(a);
};
goog.string.isAlpha = function(a) {
return !/[^a-zA-Z]/.test(a);
};
goog.string.isNumeric = function(a) {
return !/[^0-9]/.test(a);
};
goog.string.isAlphaNumeric = function(a) {
return !/[^a-zA-Z0-9]/.test(a);
};
goog.string.isSpace = function(a) {
return " " == a;
};
goog.string.isUnicodeChar = function(a) {
return 1 == a.length && " " <= a && "~" >= a || "" <= a && "�" >= a;
};
goog.string.stripNewlines = function(a) {
return a.replace(/(\r\n|\r|\n)+/g, " ");
};
goog.string.canonicalizeNewlines = function(a) {
return a.replace(/(\r\n|\r|\n)/g, "\n");
};
goog.string.normalizeWhitespace = function(a) {
return a.replace(/\xa0|\s/g, " ");
};
goog.string.normalizeSpaces = function(a) {
return a.replace(/\xa0|[ \t]+/g, " ");
};
goog.string.collapseBreakingSpaces = function(a) {
return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "");
};
goog.string.trim = goog.TRUSTED_SITE && String.prototype.trim ? function(a) {
return a.trim();
} : function(a) {
return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");
};
goog.string.trimLeft = function(a) {
return a.replace(/^[\s\xa0]+/, "");
};
goog.string.trimRight = function(a) {
return a.replace(/[\s\xa0]+$/, "");
};
goog.string.caseInsensitiveCompare = function(a, b) {
var c = String(a).toLowerCase(), d = String(b).toLowerCase();
return c < d ? -1 : c == d ? 0 : 1;
};
goog.string.numberAwareCompare_ = function(a, b, c) {
if (a == b) {
return 0;
}
if (!a) {
return -1;
}
if (!b) {
return 1;
}
for (var d = a.toLowerCase().match(c), e = b.toLowerCase().match(c), f = Math.min(d.length, e.length), g = 0;g < f;g++) {
c = d[g];
var h = e[g];
if (c != h) {
return a = parseInt(c, 10), !isNaN(a) && (b = parseInt(h, 10), !isNaN(b) && a - b) ? a - b : c < h ? -1 : 1;
}
}
return d.length != e.length ? d.length - e.length : a < b ? -1 : 1;
};
goog.string.intAwareCompare = function(a, b) {
return goog.string.numberAwareCompare_(a, b, /\d+|\D+/g);
};
goog.string.floatAwareCompare = function(a, b) {
return goog.string.numberAwareCompare_(a, b, /\d+|\.\d+|\D+/g);
};
goog.string.numerateCompare = goog.string.floatAwareCompare;
goog.string.urlEncode = function(a) {
return encodeURIComponent(String(a));
};
goog.string.urlDecode = function(a) {
return decodeURIComponent(a.replace(/\+/g, " "));
};
goog.string.newLineToBr = function(a, b) {
return a.replace(/(\r\n|\r|\n)/g, b ? "\x3cbr /\x3e" : "\x3cbr\x3e");
};
goog.string.htmlEscape = function(a, b) {
if (b) {
a = a.replace(goog.string.AMP_RE_, "\x26amp;").replace(goog.string.LT_RE_, "\x26lt;").replace(goog.string.GT_RE_, "\x26gt;").replace(goog.string.QUOT_RE_, "\x26quot;").replace(goog.string.SINGLE_QUOTE_RE_, "\x26#39;").replace(goog.string.NULL_RE_, "\x26#0;"), goog.string.DETECT_DOUBLE_ESCAPING && (a = a.replace(goog.string.E_RE_, "\x26#101;"));
} else {
if (!goog.string.ALL_RE_.test(a)) {
return a;
}
-1 != a.indexOf("\x26") && (a = a.replace(goog.string.AMP_RE_, "\x26amp;"));
-1 != a.indexOf("\x3c") && (a = a.replace(goog.string.LT_RE_, "\x26lt;"));
-1 != a.indexOf("\x3e") && (a = a.replace(goog.string.GT_RE_, "\x26gt;"));
-1 != a.indexOf('"') && (a = a.replace(goog.string.QUOT_RE_, "\x26quot;"));
-1 != a.indexOf("'") && (a = a.replace(goog.string.SINGLE_QUOTE_RE_, "\x26#39;"));
-1 != a.indexOf("\x00") && (a = a.replace(goog.string.NULL_RE_, "\x26#0;"));
goog.string.DETECT_DOUBLE_ESCAPING && -1 != a.indexOf("e") && (a = a.replace(goog.string.E_RE_, "\x26#101;"));
}
return a;
};
goog.string.AMP_RE_ = /&/g;
goog.string.LT_RE_ = /</g;
goog.string.GT_RE_ = />/g;
goog.string.QUOT_RE_ = /"/g;
goog.string.SINGLE_QUOTE_RE_ = /'/g;
goog.string.NULL_RE_ = /\x00/g;
goog.string.E_RE_ = /e/g;
goog.string.ALL_RE_ = goog.string.DETECT_DOUBLE_ESCAPING ? /[\x00&<>"'e]/ : /[\x00&<>"']/;
goog.string.unescapeEntities = function(a) {
return goog.string.contains(a, "\x26") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a;
};
goog.string.unescapeEntitiesWithDocument = function(a, b) {
return goog.string.contains(a, "\x26") ? goog.string.unescapeEntitiesUsingDom_(a, b) : a;
};
goog.string.unescapeEntitiesUsingDom_ = function(a, b) {
var c = {"\x26amp;":"\x26", "\x26lt;":"\x3c", "\x26gt;":"\x3e", "\x26quot;":'"'}, d;
d = b ? b.createElement("div") : goog.global.document.createElement("div");
return a.replace(goog.string.HTML_ENTITY_PATTERN_, function(a, b) {
var e = c[a];
if (e) {
return e;
}
if ("#" == b.charAt(0)) {
var f = Number("0" + b.substr(1));
isNaN(f) || (e = String.fromCharCode(f));
}
e || (d.innerHTML = a + " ", e = d.firstChild.nodeValue.slice(0, -1));
return c[a] = e;
});
};
goog.string.unescapePureXmlEntities_ = function(a) {
return a.replace(/&([^;]+);/g, function(a, c) {
switch(c) {
case "amp":
return "\x26";
case "lt":
return "\x3c";
case "gt":
return "\x3e";
case "quot":
return '"';
default:
if ("#" == c.charAt(0)) {
var b = Number("0" + c.substr(1));
if (!isNaN(b)) {
return String.fromCharCode(b);
}
}
return a;
}
});
};
goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g;
goog.string.whitespaceEscape = function(a, b) {
return goog.string.newLineToBr(a.replace(/ /g, " \x26#160;"), b);
};
goog.string.preserveSpaces = function(a) {
return a.replace(/(^|[\n ]) /g, "$1" + goog.string.Unicode.NBSP);
};
goog.string.stripQuotes = function(a, b) {
for (var c = b.length, d = 0;d < c;d++) {
var e = 1 == c ? b : b.charAt(d);
if (a.charAt(0) == e && a.charAt(a.length - 1) == e) {
return a.substring(1, a.length - 1);
}
}
return a;
};
goog.string.truncate = function(a, b, c) {
c && (a = goog.string.unescapeEntities(a));
a.length > b && (a = a.substring(0, b - 3) + "...");
c && (a = goog.string.htmlEscape(a));
return a;
};
goog.string.truncateMiddle = function(a, b, c, d) {
c && (a = goog.string.unescapeEntities(a));
if (d && a.length > b) {
d > b && (d = b);
var e = a.length - d;
a = a.substring(0, b - d) + "..." + a.substring(e);
} else {
a.length > b && (d = Math.floor(b / 2), e = a.length - d, a = a.substring(0, d + b % 2) + "..." + a.substring(e));
}
c && (a = goog.string.htmlEscape(a));
return a;
};
goog.string.specialEscapeChars_ = {"\x00":"\\0", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\x0B":"\\x0B", '"':'\\"', "\\":"\\\\", "\x3c":"\x3c"};
goog.string.jsEscapeCache_ = {"'":"\\'"};
goog.string.quote = function(a) {
a = String(a);
for (var b = ['"'], c = 0;c < a.length;c++) {
var d = a.charAt(c), e = d.charCodeAt(0);
b[c + 1] = goog.string.specialEscapeChars_[d] || (31 < e && 127 > e ? d : goog.string.escapeChar(d));
}
b.push('"');
return b.join("");
};
goog.string.escapeString = function(a) {
for (var b = [], c = 0;c < a.length;c++) {
b[c] = goog.string.escapeChar(a.charAt(c));
}
return b.join("");
};
goog.string.escapeChar = function(a) {
if (a in goog.string.jsEscapeCache_) {
return goog.string.jsEscapeCache_[a];
}
if (a in goog.string.specialEscapeChars_) {
return goog.string.jsEscapeCache_[a] = goog.string.specialEscapeChars_[a];
}
var b, c = a.charCodeAt(0);
if (31 < c && 127 > c) {
b = a;
} else {
if (256 > c) {
if (b = "\\x", 16 > c || 256 < c) {
b += "0";
}
} else {
b = "\\u", 4096 > c && (b += "0");
}
b += c.toString(16).toUpperCase();
}
return goog.string.jsEscapeCache_[a] = b;
};
goog.string.contains = function(a, b) {
return -1 != a.indexOf(b);
};
goog.string.caseInsensitiveContains = function(a, b) {
return goog.string.contains(a.toLowerCase(), b.toLowerCase());
};
goog.string.countOf = function(a, b) {
return a && b ? a.split(b).length - 1 : 0;
};
goog.string.removeAt = function(a, b, c) {
var d = a;
0 <= b && b < a.length && 0 < c && (d = a.substr(0, b) + a.substr(b + c, a.length - b - c));
return d;
};
goog.string.remove = function(a, b) {
var c = new RegExp(goog.string.regExpEscape(b), "");
return a.replace(c, "");
};
goog.string.removeAll = function(a, b) {
var c = new RegExp(goog.string.regExpEscape(b), "g");
return a.replace(c, "");
};
goog.string.regExpEscape = function(a) {
return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08");
};
goog.string.repeat = String.prototype.repeat ? function(a, b) {
return a.repeat(b);
} : function(a, b) {
return Array(b + 1).join(a);
};
goog.string.padNumber = function(a, b, c) {
a = goog.isDef(c) ? a.toFixed(c) : String(a);
c = a.indexOf(".");
-1 == c && (c = a.length);
return goog.string.repeat("0", Math.max(0, b - c)) + a;
};
goog.string.makeSafe = function(a) {
return null == a ? "" : String(a);
};
goog.string.buildString = function(a) {
return Array.prototype.join.call(arguments, "");
};
goog.string.getRandomString = function() {
return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ goog.now()).toString(36);
};
goog.string.compareVersions = function(a, b) {
for (var c = 0, d = goog.string.trim(String(a)).split("."), e = goog.string.trim(String(b)).split("."), f = Math.max(d.length, e.length), g = 0;0 == c && g < f;g++) {
var h = d[g] || "", k = e[g] || "", l = RegExp("(\\d*)(\\D*)", "g"), m = RegExp("(\\d*)(\\D*)", "g");
do {
var n = l.exec(h) || ["", "", ""], p = m.exec(k) || ["", "", ""];
if (0 == n[0].length && 0 == p[0].length) {
break;
}
var c = 0 == n[1].length ? 0 : parseInt(n[1], 10), q = 0 == p[1].length ? 0 : parseInt(p[1], 10), c = goog.string.compareElements_(c, q) || goog.string.compareElements_(0 == n[2].length, 0 == p[2].length) || goog.string.compareElements_(n[2], p[2]);
} while (0 == c);
}
return c;
};
goog.string.compareElements_ = function(a, b) {
return a < b ? -1 : a > b ? 1 : 0;
};
goog.string.hashCode = function(a) {
for (var b = 0, c = 0;c < a.length;++c) {
b = 31 * b + a.charCodeAt(c) >>> 0;
}
return b;
};
goog.string.uniqueStringCounter_ = 2147483648 * Math.random() | 0;
goog.string.createUniqueString = function() {
return "goog_" + goog.string.uniqueStringCounter_++;
};
goog.string.toNumber = function(a) {
var b = Number(a);
return 0 == b && goog.string.isEmptyOrWhitespace(a) ? NaN : b;
};
goog.string.isLowerCamelCase = function(a) {
return /^[a-z]+([A-Z][a-z]*)*$/.test(a);
};
goog.string.isUpperCamelCase = function(a) {
return /^([A-Z][a-z]*)+$/.test(a);
};
goog.string.toCamelCase = function(a) {
return String(a).replace(/\-([a-z])/g, function(a, c) {
return c.toUpperCase();
});
};
goog.string.toSelectorCase = function(a) {
return String(a).replace(/([A-Z])/g, "-$1").toLowerCase();
};
goog.string.toTitleCase = function(a, b) {
var c = goog.isString(b) ? goog.string.regExpEscape(b) : "\\s";
return a.replace(new RegExp("(^" + (c ? "|[" + c + "]+" : "") + ")([a-z])", "g"), function(a, b, c) {
return b + c.toUpperCase();
});
};
goog.string.capitalize = function(a) {
return String(a.charAt(0)).toUpperCase() + String(a.substr(1)).toLowerCase();
};
goog.string.parseInt = function(a) {
isFinite(a) && (a = String(a));
return goog.isString(a) ? /^\s*-?0x/i.test(a) ? parseInt(a, 16) : parseInt(a, 10) : NaN;
};
goog.string.splitLimit = function(a, b, c) {
a = a.split(b);
for (var d = [];0 < c && a.length;) {
d.push(a.shift()), c--;
}
a.length && d.push(a.join(b));
return d;
};
goog.string.lastComponent = function(a, b) {
if (b) {
"string" == typeof b && (b = [b]);
} else {
return a;
}
for (var c = -1, d = 0;d < b.length;d++) {
if ("" != b[d]) {
var e = a.lastIndexOf(b[d]);
e > c && (c = e);
}
}
return -1 == c ? a : a.slice(c + 1);
};
goog.string.editDistance = function(a, b) {
var c = [], d = [];
if (a == b) {
return 0;
}
if (!a.length || !b.length) {
return Math.max(a.length, b.length);
}
for (var e = 0;e < b.length + 1;e++) {
c[e] = e;
}
for (e = 0;e < a.length;e++) {
d[0] = e + 1;
for (var f = 0;f < b.length;f++) {
d[f + 1] = Math.min(d[f] + 1, c[f + 1] + 1, c[f] + Number(a[e] != b[f]));
}
for (f = 0;f < c.length;f++) {
c[f] = d[f];
}
}
return d[b.length];
};
goog.object = {};
goog.object.is = function(a, b) {
return a === b ? 0 !== a || 1 / a === 1 / b : a !== a && b !== b;
};
goog.object.forEach = function(a, b, c) {
for (var d in a) {
b.call(c, a[d], d, a);
}
};
goog.object.filter = function(a, b, c) {
var d = {}, e;
for (e in a) {
b.call(c, a[e], e, a) && (d[e] = a[e]);
}
return d;
};
goog.object.map = function(a, b, c) {
var d = {}, e;
for (e in a) {
d[e] = b.call(c, a[e], e, a);
}
return d;
};
goog.object.some = function(a, b, c) {
for (var d in a) {
if (b.call(c, a[d], d, a)) {
return !0;
}
}
return !1;
};
goog.object.every = function(a, b, c) {
for (var d in a) {
if (!b.call(c, a[d], d, a)) {
return !1;
}
}
return !0;
};
goog.object.getCount = function(a) {
var b = 0, c;
for (c in a) {
b++;
}
return b;
};
goog.object.getAnyKey = function(a) {
for (var b in a) {
return b;
}
};
goog.object.getAnyValue = function(a) {
for (var b in a) {
return a[b];
}
};
goog.object.contains = function(a, b) {
return goog.object.containsValue(a, b);
};
goog.object.getValues = function(a) {
var b = [], c = 0, d;
for (d in a) {
b[c++] = a[d];
}
return b;
};
goog.object.getKeys = function(a) {
var b = [], c = 0, d;
for (d in a) {
b[c++] = d;
}
return b;
};
goog.object.getValueByKeys = function(a, b) {
for (var c = goog.isArrayLike(b), d = c ? b : arguments, c = c ? 0 : 1;c < d.length && (a = a[d[c]], goog.isDef(a));c++) {
}
return a;
};
goog.object.containsKey = function(a, b) {
return null !== a && b in a;
};
goog.object.containsValue = function(a, b) {
for (var c in a) {
if (a[c] == b) {
return !0;
}
}
return !1;
};
goog.object.findKey = function(a, b, c) {
for (var d in a) {
if (b.call(c, a[d], d, a)) {
return d;
}
}
};
goog.object.findValue = function(a, b, c) {
return (b = goog.object.findKey(a, b, c)) && a[b];
};
goog.object.isEmpty = function(a) {
for (var b in a) {
return !1;
}
return !0;
};
goog.object.clear = function(a) {
for (var b in a) {
delete a[b];
}
};
goog.object.remove = function(a, b) {
var c;
(c = b in a) && delete a[b];
return c;
};
goog.object.add = function(a, b, c) {
if (null !== a && b in a) {
throw Error('The object already contains the key "' + b + '"');
}
goog.object.set(a, b, c);
};
goog.object.get = function(a, b, c) {
return null !== a && b in a ? a[b] : c;
};
goog.object.set = function(a, b, c) {
a[b] = c;
};
goog.object.setIfUndefined = function(a, b, c) {
return b in a ? a[b] : a[b] = c;
};
goog.object.setWithReturnValueIfNotSet = function(a, b, c) {
if (b in a) {
return a[b];
}
c = c();
return a[b] = c;
};
goog.object.equals = function(a, b) {
for (var c in a) {
if (!(c in b) || a[c] !== b[c]) {
return !1;
}
}
for (c in b) {
if (!(c in a)) {
return !1;
}
}
return !0;
};
goog.object.clone = function(a) {
var b = {}, c;
for (c in a) {
b[c] = a[c];
}
return b;
};
goog.object.unsafeClone = function(a) {
var b = goog.typeOf(a);
if ("object" == b || "array" == b) {
if (goog.isFunction(a.clone)) {
return a.clone();
}
var b = "array" == b ? [] : {}, c;
for (c in a) {
b[c] = goog.object.unsafeClone(a[c]);
}
return b;
}
return a;
};
goog.object.transpose = function(a) {
var b = {}, c;
for (c in a) {
b[a[c]] = c;
}
return b;
};
goog.object.PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
goog.object.extend = function(a, b) {
for (var c, d, e = 1;e < arguments.length;e++) {
d = arguments[e];
for (c in d) {
a[c] = d[c];
}
for (var f = 0;f < goog.object.PROTOTYPE_FIELDS_.length;f++) {
c = goog.object.PROTOTYPE_FIELDS_[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]);
}
}
};
goog.object.create = function(a) {
var b = arguments.length;
if (1 == b && goog.isArray(arguments[0])) {
return goog.object.create.apply(null, arguments[0]);
}
if (b % 2) {
throw Error("Uneven number of arguments");
}
for (var c = {}, d = 0;d < b;d += 2) {
c[arguments[d]] = arguments[d + 1];
}
return c;
};
goog.object.createSet = function(a) {
var b = arguments.length;
if (1 == b && goog.isArray(arguments[0])) {
return goog.object.createSet.apply(null, arguments[0]);
}
for (var c = {}, d = 0;d < b;d++) {
c[arguments[d]] = !0;
}
return c;
};
goog.object.createImmutableView = function(a) {
var b = a;
Object.isFrozen && !Object.isFrozen(a) && (b = Object.create(a), Object.freeze(b));
return b;
};
goog.object.isImmutableView = function(a) {
return !!Object.isFrozen && Object.isFrozen(a);
};
goog.math = {};
goog.math.Integer = function(a, b) {
this.bits_ = [];
this.sign_ = b;
for (var c = !0, d = a.length - 1;0 <= d;d--) {
var e = a[d] | 0;
c && e == b || (this.bits_[d] = e, c = !1);
}
};
goog.math.Integer.IntCache_ = {};
goog.math.Integer.fromInt = function(a) {
if (-128 <= a && 128 > a) {
var b = goog.math.Integer.IntCache_[a];
if (b) {
return b;
}
}
b = new goog.math.Integer([a | 0], 0 > a ? -1 : 0);
-128 <= a && 128 > a && (goog.math.Integer.IntCache_[a] = b);
return b;
};
goog.math.Integer.fromNumber = function(a) {
if (isNaN(a) || !isFinite(a)) {
return goog.math.Integer.ZERO;
}
if (0 > a) {
return goog.math.Integer.fromNumber(-a).negate();
}
for (var b = [], c = 1, d = 0;a >= c;d++) {
b[d] = a / c | 0, c *= goog.math.Integer.TWO_PWR_32_DBL_;
}
return new goog.math.Integer(b, 0);
};
goog.math.Integer.fromBits = function(a) {
return new goog.math.Integer(a, a[a.length - 1] & -2147483648 ? -1 : 0);
};
goog.math.Integer.fromString = function(a, b) {
if (0 == a.length) {
throw Error("number format error: empty string");
}
var c = b || 10;
if (2 > c || 36 < c) {
throw Error("radix out of range: " + c);
}
if ("-" == a.charAt(0)) {
return goog.math.Integer.fromString(a.substring(1), c).negate();
}
if (0 <= a.indexOf("-")) {
throw Error('number format error: interior "-" character');
}
for (var d = goog.math.Integer.fromNumber(Math.pow(c, 8)), e = goog.math.Integer.ZERO, f = 0;f < a.length;f += 8) {
var g = Math.min(8, a.length - f), h = parseInt(a.substring(f, f + g), c);
8 > g ? (g = goog.math.Integer.fromNumber(Math.pow(c, g)), e = e.multiply(g).add(goog.math.Integer.fromNumber(h))) : (e = e.multiply(d), e = e.add(goog.math.Integer.fromNumber(h)));
}
return e;
};
goog.math.Integer.TWO_PWR_32_DBL_ = 4294967296;
goog.math.Integer.ZERO = goog.math.Integer.fromInt(0);
goog.math.Integer.ONE = goog.math.Integer.fromInt(1);
goog.math.Integer.TWO_PWR_24_ = goog.math.Integer.fromInt(16777216);
goog.math.Integer.prototype.toInt = function() {
return 0 < this.bits_.length ? this.bits_[0] : this.sign_;
};
goog.math.Integer.prototype.toNumber = function() {
if (this.isNegative()) {
return -this.negate().toNumber();
}
for (var a = 0, b = 1, c = 0;c < this.bits_.length;c++) {
a += this.getBitsUnsigned(c) * b, b *= goog.math.Integer.TWO_PWR_32_DBL_;
}
return a;
};
goog.math.Integer.prototype.toString = function(a) {
a = a || 10;
if (2 > a || 36 < a) {
throw Error("radix out of range: " + a);
}
if (this.isZero()) {
return "0";
}
if (this.isNegative()) {
return "-" + this.negate().toString(a);
}
for (var b = goog.math.Integer.fromNumber(Math.pow(a, 6)), c = this, d = "";;) {
var e = c.divide(b), f = (c.subtract(e.multiply(b)).toInt() >>> 0).toString(a), c = e;
if (c.isZero()) {
return f + d;
}
for (;6 > f.length;) {
f = "0" + f;
}
d = "" + f + d;
}
};
goog.math.Integer.prototype.getBits = function(a) {
return 0 > a ? 0 : a < this.bits_.length ? this.bits_[a] : this.sign_;
};
goog.math.Integer.prototype.getBitsUnsigned = function(a) {
a = this.getBits(a);
return 0 <= a ? a : goog.math.Integer.TWO_PWR_32_DBL_ + a;
};
goog.math.Integer.prototype.getSign = function() {
return this.sign_;
};
goog.math.Integer.prototype.isZero = function() {
if (0 != this.sign_) {
return !1;
}
for (var a = 0;a < this.bits_.length;a++) {
if (0 != this.bits_[a]) {
return !1;
}
}
return !0;
};
goog.math.Integer.prototype.isNegative = function() {
return -1 == this.sign_;
};
goog.math.Integer.prototype.isOdd = function() {
return 0 == this.bits_.length && -1 == this.sign_ || 0 < this.bits_.length && 0 != (this.bits_[0] & 1);
};
goog.math.Integer.prototype.equals = function(a) {
if (this.sign_ != a.sign_) {
return !1;
}
for (var b = Math.max(this.bits_.length, a.bits_.length), c = 0;c < b;c++) {
if (this.getBits(c) != a.getBits(c)) {
return !1;
}
}
return !0;
};
goog.math.Integer.prototype.notEquals = function(a) {
return !this.equals(a);
};
goog.math.Integer.prototype.greaterThan = function(a) {
return 0 < this.compare(a);
};
goog.math.Integer.prototype.greaterThanOrEqual = function(a) {
return 0 <= this.compare(a);
};
goog.math.Integer.prototype.lessThan = function(a) {
return 0 > this.compare(a);
};
goog.math.Integer.prototype.lessThanOrEqual = function(a) {
return 0 >= this.compare(a);
};
goog.math.Integer.prototype.compare = function(a) {
a = this.subtract(a);
return a.isNegative() ? -1 : a.isZero() ? 0 : 1;
};
goog.math.Integer.prototype.shorten = function(a) {
var b = a - 1 >> 5;
a = (a - 1) % 32;
for (var c = [], d = 0;d < b;d++) {
c[d] = this.getBits(d);
}
var d = 31 == a ? 4294967295 : (1 << a + 1) - 1, e = this.getBits(b) & d;
if (e & 1 << a) {
return c[b] = e | 4294967295 - d, new goog.math.Integer(c, -1);
}
c[b] = e;
return new goog.math.Integer(c, 0);
};
goog.math.Integer.prototype.negate = function() {
return this.not().add(goog.math.Integer.ONE);
};
goog.math.Integer.prototype.add = function(a) {
for (var b = Math.max(this.bits_.length, a.bits_.length), c = [], d = 0, e = 0;e <= b;e++) {
var f = this.getBits(e) >>> 16, g = this.getBits(e) & 65535, h = a.getBits(e) >>> 16, k = a.getBits(e) & 65535, g = d + g + k, f = (g >>> 16) + f + h, d = f >>> 16, g = g & 65535, f = f & 65535;
c[e] = f << 16 | g;
}
return goog.math.Integer.fromBits(c);
};
goog.math.Integer.prototype.subtract = function(a) {
return this.add(a.negate());
};
goog.math.Integer.prototype.multiply = function(a) {
if (this.isZero() || a.isZero()) {
return goog.math.Integer.ZERO;
}
if (this.isNegative()) {
return a.isNegative() ? this.negate().multiply(a.negate()) : this.negate().multiply(a).negate();
}
if (a.isNegative()) {
return this.multiply(a.negate()).negate();
}
if (this.lessThan(goog.math.Integer.TWO_PWR_24_) && a.lessThan(goog.math.Integer.TWO_PWR_24_)) {
return goog.math.Integer.fromNumber(this.toNumber() * a.toNumber());
}
for (var b = this.bits_.length + a.bits_.length, c = [], d = 0;d < 2 * b;d++) {
c[d] = 0;
}
for (d = 0;d < this.bits_.length;d++) {
for (var e = 0;e < a.bits_.length;e++) {
var f = this.getBits(d) >>> 16, g = this.getBits(d) & 65535, h = a.getBits(e) >>> 16, k = a.getBits(e) & 65535;
c[2 * d + 2 * e] += g * k;
goog.math.Integer.carry16_(c, 2 * d + 2 * e);
c[2 * d + 2 * e + 1] += f * k;
goog.math.Integer.carry16_(c, 2 * d + 2 * e + 1);
c[2 * d + 2 * e + 1] += g * h;
goog.math.Integer.carry16_(c, 2 * d + 2 * e + 1);
c[2 * d + 2 * e + 2] += f * h;
goog.math.Integer.carry16_(c, 2 * d + 2 * e + 2);
}
}
for (d = 0;d < b;d++) {
c[d] = c[2 * d + 1] << 16 | c[2 * d];
}
for (d = b;d < 2 * b;d++) {
c[d] = 0;
}
return new goog.math.Integer(c, 0);
};
goog.math.Integer.carry16_ = function(a, b) {
for (;(a[b] & 65535) != a[b];) {
a[b + 1] += a[b] >>> 16, a[b] &= 65535;
}
};
goog.math.Integer.prototype.slowDivide_ = function(a) {
if (this.isNegative() || a.isNegative()) {
throw Error("slowDivide_ only works with positive integers.");
}
for (var b = goog.math.Integer.ONE;a.lessThanOrEqual(this);) {
b = b.shiftLeft(1), a = a.shiftLeft(1);
}
var c = b.shiftRight(1), d = a.shiftRight(1), e;
a = a.shiftRight(2);
for (b = b.shiftRight(2);!a.isZero();) {
e = d.add(a), e.lessThanOrEqua