From 093d873e976efbabe20fd8731993f25228b6c092 Mon Sep 17 00:00:00 2001 From: afvillamizar Date: Mon, 6 Apr 2026 11:02:29 -0500 Subject: [PATCH] Se borra r.js Se borra r.js --- .../content/dist/js/lib/requirejs/r.js | 23451 ---------------- .../content/dist/js/lib/requirejs/r.min.js | 2 - .../dist/js/lib/requirejs/r.min.js.map | 8 - 3 files changed, 23461 deletions(-) delete mode 100644 MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.js delete mode 100644 MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js delete mode 100644 MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js.map diff --git a/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.js b/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.js deleted file mode 100644 index 4066ca1a..00000000 --- a/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.js +++ /dev/null @@ -1,23451 +0,0 @@ -/** - * @license r.js 2.1.2 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/* - * This is a bootstrap script to allow running RequireJS in the command line - * in either a Java/Rhino or Node environment. It is modified by the top-level - * dist.js file to inject other files to completely enable this file. It is - * the shell of the r.js file. - */ - -/*jslint evil: true, nomen: true, sloppy: true */ -/*global readFile: true, process: false, Packages: false, print: false, -console: false, java: false, module: false, requirejsVars, navigator, -document, importScripts, self, location */ - -var requirejs, require, define; -(function (console, args, readFileFunc) { - - var fileName, env, fs, vm, path, exec, rhinoContext, dir, nodeRequire, - nodeDefine, exists, reqMain, loadedOptimizedLib, existsForNode, - version = '2.1.2', - jsSuffixRegExp = /\.js$/, - commandOption = '', - useLibLoaded = {}, - //Used by jslib/rhino/args.js - rhinoArgs = args, - readFile = typeof readFileFunc !== 'undefined' ? readFileFunc : null; - - function showHelp() { - console.log('See https://github.com/jrburke/r.js for usage.'); - } - - if ((typeof navigator !== 'undefined' && typeof document !== 'undefined') || - (typeof importScripts !== 'undefined' && typeof self !== 'undefined')) { - env = 'browser'; - - readFile = function (path) { - return fs.readFileSync(path, 'utf8'); - }; - - exec = function (string, name) { - return eval(string); - }; - - exists = function (fileName) { - console.log('x.js exists not applicable in browser env'); - return false; - }; - - } else if (typeof Packages !== 'undefined') { - env = 'rhino'; - - fileName = args[0]; - - if (fileName && fileName.indexOf('-') === 0) { - commandOption = fileName.substring(1); - fileName = args[1]; - } - - //Set up execution context. - rhinoContext = Packages.org.mozilla.javascript.ContextFactory.getGlobal().enterContext(); - - exec = function (string, name) { - return rhinoContext.evaluateString(this, string, name, 0, null); - }; - - exists = function (fileName) { - return (new java.io.File(fileName)).exists(); - }; - - //Define a console.log for easier logging. Don't - //get fancy though. - if (typeof console === 'undefined') { - console = { - log: function () { - print.apply(undefined, arguments); - } - }; - } - } else if (typeof process !== 'undefined') { - env = 'node'; - - //Get the fs module via Node's require before it - //gets replaced. Used in require/node.js - fs = require('fs'); - vm = require('vm'); - path = require('path'); - //In Node 0.7+ existsSync is on fs. - existsForNode = fs.existsSync || path.existsSync; - - nodeRequire = require; - nodeDefine = define; - reqMain = require.main; - - //Temporarily hide require and define to allow require.js to define - //them. - require = undefined; - define = undefined; - - readFile = function (path) { - return fs.readFileSync(path, 'utf8'); - }; - - exec = function (string, name) { - return vm.runInThisContext(this.requirejsVars.require.makeNodeWrapper(string), - name ? fs.realpathSync(name) : ''); - }; - - exists = function (fileName) { - return existsForNode(fileName); - }; - - - fileName = process.argv[2]; - - if (fileName && fileName.indexOf('-') === 0) { - commandOption = fileName.substring(1); - fileName = process.argv[3]; - } - } - - /** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS 2.1.2 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//Not using strict: uneven strict support in browsers, #392, and causes -//problems with requirejs.exec()/transpiler plugins that may not be strict. -/*jslint regexp: true, nomen: true, sloppy: true */ -/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */ - - -(function (global) { - var req, s, head, baseElement, dataMain, src, - interactiveScript, currentlyAddingScript, mainScript, subPath, - version = '2.1.2', - commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, - cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, - jsSuffixRegExp = /\.js$/, - currDirRegExp = /^\.\//, - op = Object.prototype, - ostring = op.toString, - hasOwn = op.hasOwnProperty, - ap = Array.prototype, - aps = ap.slice, - apsp = ap.splice, - isBrowser = !!(typeof window !== 'undefined' && navigator && document), - isWebWorker = !isBrowser && typeof importScripts !== 'undefined', - //PS3 indicates loaded and complete, but need to wait for complete - //specifically. Sequence is 'loading', 'loaded', execution, - // then 'complete'. The UA check is unfortunate, but not sure how - //to feature test w/o causing perf issues. - readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? - /^complete$/ : /^(complete|loaded)$/, - defContextName = '_', - //Oh the tragedy, detecting opera. See the usage of isOpera for reason. - isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', - contexts = {}, - cfg = {}, - globalDefQueue = [], - useInteractive = false; - - function isFunction(it) { - return ostring.call(it) === '[object Function]'; - } - - function isArray(it) { - return ostring.call(it) === '[object Array]'; - } - - /** - * Helper function for iterating over an array. If the func returns - * a true value, it will break out of the loop. - */ - function each(ary, func) { - if (ary) { - var i; - for (i = 0; i < ary.length; i += 1) { - if (ary[i] && func(ary[i], i, ary)) { - break; - } - } - } - } - - /** - * Helper function for iterating over an array backwards. If the func - * returns a true value, it will break out of the loop. - */ - function eachReverse(ary, func) { - if (ary) { - var i; - for (i = ary.length - 1; i > -1; i -= 1) { - if (ary[i] && func(ary[i], i, ary)) { - break; - } - } - } - } - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - function getOwn(obj, prop) { - return hasProp(obj, prop) && obj[prop]; - } - - /** - * Cycles over properties in an object and calls a function for each - * property value. If the function returns a truthy value, then the - * iteration is stopped. - */ - function eachProp(obj, func) { - var prop; - for (prop in obj) { - if (hasProp(obj, prop)) { - if (func(obj[prop], prop)) { - break; - } - } - } - } - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - function mixin(target, source, force, deepStringMixin) { - if (source) { - eachProp(source, function (value, prop) { - if (force || !hasProp(target, prop)) { - if (deepStringMixin && typeof value !== 'string') { - if (!target[prop]) { - target[prop] = {}; - } - mixin(target[prop], value, force, deepStringMixin); - } else { - target[prop] = value; - } - } - }); - } - return target; - } - - //Similar to Function.prototype.bind, but the 'this' object is specified - //first, since it is easier to read/figure out what 'this' will be. - function bind(obj, fn) { - return function () { - return fn.apply(obj, arguments); - }; - } - - function scripts() { - return document.getElementsByTagName('script'); - } - - //Allow getting a global that expressed in - //dot notation, like 'a.b.c'. - function getGlobal(value) { - if (!value) { - return value; - } - var g = global; - each(value.split('.'), function (part) { - g = g[part]; - }); - return g; - } - - /** - * Constructs an error with a pointer to an URL with more information. - * @param {String} id the error ID that maps to an ID on a web page. - * @param {String} message human readable error. - * @param {Error} [err] the original error, if there is one. - * - * @returns {Error} - */ - function makeError(id, msg, err, requireModules) { - var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); - e.requireType = id; - e.requireModules = requireModules; - if (err) { - e.originalError = err; - } - return e; - } - - if (typeof define !== 'undefined') { - //If a define is already in play via another AMD loader, - //do not overwrite. - return; - } - - if (typeof requirejs !== 'undefined') { - if (isFunction(requirejs)) { - //Do not overwrite and existing requirejs instance. - return; - } - cfg = requirejs; - requirejs = undefined; - } - - //Allow for a require config object - if (typeof require !== 'undefined' && !isFunction(require)) { - //assume it is a config object. - cfg = require; - require = undefined; - } - - function newContext(contextName) { - var inCheckLoaded, Module, context, handlers, - checkLoadedTimeoutId, - config = { - waitSeconds: 7, - baseUrl: './', - paths: {}, - pkgs: {}, - shim: {}, - map: {}, - config: {} - }, - registry = {}, - undefEvents = {}, - defQueue = [], - defined = {}, - urlFetched = {}, - requireCounter = 1, - unnormalizedCounter = 1; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; ary[i]; i += 1) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @param {Boolean} applyMap apply the map config to the value. Should - * only be done if this normalization is for a dependency ID. - * @returns {String} normalized name - */ - function normalize(name, baseName, applyMap) { - var pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment, - foundMap, foundI, foundStarMap, starI, - baseParts = baseName && baseName.split('/'), - normalizedBaseParts = baseParts, - map = config.map, - starMap = map && map['*']; - - //Adjust any relative paths. - if (name && name.charAt(0) === '.') { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - if (getOwn(config.pkgs, baseName)) { - //If the baseName is a package name, then just treat it as one - //name to concat the name with. - normalizedBaseParts = baseParts = [baseName]; - } else { - //Convert baseName to array, and lop off the last part, - //so that . matches that 'directory' and not name of the baseName's - //module. For instance, baseName of 'one/two/three', maps to - //'one/two/three.js', but we want the directory, 'one/two' for - //this normalization. - normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); - } - - name = normalizedBaseParts.concat(name.split('/')); - trimDots(name); - - //Some use of packages may use a . path to reference the - //'main' module name, so normalize for that. - pkgConfig = getOwn(config.pkgs, (pkgName = name[0])); - name = name.join('/'); - if (pkgConfig && name === pkgName + '/' + pkgConfig.main) { - name = pkgName; - } - } else if (name.indexOf('./') === 0) { - // No baseName, so this is ID is resolved relative - // to baseUrl, pull off the leading dot. - name = name.substring(2); - } - } - - //Apply map config if available. - if (applyMap && (baseParts || starMap) && map) { - nameParts = name.split('/'); - - for (i = nameParts.length; i > 0; i -= 1) { - nameSegment = nameParts.slice(0, i).join('/'); - - if (baseParts) { - //Find the longest baseName segment match in the config. - //So, do joins on the biggest to smallest lengths of baseParts. - for (j = baseParts.length; j > 0; j -= 1) { - mapValue = getOwn(map, baseParts.slice(0, j).join('/')); - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = getOwn(mapValue, nameSegment); - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break; - } - } - } - } - - if (foundMap) { - break; - } - - //Check for a star map match, but just hold on to it, - //if there is a shorter segment match later in a matching - //config, then favor over this star map. - if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { - foundStarMap = getOwn(starMap, nameSegment); - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - return name; - } - - function removeScript(name) { - if (isBrowser) { - each(scripts(), function (scriptNode) { - if (scriptNode.getAttribute('data-requiremodule') === name && - scriptNode.getAttribute('data-requirecontext') === context.contextName) { - scriptNode.parentNode.removeChild(scriptNode); - return true; - } - }); - } - } - - function hasPathFallback(id) { - var pathConfig = getOwn(config.paths, id); - if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { - removeScript(id); - //Pop off the first array value, since it failed, and - //retry - pathConfig.shift(); - context.require.undef(id); - context.require([id]); - return true; - } - } - - //Turns a plugin!resource to [plugin, resource] - //with the plugin being undefined if the name - //did not have a plugin prefix. - function splitPrefix(name) { - var prefix, - index = name ? name.indexOf('!') : -1; - if (index > -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - return [prefix, name]; - } - - /** - * Creates a module mapping that includes plugin prefix, module - * name, and path. If parentModuleMap is provided it will - * also normalize the name via require.normalize() - * - * @param {String} name the module name - * @param {String} [parentModuleMap] parent module map - * for the module name, used to resolve relative names. - * @param {Boolean} isNormalized: is the ID already normalized. - * This is true if this call is done for a define() module ID. - * @param {Boolean} applyMap: apply the map config to the ID. - * Should only be true if this map is for a dependency. - * - * @returns {Object} - */ - function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { - var url, pluginModule, suffix, nameParts, - prefix = null, - parentName = parentModuleMap ? parentModuleMap.name : null, - originalName = name, - isDefine = true, - normalizedName = ''; - - //If no name, then it means it is a require call, generate an - //internal name. - if (!name) { - isDefine = false; - name = '_@r' + (requireCounter += 1); - } - - nameParts = splitPrefix(name); - prefix = nameParts[0]; - name = nameParts[1]; - - if (prefix) { - prefix = normalize(prefix, parentName, applyMap); - pluginModule = getOwn(defined, prefix); - } - - //Account for relative paths if there is a base name. - if (name) { - if (prefix) { - if (pluginModule && pluginModule.normalize) { - //Plugin is loaded, use its normalize method. - normalizedName = pluginModule.normalize(name, function (name) { - return normalize(name, parentName, applyMap); - }); - } else { - normalizedName = normalize(name, parentName, applyMap); - } - } else { - //A regular module. - normalizedName = normalize(name, parentName, applyMap); - - //Normalized name may be a plugin ID due to map config - //application in normalize. The map config values must - //already be normalized, so do not need to redo that part. - nameParts = splitPrefix(normalizedName); - prefix = nameParts[0]; - normalizedName = nameParts[1]; - isNormalized = true; - - url = context.nameToUrl(normalizedName); - } - } - - //If the id is a plugin id that cannot be determined if it needs - //normalization, stamp it with a unique ID so two matching relative - //ids that may conflict can be separate. - suffix = prefix && !pluginModule && !isNormalized ? - '_unnormalized' + (unnormalizedCounter += 1) : - ''; - - return { - prefix: prefix, - name: normalizedName, - parentMap: parentModuleMap, - unnormalized: !!suffix, - url: url, - originalName: originalName, - isDefine: isDefine, - id: (prefix ? - prefix + '!' + normalizedName : - normalizedName) + suffix - }; - } - - function getModule(depMap) { - var id = depMap.id, - mod = getOwn(registry, id); - - if (!mod) { - mod = registry[id] = new context.Module(depMap); - } - - return mod; - } - - function on(depMap, name, fn) { - var id = depMap.id, - mod = getOwn(registry, id); - - if (hasProp(defined, id) && - (!mod || mod.defineEmitComplete)) { - if (name === 'defined') { - fn(defined[id]); - } - } else { - getModule(depMap).on(name, fn); - } - } - - function onError(err, errback) { - var ids = err.requireModules, - notified = false; - - if (errback) { - errback(err); - } else { - each(ids, function (id) { - var mod = getOwn(registry, id); - if (mod) { - //Set error on module, so it skips timeout checks. - mod.error = err; - if (mod.events.error) { - notified = true; - mod.emit('error', err); - } - } - }); - - if (!notified) { - req.onError(err); - } - } - } - - /** - * Internal method to transfer globalQueue items to this context's - * defQueue. - */ - function takeGlobalQueue() { - //Push all the globalDefQueue items into the context's defQueue - if (globalDefQueue.length) { - //Array splice in the values since the context code has a - //local var ref to defQueue, so cannot just reassign the one - //on context. - apsp.apply(defQueue, - [defQueue.length - 1, 0].concat(globalDefQueue)); - globalDefQueue = []; - } - } - - handlers = { - 'require': function (mod) { - if (mod.require) { - return mod.require; - } else { - return (mod.require = context.makeRequire(mod.map)); - } - }, - 'exports': function (mod) { - mod.usingExports = true; - if (mod.map.isDefine) { - if (mod.exports) { - return mod.exports; - } else { - return (mod.exports = defined[mod.map.id] = {}); - } - } - }, - 'module': function (mod) { - if (mod.module) { - return mod.module; - } else { - return (mod.module = { - id: mod.map.id, - uri: mod.map.url, - config: function () { - return (config.config && getOwn(config.config, mod.map.id)) || {}; - }, - exports: defined[mod.map.id] - }); - } - } - }; - - function cleanRegistry(id) { - //Clean up machinery used for waiting modules. - delete registry[id]; - } - - function breakCycle(mod, traced, processed) { - var id = mod.map.id; - - if (mod.error) { - mod.emit('error', mod.error); - } else { - traced[id] = true; - each(mod.depMaps, function (depMap, i) { - var depId = depMap.id, - dep = getOwn(registry, depId); - - //Only force things that have not completed - //being defined, so still in the registry, - //and only if it has not been matched up - //in the module already. - if (dep && !mod.depMatched[i] && !processed[depId]) { - if (getOwn(traced, depId)) { - mod.defineDep(i, defined[depId]); - mod.check(); //pass false? - } else { - breakCycle(dep, traced, processed); - } - } - }); - processed[id] = true; - } - } - - function checkLoaded() { - var map, modId, err, usingPathFallback, - waitInterval = config.waitSeconds * 1000, - //It is possible to disable the wait interval by using waitSeconds of 0. - expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), - noLoads = [], - reqCalls = [], - stillLoading = false, - needCycleCheck = true; - - //Do not bother if this call was a result of a cycle break. - if (inCheckLoaded) { - return; - } - - inCheckLoaded = true; - - //Figure out the state of all the modules. - eachProp(registry, function (mod) { - map = mod.map; - modId = map.id; - - //Skip things that are not enabled or in error state. - if (!mod.enabled) { - return; - } - - if (!map.isDefine) { - reqCalls.push(mod); - } - - if (!mod.error) { - //If the module should be executed, and it has not - //been inited and time is up, remember it. - if (!mod.inited && expired) { - if (hasPathFallback(modId)) { - usingPathFallback = true; - stillLoading = true; - } else { - noLoads.push(modId); - removeScript(modId); - } - } else if (!mod.inited && mod.fetched && map.isDefine) { - stillLoading = true; - if (!map.prefix) { - //No reason to keep looking for unfinished - //loading. If the only stillLoading is a - //plugin resource though, keep going, - //because it may be that a plugin resource - //is waiting on a non-plugin cycle. - return (needCycleCheck = false); - } - } - } - }); - - if (expired && noLoads.length) { - //If wait time expired, throw error of unloaded modules. - err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); - err.contextName = context.contextName; - return onError(err); - } - - //Not expired, check for a cycle. - if (needCycleCheck) { - each(reqCalls, function (mod) { - breakCycle(mod, {}, {}); - }); - } - - //If still waiting on loads, and the waiting load is something - //other than a plugin resource, or there are still outstanding - //scripts, then just try back later. - if ((!expired || usingPathFallback) && stillLoading) { - //Something is still waiting to load. Wait for it, but only - //if a timeout is not already in effect. - if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { - checkLoadedTimeoutId = setTimeout(function () { - checkLoadedTimeoutId = 0; - checkLoaded(); - }, 50); - } - } - - inCheckLoaded = false; - } - - Module = function (map) { - this.events = getOwn(undefEvents, map.id) || {}; - this.map = map; - this.shim = getOwn(config.shim, map.id); - this.depExports = []; - this.depMaps = []; - this.depMatched = []; - this.pluginMaps = {}; - this.depCount = 0; - - /* this.exports this.factory - this.depMaps = [], - this.enabled, this.fetched - */ - }; - - Module.prototype = { - init: function (depMaps, factory, errback, options) { - options = options || {}; - - //Do not do more inits if already done. Can happen if there - //are multiple define calls for the same module. That is not - //a normal, common case, but it is also not unexpected. - if (this.inited) { - return; - } - - this.factory = factory; - - if (errback) { - //Register for errors on this module. - this.on('error', errback); - } else if (this.events.error) { - //If no errback already, but there are error listeners - //on this module, set up an errback to pass to the deps. - errback = bind(this, function (err) { - this.emit('error', err); - }); - } - - //Do a copy of the dependency array, so that - //source inputs are not modified. For example - //"shim" deps are passed in here directly, and - //doing a direct modification of the depMaps array - //would affect that config. - this.depMaps = depMaps && depMaps.slice(0); - - this.errback = errback; - - //Indicate this module has be initialized - this.inited = true; - - this.ignore = options.ignore; - - //Could have option to init this module in enabled mode, - //or could have been previously marked as enabled. However, - //the dependencies are not known until init is called. So - //if enabled previously, now trigger dependencies as enabled. - if (options.enabled || this.enabled) { - //Enable this module and dependencies. - //Will call this.check() - this.enable(); - } else { - this.check(); - } - }, - - defineDep: function (i, depExports) { - //Because of cycles, defined callback for a given - //export can be called more than once. - if (!this.depMatched[i]) { - this.depMatched[i] = true; - this.depCount -= 1; - this.depExports[i] = depExports; - } - }, - - fetch: function () { - if (this.fetched) { - return; - } - this.fetched = true; - - context.startTime = (new Date()).getTime(); - - var map = this.map; - - //If the manager is for a plugin managed resource, - //ask the plugin to load it now. - if (this.shim) { - context.makeRequire(this.map, { - enableBuildCallback: true - })(this.shim.deps || [], bind(this, function () { - return map.prefix ? this.callPlugin() : this.load(); - })); - } else { - //Regular dependency. - return map.prefix ? this.callPlugin() : this.load(); - } - }, - - load: function () { - var url = this.map.url; - - //Regular dependency. - if (!urlFetched[url]) { - urlFetched[url] = true; - context.load(this.map.id, url); - } - }, - - /** - * Checks is the module is ready to define itself, and if so, - * define it. - */ - check: function () { - if (!this.enabled || this.enabling) { - return; - } - - var err, cjsModule, - id = this.map.id, - depExports = this.depExports, - exports = this.exports, - factory = this.factory; - - if (!this.inited) { - this.fetch(); - } else if (this.error) { - this.emit('error', this.error); - } else if (!this.defining) { - //The factory could trigger another require call - //that would result in checking this module to - //define itself again. If already in the process - //of doing that, skip this work. - this.defining = true; - - if (this.depCount < 1 && !this.defined) { - if (isFunction(factory)) { - //If there is an error listener, favor passing - //to that instead of throwing an error. - if (this.events.error) { - try { - exports = context.execCb(id, factory, depExports, exports); - } catch (e) { - err = e; - } - } else { - exports = context.execCb(id, factory, depExports, exports); - } - - if (this.map.isDefine) { - //If setting exports via 'module' is in play, - //favor that over return value and exports. After that, - //favor a non-undefined return value over exports use. - cjsModule = this.module; - if (cjsModule && - cjsModule.exports !== undefined && - //Make sure it is not already the exports value - cjsModule.exports !== this.exports) { - exports = cjsModule.exports; - } else if (exports === undefined && this.usingExports) { - //exports already set the defined value. - exports = this.exports; - } - } - - if (err) { - err.requireMap = this.map; - err.requireModules = [this.map.id]; - err.requireType = 'define'; - return onError((this.error = err)); - } - - } else { - //Just a literal value - exports = factory; - } - - this.exports = exports; - - if (this.map.isDefine && !this.ignore) { - defined[id] = exports; - - if (req.onResourceLoad) { - req.onResourceLoad(context, this.map, this.depMaps); - } - } - - //Clean up - delete registry[id]; - - this.defined = true; - } - - //Finished the define stage. Allow calling check again - //to allow define notifications below in the case of a - //cycle. - this.defining = false; - - if (this.defined && !this.defineEmitted) { - this.defineEmitted = true; - this.emit('defined', this.exports); - this.defineEmitComplete = true; - } - - } - }, - - callPlugin: function () { - var map = this.map, - id = map.id, - //Map already normalized the prefix. - pluginMap = makeModuleMap(map.prefix); - - //Mark this as a dependency for this plugin, so it - //can be traced for cycles. - this.depMaps.push(pluginMap); - - on(pluginMap, 'defined', bind(this, function (plugin) { - var load, normalizedMap, normalizedMod, - name = this.map.name, - parentName = this.map.parentMap ? this.map.parentMap.name : null, - localRequire = context.makeRequire(map.parentMap, { - enableBuildCallback: true, - skipMap: true - }); - - //If current map is not normalized, wait for that - //normalized name to load instead of continuing. - if (this.map.unnormalized) { - //Normalize the ID if the plugin allows it. - if (plugin.normalize) { - name = plugin.normalize(name, function (name) { - return normalize(name, parentName, true); - }) || ''; - } - - //prefix and name should already be normalized, no need - //for applying map config again either. - normalizedMap = makeModuleMap(map.prefix + '!' + name, - this.map.parentMap); - on(normalizedMap, - 'defined', bind(this, function (value) { - this.init([], function () { return value; }, null, { - enabled: true, - ignore: true - }); - })); - - normalizedMod = getOwn(registry, normalizedMap.id); - if (normalizedMod) { - //Mark this as a dependency for this plugin, so it - //can be traced for cycles. - this.depMaps.push(normalizedMap); - - if (this.events.error) { - normalizedMod.on('error', bind(this, function (err) { - this.emit('error', err); - })); - } - normalizedMod.enable(); - } - - return; - } - - load = bind(this, function (value) { - this.init([], function () { return value; }, null, { - enabled: true - }); - }); - - load.error = bind(this, function (err) { - this.inited = true; - this.error = err; - err.requireModules = [id]; - - //Remove temp unnormalized modules for this module, - //since they will never be resolved otherwise now. - eachProp(registry, function (mod) { - if (mod.map.id.indexOf(id + '_unnormalized') === 0) { - cleanRegistry(mod.map.id); - } - }); - - onError(err); - }); - - //Allow plugins to load other code without having to know the - //context or how to 'complete' the load. - load.fromText = bind(this, function (text, textAlt) { - /*jslint evil: true */ - var moduleName = map.name, - moduleMap = makeModuleMap(moduleName), - hasInteractive = useInteractive; - - //As of 2.1.0, support just passing the text, to reinforce - //fromText only being called once per resource. Still - //support old style of passing moduleName but discard - //that moduleName in favor of the internal ref. - if (textAlt) { - text = textAlt; - } - - //Turn off interactive script matching for IE for any define - //calls in the text, then turn it back on at the end. - if (hasInteractive) { - useInteractive = false; - } - - //Prime the system by creating a module instance for - //it. - getModule(moduleMap); - - //Transfer any config to this other module. - if (hasProp(config.config, id)) { - config.config[moduleName] = config.config[id]; - } - - try { - req.exec(text); - } catch (e) { - throw new Error('fromText eval for ' + moduleName + - ' failed: ' + e); - } - - if (hasInteractive) { - useInteractive = true; - } - - //Mark this as a dependency for the plugin - //resource - this.depMaps.push(moduleMap); - - //Support anonymous modules. - context.completeLoad(moduleName); - - //Bind the value of that module to the value for this - //resource ID. - localRequire([moduleName], load); - }); - - //Use parentName here since the plugin's name is not reliable, - //could be some weird string with no path that actually wants to - //reference the parentName's path. - plugin.load(map.name, localRequire, load, config); - })); - - context.enable(pluginMap, this); - this.pluginMaps[pluginMap.id] = pluginMap; - }, - - enable: function () { - this.enabled = true; - - //Set flag mentioning that the module is enabling, - //so that immediate calls to the defined callbacks - //for dependencies do not trigger inadvertent load - //with the depCount still being zero. - this.enabling = true; - - //Enable each dependency - each(this.depMaps, bind(this, function (depMap, i) { - var id, mod, handler; - - if (typeof depMap === 'string') { - //Dependency needs to be converted to a depMap - //and wired up to this module. - depMap = makeModuleMap(depMap, - (this.map.isDefine ? this.map : this.map.parentMap), - false, - !this.skipMap); - this.depMaps[i] = depMap; - - handler = getOwn(handlers, depMap.id); - - if (handler) { - this.depExports[i] = handler(this); - return; - } - - this.depCount += 1; - - on(depMap, 'defined', bind(this, function (depExports) { - this.defineDep(i, depExports); - this.check(); - })); - - if (this.errback) { - on(depMap, 'error', this.errback); - } - } - - id = depMap.id; - mod = registry[id]; - - //Skip special modules like 'require', 'exports', 'module' - //Also, don't call enable if it is already enabled, - //important in circular dependency cases. - if (!hasProp(handlers, id) && mod && !mod.enabled) { - context.enable(depMap, this); - } - })); - - //Enable each plugin that is used in - //a dependency - eachProp(this.pluginMaps, bind(this, function (pluginMap) { - var mod = getOwn(registry, pluginMap.id); - if (mod && !mod.enabled) { - context.enable(pluginMap, this); - } - })); - - this.enabling = false; - - this.check(); - }, - - on: function (name, cb) { - var cbs = this.events[name]; - if (!cbs) { - cbs = this.events[name] = []; - } - cbs.push(cb); - }, - - emit: function (name, evt) { - each(this.events[name], function (cb) { - cb(evt); - }); - if (name === 'error') { - //Now that the error handler was triggered, remove - //the listeners, since this broken Module instance - //can stay around for a while in the registry. - delete this.events[name]; - } - } - }; - - function callGetModule(args) { - //Skip modules already defined. - if (!hasProp(defined, args[0])) { - getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); - } - } - - function removeListener(node, func, name, ieName) { - //Favor detachEvent because of IE9 - //issue, see attachEvent/addEventListener comment elsewhere - //in this file. - if (node.detachEvent && !isOpera) { - //Probably IE. If not it will throw an error, which will be - //useful to know. - if (ieName) { - node.detachEvent(ieName, func); - } - } else { - node.removeEventListener(name, func, false); - } - } - - /** - * Given an event from a script node, get the requirejs info from it, - * and then removes the event listeners on the node. - * @param {Event} evt - * @returns {Object} - */ - function getScriptData(evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - var node = evt.currentTarget || evt.srcElement; - - //Remove the listeners once here. - removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); - removeListener(node, context.onScriptError, 'error'); - - return { - node: node, - id: node && node.getAttribute('data-requiremodule') - }; - } - - function intakeDefines() { - var args; - - //Any defined modules in the global queue, intake them now. - takeGlobalQueue(); - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); - } else { - //args are id, deps, factory. Should be normalized by the - //define() function. - callGetModule(args); - } - } - } - - context = { - config: config, - contextName: contextName, - registry: registry, - defined: defined, - urlFetched: urlFetched, - defQueue: defQueue, - Module: Module, - makeModuleMap: makeModuleMap, - nextTick: req.nextTick, - - /** - * Set a configuration for the context. - * @param {Object} cfg config object to integrate. - */ - configure: function (cfg) { - //Make sure the baseUrl ends in a slash. - if (cfg.baseUrl) { - if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { - cfg.baseUrl += '/'; - } - } - - //Save off the paths and packages since they require special processing, - //they are additive. - var pkgs = config.pkgs, - shim = config.shim, - objs = { - paths: true, - config: true, - map: true - }; - - eachProp(cfg, function (value, prop) { - if (objs[prop]) { - if (prop === 'map') { - mixin(config[prop], value, true, true); - } else { - mixin(config[prop], value, true); - } - } else { - config[prop] = value; - } - }); - - //Merge shim - if (cfg.shim) { - eachProp(cfg.shim, function (value, id) { - //Normalize the structure - if (isArray(value)) { - value = { - deps: value - }; - } - if ((value.exports || value.init) && !value.exportsFn) { - value.exportsFn = context.makeShimExports(value); - } - shim[id] = value; - }); - config.shim = shim; - } - - //Adjust packages if necessary. - if (cfg.packages) { - each(cfg.packages, function (pkgObj) { - var location; - - pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; - location = pkgObj.location; - - //Create a brand new object on pkgs, since currentPackages can - //be passed in again, and config.pkgs is the internal transformed - //state for all package configs. - pkgs[pkgObj.name] = { - name: pkgObj.name, - location: location || pkgObj.name, - //Remove leading dot in main, so main paths are normalized, - //and remove any trailing .js, since different package - //envs have different conventions: some use a module name, - //some use a file name. - main: (pkgObj.main || 'main') - .replace(currDirRegExp, '') - .replace(jsSuffixRegExp, '') - }; - }); - - //Done with modifications, assing packages back to context config - config.pkgs = pkgs; - } - - //If there are any "waiting to execute" modules in the registry, - //update the maps for them, since their info, like URLs to load, - //may have changed. - eachProp(registry, function (mod, id) { - //If module already has init called, since it is too - //late to modify them, and ignore unnormalized ones - //since they are transient. - if (!mod.inited && !mod.map.unnormalized) { - mod.map = makeModuleMap(id); - } - }); - - //If a deps array or a config callback is specified, then call - //require with those args. This is useful when require is defined as a - //config object before require.js is loaded. - if (cfg.deps || cfg.callback) { - context.require(cfg.deps || [], cfg.callback); - } - }, - - makeShimExports: function (value) { - function fn() { - var ret; - if (value.init) { - ret = value.init.apply(global, arguments); - } - return ret || (value.exports && getGlobal(value.exports)); - } - return fn; - }, - - makeRequire: function (relMap, options) { - options = options || {}; - - function localRequire(deps, callback, errback) { - var id, map, requireMod; - - if (options.enableBuildCallback && callback && isFunction(callback)) { - callback.__requireJsBuild = true; - } - - if (typeof deps === 'string') { - if (isFunction(callback)) { - //Invalid call - return onError(makeError('requireargs', 'Invalid require call'), errback); - } - - //If require|exports|module are requested, get the - //value for them from the special handlers. Caveat: - //this only works while module is being defined. - if (relMap && hasProp(handlers, deps)) { - return handlers[deps](registry[relMap.id]); - } - - //Synchronous access to one module. If require.get is - //available (as in the Node adapter), prefer that. - if (req.get) { - return req.get(context, deps, relMap); - } - - //Normalize module name, if it contains . or .. - map = makeModuleMap(deps, relMap, false, true); - id = map.id; - - if (!hasProp(defined, id)) { - return onError(makeError('notloaded', 'Module name "' + - id + - '" has not been loaded yet for context: ' + - contextName + - (relMap ? '' : '. Use require([])'))); - } - return defined[id]; - } - - //Grab defines waiting in the global queue. - intakeDefines(); - - //Mark all the dependencies as needing to be loaded. - context.nextTick(function () { - //Some defines could have been added since the - //require call, collect them. - intakeDefines(); - - requireMod = getModule(makeModuleMap(null, relMap)); - - //Store if map config should be applied to this require - //call for dependencies. - requireMod.skipMap = options.skipMap; - - requireMod.init(deps, callback, errback, { - enabled: true - }); - - checkLoaded(); - }); - - return localRequire; - } - - mixin(localRequire, { - isBrowser: isBrowser, - - /** - * Converts a module name + .extension into an URL path. - * *Requires* the use of a module name. It does not support using - * plain URLs like nameToUrl. - */ - toUrl: function (moduleNamePlusExt) { - var index = moduleNamePlusExt.lastIndexOf('.'), - ext = null; - - if (index !== -1) { - ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); - moduleNamePlusExt = moduleNamePlusExt.substring(0, index); - } - - return context.nameToUrl(normalize(moduleNamePlusExt, - relMap && relMap.id, true), ext); - }, - - defined: function (id) { - return hasProp(defined, makeModuleMap(id, relMap, false, true).id); - }, - - specified: function (id) { - id = makeModuleMap(id, relMap, false, true).id; - return hasProp(defined, id) || hasProp(registry, id); - } - }); - - //Only allow undef on top level require calls - if (!relMap) { - localRequire.undef = function (id) { - //Bind any waiting define() calls to this context, - //fix for #408 - takeGlobalQueue(); - - var map = makeModuleMap(id, relMap, true), - mod = getOwn(registry, id); - - delete defined[id]; - delete urlFetched[map.url]; - delete undefEvents[id]; - - if (mod) { - //Hold on to listeners in case the - //module will be attempted to be reloaded - //using a different config. - if (mod.events.defined) { - undefEvents[id] = mod.events; - } - - cleanRegistry(id); - } - }; - } - - return localRequire; - }, - - /** - * Called to enable a module if it is still in the registry - * awaiting enablement. parent module is passed in for context, - * used by the optimizer. - */ - enable: function (depMap, parent) { - var mod = getOwn(registry, depMap.id); - if (mod) { - getModule(depMap).enable(); - } - }, - - /** - * Internal method used by environment adapters to complete a load event. - * A load event could be a script load or just a load pass from a synchronous - * load call. - * @param {String} moduleName the name of the module to potentially complete. - */ - completeLoad: function (moduleName) { - var found, args, mod, - shim = getOwn(config.shim, moduleName) || {}, - shExports = shim.exports; - - takeGlobalQueue(); - - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - args[0] = moduleName; - //If already found an anonymous module and bound it - //to this name, then this is some other anon module - //waiting for its completeLoad to fire. - if (found) { - break; - } - found = true; - } else if (args[0] === moduleName) { - //Found matching define call for this script! - found = true; - } - - callGetModule(args); - } - - //Do this after the cycle of callGetModule in case the result - //of those calls/init calls changes the registry. - mod = getOwn(registry, moduleName); - - if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { - if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { - if (hasPathFallback(moduleName)) { - return; - } else { - return onError(makeError('nodefine', - 'No define call for ' + moduleName, - null, - [moduleName])); - } - } else { - //A script that does not call define(), so just simulate - //the call for it. - callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); - } - } - - checkLoaded(); - }, - - /** - * Converts a module name to a file path. Supports cases where - * moduleName may actually be just an URL. - * Note that it **does not** call normalize on the moduleName, - * it is assumed to have already been normalized. This is an - * internal API, not a public one. Use toUrl for the public API. - */ - nameToUrl: function (moduleName, ext) { - var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url, - parentPath; - - //If a colon is in the URL, it indicates a protocol is used and it is just - //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) - //or ends with .js, then assume the user meant to use an url and not a module id. - //The slash is important for protocol-less URLs as well as full paths. - if (req.jsExtRegExp.test(moduleName)) { - //Just a plain path, not module name lookup, so just return it. - //Add extension if it is included. This is a bit wonky, only non-.js things pass - //an extension, this method probably needs to be reworked. - url = moduleName + (ext || ''); - } else { - //A module that needs to be converted to a path. - paths = config.paths; - pkgs = config.pkgs; - - syms = moduleName.split('/'); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (i = syms.length; i > 0; i -= 1) { - parentModule = syms.slice(0, i).join('/'); - pkg = getOwn(pkgs, parentModule); - parentPath = getOwn(paths, parentModule); - if (parentPath) { - //If an array, it means there are a few choices, - //Choose the one that is desired - if (isArray(parentPath)) { - parentPath = parentPath[0]; - } - syms.splice(0, i, parentPath); - break; - } else if (pkg) { - //If module name is just the package name, then looking - //for the main module. - if (moduleName === pkg.name) { - pkgPath = pkg.location + '/' + pkg.main; - } else { - pkgPath = pkg.location; - } - syms.splice(0, i, pkgPath); - break; - } - } - - //Join the path parts together, then figure out if baseUrl is needed. - url = syms.join('/'); - url += (ext || (/\?/.test(url) ? '' : '.js')); - url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; - } - - return config.urlArgs ? url + - ((url.indexOf('?') === -1 ? '?' : '&') + - config.urlArgs) : url; - }, - - //Delegates to req.load. Broken out as a separate function to - //allow overriding in the optimizer. - load: function (id, url) { - req.load(context, id, url); - }, - - /** - * Executes a module callack function. Broken out as a separate function - * solely to allow the build system to sequence the files in the built - * layer in the right sequence. - * - * @private - */ - execCb: function (name, callback, args, exports) { - return callback.apply(exports, args); - }, - - /** - * callback for script loads, used to check status of loading. - * - * @param {Event} evt the event from the browser for the script - * that was loaded. - */ - onScriptLoad: function (evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - if (evt.type === 'load' || - (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { - //Reset interactive script so a script node is not held onto for - //to long. - interactiveScript = null; - - //Pull out the name of the module and the context. - var data = getScriptData(evt); - context.completeLoad(data.id); - } - }, - - /** - * Callback for script errors. - */ - onScriptError: function (evt) { - var data = getScriptData(evt); - if (!hasPathFallback(data.id)) { - return onError(makeError('scripterror', 'Script error', evt, [data.id])); - } - } - }; - - context.require = context.makeRequire(); - return context; - } - - /** - * Main entry point. - * - * If the only argument to require is a string, then the module that - * is represented by that string is fetched for the appropriate context. - * - * If the first argument is an array, then it will be treated as an array - * of dependency string names to fetch. An optional function callback can - * be specified to execute when all of those dependencies are available. - * - * Make a local req variable to help Caja compliance (it assumes things - * on a require that are not standardized), and to give a short - * name for minification/local scope use. - */ - req = requirejs = function (deps, callback, errback, optional) { - - //Find the right context, use default - var context, config, - contextName = defContextName; - - // Determine if have config object in the call. - if (!isArray(deps) && typeof deps !== 'string') { - // deps is a config object - config = deps; - if (isArray(callback)) { - // Adjust args if there are dependencies - deps = callback; - callback = errback; - errback = optional; - } else { - deps = []; - } - } - - if (config && config.context) { - contextName = config.context; - } - - context = getOwn(contexts, contextName); - if (!context) { - context = contexts[contextName] = req.s.newContext(contextName); - } - - if (config) { - context.configure(config); - } - - return context.require(deps, callback, errback); - }; - - /** - * Support require.config() to make it easier to cooperate with other - * AMD loaders on globally agreed names. - */ - req.config = function (config) { - return req(config); - }; - - /** - * Execute something after the current tick - * of the event loop. Override for other envs - * that have a better solution than setTimeout. - * @param {Function} fn function to execute later. - */ - req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { - setTimeout(fn, 4); - } : function (fn) { fn(); }; - - /** - * Export require as a global, but only if it does not already exist. - */ - if (!require) { - require = req; - } - - req.version = version; - - //Used to filter out dependencies that are already paths. - req.jsExtRegExp = /^\/|:|\?|\.js$/; - req.isBrowser = isBrowser; - s = req.s = { - contexts: contexts, - newContext: newContext - }; - - //Create default context. - req({}); - - //Exports some context-sensitive methods on global require. - each([ - 'toUrl', - 'undef', - 'defined', - 'specified' - ], function (prop) { - //Reference from contexts instead of early binding to default context, - //so that during builds, the latest instance of the default context - //with its config gets used. - req[prop] = function () { - var ctx = contexts[defContextName]; - return ctx.require[prop].apply(ctx, arguments); - }; - }); - - if (isBrowser) { - head = s.head = document.getElementsByTagName('head')[0]; - //If BASE tag is in play, using appendChild is a problem for IE6. - //When that browser dies, this can be removed. Details in this jQuery bug: - //http://dev.jquery.com/ticket/2709 - baseElement = document.getElementsByTagName('base')[0]; - if (baseElement) { - head = s.head = baseElement.parentNode; - } - } - - /** - * Any errors that require explicitly generates will be passed to this - * function. Intercept/override it if you want custom error handling. - * @param {Error} err the error object. - */ - req.onError = function (err) { - throw err; - }; - - /** - * Does the request to load a module for the browser case. - * Make this a separate function to allow other environments - * to override it. - * - * @param {Object} context the require context to find state. - * @param {String} moduleName the name of the module. - * @param {Object} url the URL to the module. - */ - req.load = function (context, moduleName, url) { - var config = (context && context.config) || {}, - node; - if (isBrowser) { - //In the browser so use a script tag - node = config.xhtml ? - document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : - document.createElement('script'); - node.type = config.scriptType || 'text/javascript'; - node.charset = 'utf-8'; - node.async = true; - - node.setAttribute('data-requirecontext', context.contextName); - node.setAttribute('data-requiremodule', moduleName); - - //Set up load listener. Test attachEvent first because IE9 has - //a subtle issue in its addEventListener and script onload firings - //that do not match the behavior of all other browsers with - //addEventListener support, which fire the onload event for a - //script right after the script execution. See: - //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution - //UNFORTUNATELY Opera implements attachEvent but does not follow the script - //script execution mode. - if (node.attachEvent && - //Check if node.attachEvent is artificially added by custom script or - //natively supported by browser - //read https://github.com/jrburke/requirejs/issues/187 - //if we can NOT find [native code] then it must NOT natively supported. - //in IE8, node.attachEvent does not have toString() - //Note the test for "[native code" with no closing brace, see: - //https://github.com/jrburke/requirejs/issues/273 - !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && - !isOpera) { - //Probably IE. IE (at least 6-8) do not fire - //script onload right after executing the script, so - //we cannot tie the anonymous define call to a name. - //However, IE reports the script as being in 'interactive' - //readyState at the time of the define call. - useInteractive = true; - - node.attachEvent('onreadystatechange', context.onScriptLoad); - //It would be great to add an error handler here to catch - //404s in IE9+. However, onreadystatechange will fire before - //the error handler, so that does not help. If addEvenListener - //is used, then IE will fire error before load, but we cannot - //use that pathway given the connect.microsoft.com issue - //mentioned above about not doing the 'script execute, - //then fire the script load event listener before execute - //next script' that other browsers do. - //Best hope: IE10 fixes the issues, - //and then destroys all installs of IE 6-9. - //node.attachEvent('onerror', context.onScriptError); - } else { - node.addEventListener('load', context.onScriptLoad, false); - node.addEventListener('error', context.onScriptError, false); - } - node.src = url; - - //For some cache cases in IE 6-8, the script executes before the end - //of the appendChild execution, so to tie an anonymous define - //call to the module name (which is stored on the node), hold on - //to a reference to this node, but clear after the DOM insertion. - currentlyAddingScript = node; - if (baseElement) { - head.insertBefore(node, baseElement); - } else { - head.appendChild(node); - } - currentlyAddingScript = null; - - return node; - } else if (isWebWorker) { - //In a web worker, use importScripts. This is not a very - //efficient use of importScripts, importScripts will block until - //its script is downloaded and evaluated. However, if web workers - //are in play, the expectation that a build has been done so that - //only one script needs to be loaded anyway. This may need to be - //reevaluated if other use cases become common. - importScripts(url); - - //Account for anonymous modules - context.completeLoad(moduleName); - } - }; - - function getInteractiveScript() { - if (interactiveScript && interactiveScript.readyState === 'interactive') { - return interactiveScript; - } - - eachReverse(scripts(), function (script) { - if (script.readyState === 'interactive') { - return (interactiveScript = script); - } - }); - return interactiveScript; - } - - //Look for a data-main script attribute, which could also adjust the baseUrl. - if (isBrowser) { - //Figure out baseUrl. Get it from the script tag with require.js in it. - eachReverse(scripts(), function (script) { - //Set the 'head' where we can append children by - //using the script's parent. - if (!head) { - head = script.parentNode; - } - - //Look for a data-main attribute to set main script for the page - //to load. If it is there, the path to data main becomes the - //baseUrl, if it is not already set. - dataMain = script.getAttribute('data-main'); - if (dataMain) { - //Set final baseUrl if there is not already an explicit one. - if (!cfg.baseUrl) { - //Pull off the directory of data-main for use as the - //baseUrl. - src = dataMain.split('/'); - mainScript = src.pop(); - subPath = src.length ? src.join('/') + '/' : './'; - - cfg.baseUrl = subPath; - dataMain = mainScript; - } - - //Strip off any trailing .js since dataMain is now - //like a module name. - dataMain = dataMain.replace(jsSuffixRegExp, ''); - - //Put the data-main script in the files to load. - cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain]; - - return true; - } - }); - } - - /** - * The function that handles definitions of modules. Differs from - * require() in that a string for the module should be the first argument, - * and the function to execute after dependencies are loaded should - * return a value to define the module corresponding to the first argument's - * name. - */ - define = function (name, deps, callback) { - var node, context; - - //Allow for anonymous modules - if (typeof name !== 'string') { - //Adjust args appropriately - callback = deps; - deps = name; - name = null; - } - - //This module may not have dependencies - if (!isArray(deps)) { - callback = deps; - deps = []; - } - - //If no name, and callback is a function, then figure out if it a - //CommonJS thing with dependencies. - if (!deps.length && isFunction(callback)) { - //Remove comments from the callback string, - //look for require calls, and pull them into the dependencies, - //but only if there are function args. - if (callback.length) { - callback - .toString() - .replace(commentRegExp, '') - .replace(cjsRequireRegExp, function (match, dep) { - deps.push(dep); - }); - - //May be a CommonJS thing even without require calls, but still - //could use exports, and module. Avoid doing exports and module - //work though if it just needs require. - //REQUIRES the function to expect the CommonJS variables in the - //order listed below. - deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); - } - } - - //If in IE 6-8 and hit an anonymous define() call, do the interactive - //work. - if (useInteractive) { - node = currentlyAddingScript || getInteractiveScript(); - if (node) { - if (!name) { - name = node.getAttribute('data-requiremodule'); - } - context = contexts[node.getAttribute('data-requirecontext')]; - } - } - - //Always save off evaluating the def call until the script onload handler. - //This allows multiple modules to be in a file without prematurely - //tracing dependencies, and allows for anonymous module support, - //where the module name is not known until the script onload event - //occurs. If no context, use the global queue, and get it processed - //in the onscript load callback. - (context ? context.defQueue : globalDefQueue).push([name, deps, callback]); - }; - - define.amd = { - jQuery: true - }; - - - /** - * Executes the text. Normally just uses eval, but can be modified - * to use a better, environment-specific call. Only used for transpiling - * loader plugins, not for plain JS modules. - * @param {String} text the text to execute/evaluate. - */ - req.exec = function (text) { - /*jslint evil: true */ - return eval(text); - }; - - //Set up with config info. - req(cfg); -}(this)); - - - if (env === 'browser') { - /** - * @license RequireJS rhino Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -//sloppy since eval enclosed with use strict causes problems if the source -//text is not strict-compliant. -/*jslint sloppy: true, evil: true */ -/*global require, XMLHttpRequest */ - -(function () { - require.load = function (context, moduleName, url) { - var xhr = new XMLHttpRequest(); - - xhr.open('GET', url, true); - xhr.send(); - - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - eval(xhr.responseText); - - //Support anonymous modules. - context.completeLoad(moduleName); - } - }; - }; -}()); - } else if (env === 'rhino') { - /** - * @license RequireJS rhino Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint */ -/*global require: false, java: false, load: false */ - -(function () { - 'use strict'; - require.load = function (context, moduleName, url) { - - load(url); - - //Support anonymous modules. - context.completeLoad(moduleName); - }; - -}()); - } else if (env === 'node') { - this.requirejsVars = { - require: require, - requirejs: require, - define: define, - nodeRequire: nodeRequire - }; - require.nodeRequire = nodeRequire; - - /** - * @license RequireJS node Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint regexp: false */ -/*global require: false, define: false, requirejsVars: false, process: false */ - -/** - * This adapter assumes that x.js has loaded it and set up - * some variables. This adapter just allows limited RequireJS - * usage from within the requirejs directory. The general - * node adapater is r.js. - */ - -(function () { - 'use strict'; - - var nodeReq = requirejsVars.nodeRequire, - req = requirejsVars.require, - def = requirejsVars.define, - fs = nodeReq('fs'), - path = nodeReq('path'), - vm = nodeReq('vm'), - //In Node 0.7+ existsSync is on fs. - exists = fs.existsSync || path.existsSync, - hasOwn = Object.prototype.hasOwnProperty; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - function syncTick(fn) { - fn(); - } - - //Supply an implementation that allows synchronous get of a module. - req.get = function (context, moduleName, relModuleMap) { - if (moduleName === "require" || moduleName === "exports" || moduleName === "module") { - req.onError(new Error("Explicit require of " + moduleName + " is not allowed.")); - } - - var ret, oldTick, - moduleMap = context.makeModuleMap(moduleName, relModuleMap); - - //Normalize module name, if it contains . or .. - moduleName = moduleMap.id; - - if (hasProp(context.defined, moduleName)) { - ret = context.defined[moduleName]; - } else { - if (ret === undefined) { - //Make sure nextTick for this type of call is sync-based. - oldTick = context.nextTick; - context.nextTick = syncTick; - try { - if (moduleMap.prefix) { - //A plugin, call requirejs to handle it. Now that - //nextTick is syncTick, the require will complete - //synchronously. - context.require([moduleMap.originalName]); - - //Now that plugin is loaded, can regenerate the moduleMap - //to get the final, normalized ID. - moduleMap = context.makeModuleMap(moduleMap.originalName, relModuleMap); - - //The above calls are sync, so can do the next thing safely. - ret = context.defined[moduleMap.id]; - } else { - //Try to dynamically fetch it. - req.load(context, moduleName, moduleMap.url); - - //Enable the module - context.enable(moduleMap, relModuleMap); - - //The above calls are sync, so can do the next thing safely. - ret = context.defined[moduleName]; - } - } finally { - context.nextTick = oldTick; - } - } - } - - return ret; - }; - - req.nextTick = function (fn) { - process.nextTick(fn); - }; - - //Add wrapper around the code so that it gets the requirejs - //API instead of the Node API, and it is done lexically so - //that it survives later execution. - req.makeNodeWrapper = function (contents) { - return '(function (require, requirejs, define) { ' + - contents + - '\n}(requirejsVars.require, requirejsVars.requirejs, requirejsVars.define));'; - }; - - req.load = function (context, moduleName, url) { - var contents, err; - - if (exists(url)) { - contents = fs.readFileSync(url, 'utf8'); - - contents = req.makeNodeWrapper(contents); - try { - vm.runInThisContext(contents, fs.realpathSync(url)); - } catch (e) { - err = new Error('Evaluating ' + url + ' as module "' + - moduleName + '" failed with error: ' + e); - err.originalError = e; - err.moduleName = moduleName; - err.fileName = url; - return req.onError(err); - } - } else { - def(moduleName, function () { - //Get the original name, since relative requires may be - //resolved differently in node (issue #202) - var originalName = hasProp(context.registry, moduleName) && - context.registry[moduleName].map.originalName; - - try { - return (context.config.nodeRequire || req.nodeRequire)(originalName); - } catch (e) { - err = new Error('Calling node\'s require("' + - originalName + '") failed with error: ' + e); - err.originalError = e; - err.moduleName = originalName; - return req.onError(err); - } - }); - } - - //Support anonymous modules. - context.completeLoad(moduleName); - }; - - //Override to provide the function wrapper for define/require. - req.exec = function (text) { - /*jslint evil: true */ - text = req.makeNodeWrapper(text); - return eval(text); - }; -}()); - - } - - //Support a default file name to execute. Useful for hosted envs - //like Joyent where it defaults to a server.js as the only executed - //script. But only do it if this is not an optimization run. - if (commandOption !== 'o' && (!fileName || !jsSuffixRegExp.test(fileName))) { - fileName = 'main.js'; - } - - /** - * Loads the library files that can be used for the optimizer, or for other - * tasks. - */ - function loadLib() { - /** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global Packages: false, process: false, window: false, navigator: false, - document: false, define: false */ - -/** - * A plugin that modifies any /env/ path to be the right path based on - * the host environment. Right now only works for Node, Rhino and browser. - */ -(function () { - var pathRegExp = /(\/|^)env\/|\{env\}/, - env = 'unknown'; - - if (typeof Packages !== 'undefined') { - env = 'rhino'; - } else if (typeof process !== 'undefined') { - env = 'node'; - } else if ((typeof navigator !== 'undefined' && typeof document !== 'undefined') || - (typeof importScripts !== 'undefined' && typeof self !== 'undefined')) { - env = 'browser'; - } - - define('env', { - load: function (name, req, load, config) { - //Allow override in the config. - if (config.env) { - env = config.env; - } - - name = name.replace(pathRegExp, function (match, prefix) { - if (match.indexOf('{') === -1) { - return prefix + env + '/'; - } else { - return env; - } - }); - - req([name], function (mod) { - load(mod); - }); - } - }); -}());/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: true */ -/*global define */ - -define('lang', function () { - 'use strict'; - - var lang, - hasOwn = Object.prototype.hasOwnProperty; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - lang = { - backSlashRegExp: /\\/g, - ostring: Object.prototype.toString, - - isArray: Array.isArray || function (it) { - return lang.ostring.call(it) === "[object Array]"; - }, - - isFunction: function(it) { - return lang.ostring.call(it) === "[object Function]"; - }, - - isRegExp: function(it) { - return it && it instanceof RegExp; - }, - - hasProp: hasProp, - - //returns true if the object does not have an own property prop, - //or if it does, it is a falsy value. - falseProp: function (obj, prop) { - return !hasProp(obj, prop) || !obj[prop]; - }, - - //gets own property value for given prop on object - getOwn: function (obj, prop) { - return hasProp(obj, prop) && obj[prop]; - }, - - _mixin: function(dest, source, override){ - var name; - for (name in source) { - if(source.hasOwnProperty(name) - && (override || !dest.hasOwnProperty(name))) { - dest[name] = source[name]; - } - } - - return dest; // Object - }, - - /** - * mixin({}, obj1, obj2) is allowed. If the last argument is a boolean, - * then the source objects properties are force copied over to dest. - */ - mixin: function(dest){ - var parameters = Array.prototype.slice.call(arguments), - override, i, l; - - if (!dest) { dest = {}; } - - if (parameters.length > 2 && typeof arguments[parameters.length-1] === 'boolean') { - override = parameters.pop(); - } - - for (i = 1, l = parameters.length; i < l; i++) { - lang._mixin(dest, parameters[i], override); - } - return dest; // Object - }, - - delegate: (function () { - // boodman/crockford delegation w/ cornford optimization - function TMP() {} - return function (obj, props) { - TMP.prototype = obj; - var tmp = new TMP(); - TMP.prototype = null; - if (props) { - lang.mixin(tmp, props); - } - return tmp; // Object - }; - }()), - - /** - * Helper function for iterating over an array. If the func returns - * a true value, it will break out of the loop. - */ - each: function each(ary, func) { - if (ary) { - var i; - for (i = 0; i < ary.length; i += 1) { - if (func(ary[i], i, ary)) { - break; - } - } - } - }, - - /** - * Cycles over properties in an object and calls a function for each - * property value. If the function returns a truthy value, then the - * iteration is stopped. - */ - eachProp: function eachProp(obj, func) { - var prop; - for (prop in obj) { - if (hasProp(obj, prop)) { - if (func(obj[prop], prop)) { - break; - } - } - } - }, - - //Similar to Function.prototype.bind, but the "this" object is specified - //first, since it is easier to read/figure out what "this" will be. - bind: function bind(obj, fn) { - return function () { - return fn.apply(obj, arguments); - }; - }, - - //Escapes a content string to be be a string that has characters escaped - //for inclusion as part of a JS string. - jsEscape: function (content) { - return content.replace(/(["'\\])/g, '\\$1') - .replace(/[\f]/g, "\\f") - .replace(/[\b]/g, "\\b") - .replace(/[\n]/g, "\\n") - .replace(/[\t]/g, "\\t") - .replace(/[\r]/g, "\\r"); - } - }; - return lang; -}); - -/** - * prim 0.0.0 Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/requirejs/prim for details - */ - -/*global process, setTimeout, define, module */ - -//Set prime.hideResolutionConflict = true to allow "resolution-races" -//in promise-tests to pass. -//Since the goal of prim is to be a small impl for trusted code, it is -//more important to normally throw in this case so that we can find -//logic errors quicker. - -var prim; -(function () { - 'use strict'; - var op = Object.prototype, - ostring = op.toString, - hasOwn = op.hasOwnProperty; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - /** - * Helper function for iterating over an array. If the func returns - * a true value, it will break out of the loop. - */ - function each(ary, func) { - if (ary) { - var i; - for (i = 0; i < ary.length; i += 1) { - if (ary[i]) { - func(ary[i], i, ary); - } - } - } - } - - function check(p) { - if (hasProp(p, 'e') || hasProp(p, 'v')) { - if (!prim.hideResolutionConflict) { - throw new Error('nope'); - } - return false; - } - return true; - } - - function notify(ary, value) { - prim.nextTick(function () { - each(ary, function (item) { - item(value); - }); - }); - } - - prim = function prim() { - var p, - ok = [], - fail = []; - - return (p = { - callback: function (yes, no) { - if (no) { - p.errback(no); - } - - if (hasProp(p, 'v')) { - prim.nextTick(function () { - yes(p.v); - }); - } else { - ok.push(yes); - } - }, - - errback: function (no) { - if (hasProp(p, 'e')) { - prim.nextTick(function () { - no(p.e); - }); - } else { - fail.push(no); - } - }, - - resolve: function (v) { - if (check(p)) { - p.v = v; - notify(ok, v); - } - return p; - }, - reject: function (e) { - if (check(p)) { - p.e = e; - notify(fail, e); - } - return p; - }, - - start: function (fn) { - p.resolve(); - return p.promise.then(fn); - }, - - promise: { - then: function (yes, no) { - var next = prim(); - - p.callback(function (v) { - try { - v = yes ? yes(v) : v; - - if (v && v.then) { - v.then(next.resolve, next.reject); - } else { - next.resolve(v); - } - } catch (e) { - next.reject(e); - } - }, function (e) { - var err; - - try { - if (!no) { - next.reject(e); - } else { - err = no(e); - - if (err instanceof Error) { - next.reject(err); - } else { - if (err && err.then) { - err.then(next.resolve, next.reject); - } else { - next.resolve(err); - } - } - } - } catch (e2) { - next.reject(e2); - } - }); - - return next.promise; - }, - - fail: function (no) { - return p.promise.then(null, no); - }, - - end: function () { - p.errback(function (e) { - throw e; - }); - } - } - }); - }; - - prim.serial = function (ary) { - var result = prim().resolve().promise; - each(ary, function (item) { - result = result.then(function () { - return item(); - }); - }); - return result; - }; - - prim.nextTick = typeof process !== 'undefined' && process.nextTick ? - process.nextTick : (typeof setTimeout !== 'undefined' ? - function (fn) { - setTimeout(fn, 0); - } : function (fn) { - fn(); - }); - - if (typeof define === 'function' && define.amd) { - define('prim', function () { return prim; }); - } else if (typeof module !== 'undefined' && module.exports) { - module.exports = prim; - } -}()); - -if(env === 'browser') { -/** - * @license RequireJS Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, load: false */ - -//Just a stub for use with uglify's consolidator.js -define('browser/assert', function () { - return {}; -}); - -} - -if(env === 'node') { -/** - * @license RequireJS Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, load: false */ - -//Needed so that rhino/assert can return a stub for uglify's consolidator.js -define('node/assert', ['assert'], function (assert) { - return assert; -}); - -} - -if(env === 'rhino') { -/** - * @license RequireJS Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, load: false */ - -//Just a stub for use with uglify's consolidator.js -define('rhino/assert', function () { - return {}; -}); - -} - -if(env === 'browser') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, process: false */ - -define('browser/args', function () { - //Always expect config via an API call - return []; -}); - -} - -if(env === 'node') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, process: false */ - -define('node/args', function () { - //Do not return the "node" or "r.js" arguments - var args = process.argv.slice(2); - - //Ignore any command option used for rq.js - if (args[0] && args[0].indexOf('-' === 0)) { - args = args.slice(1); - } - - return args; -}); - -} - -if(env === 'rhino') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, process: false */ - -var jsLibRhinoArgs = (typeof rhinoArgs !== 'undefined' && rhinoArgs) || [].concat(Array.prototype.slice.call(arguments, 0)); - -define('rhino/args', function () { - var args = jsLibRhinoArgs; - - //Ignore any command option used for rq.js - if (args[0] && args[0].indexOf('-' === 0)) { - args = args.slice(1); - } - - return args; -}); - -} - -if(env === 'browser') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, console: false */ - -define('browser/load', ['./file'], function (file) { - function load(fileName) { - eval(file.readFile(fileName)); - } - - return load; -}); - -} - -if(env === 'node') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, console: false */ - -define('node/load', ['fs'], function (fs) { - function load(fileName) { - var contents = fs.readFileSync(fileName, 'utf8'); - process.compile(contents, fileName); - } - - return load; -}); - -} - -if(env === 'rhino') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, load: false */ - -define('rhino/load', function () { - return load; -}); - -} - -if(env === 'browser') { -/** - * @license Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint sloppy: true, nomen: true */ -/*global require, define, console, XMLHttpRequest, requirejs */ - -define('browser/file', ['prim'], function (prim) { - - var file; - - function frontSlash(path) { - return path.replace(/\\/g, '/'); - } - - function exists(path) { - var status, xhr = new XMLHttpRequest(); - - //Oh yeah, that is right SYNC IO. Behold its glory - //and horrible blocking behavior. - xhr.open('HEAD', path, false); - xhr.send(); - status = xhr.status; - - return status === 200 || status === 304; - } - - function mkDir(dir) { - console.log('mkDir is no-op in browser'); - } - - function mkFullDir(dir) { - console.log('mkFullDir is no-op in browser'); - } - - file = { - backSlashRegExp: /\\/g, - exclusionRegExp: /^\./, - getLineSeparator: function () { - return '/'; - }, - - exists: function (fileName) { - return exists(fileName); - }, - - parent: function (fileName) { - var parts = fileName.split('/'); - parts.pop(); - return parts.join('/'); - }, - - /** - * Gets the absolute file path as a string, normalized - * to using front slashes for path separators. - * @param {String} fileName - */ - absPath: function (fileName) { - return fileName; - }, - - normalize: function (fileName) { - return fileName; - }, - - isFile: function (path) { - return true; - }, - - isDirectory: function (path) { - return false; - }, - - getFilteredFileList: function (startDir, regExpFilters, makeUnixPaths) { - console.log('file.getFilteredFileList is no-op in browser'); - }, - - copyDir: function (srcDir, destDir, regExpFilter, onlyCopyNew) { - console.log('file.copyDir is no-op in browser'); - - }, - - copyFile: function (srcFileName, destFileName, onlyCopyNew) { - console.log('file.copyFile is no-op in browser'); - }, - - /** - * Renames a file. May fail if "to" already exists or is on another drive. - */ - renameFile: function (from, to) { - console.log('file.renameFile is no-op in browser'); - }, - - /** - * Reads a *text* file. - */ - readFile: function (path, encoding) { - var xhr = new XMLHttpRequest(); - - //Oh yeah, that is right SYNC IO. Behold its glory - //and horrible blocking behavior. - xhr.open('GET', path, false); - xhr.send(); - - return xhr.responseText; - }, - - readFileAsync: function (path, encoding) { - var xhr = new XMLHttpRequest(), - d = prim(); - - xhr.open('GET', path, true); - xhr.send(); - - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - if (xhr.status > 400) { - d.reject(new Error('Status: ' + xhr.status + ': ' + xhr.statusText)); - } else { - d.resolve(xhr.responseText); - } - } - }; - - return d.promise; - }, - - saveUtf8File: function (fileName, fileContents) { - //summary: saves a *text* file using UTF-8 encoding. - file.saveFile(fileName, fileContents, "utf8"); - }, - - saveFile: function (fileName, fileContents, encoding) { - requirejs.browser.saveFile(fileName, fileContents, encoding); - }, - - deleteFile: function (fileName) { - console.log('file.deleteFile is no-op in browser'); - }, - - /** - * Deletes any empty directories under the given directory. - */ - deleteEmptyDirs: function (startDir) { - console.log('file.deleteEmptyDirs is no-op in browser'); - } - }; - - return file; - -}); - -} - -if(env === 'node') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: false, octal:false, strict: false */ -/*global define: false, process: false */ - -define('node/file', ['fs', 'path', 'prim'], function (fs, path, prim) { - - var isWindows = process.platform === 'win32', - windowsDriveRegExp = /^[a-zA-Z]\:\/$/, - file; - - function frontSlash(path) { - return path.replace(/\\/g, '/'); - } - - function exists(path) { - if (isWindows && path.charAt(path.length - 1) === '/' && - path.charAt(path.length - 2) !== ':') { - path = path.substring(0, path.length - 1); - } - - try { - fs.statSync(path); - return true; - } catch (e) { - return false; - } - } - - function mkDir(dir) { - if (!exists(dir) && (!isWindows || !windowsDriveRegExp.test(dir))) { - fs.mkdirSync(dir, 511); - } - } - - function mkFullDir(dir) { - var parts = dir.split('/'), - currDir = '', - first = true; - - parts.forEach(function (part) { - //First part may be empty string if path starts with a slash. - currDir += part + '/'; - first = false; - - if (part) { - mkDir(currDir); - } - }); - } - - file = { - backSlashRegExp: /\\/g, - exclusionRegExp: /^\./, - getLineSeparator: function () { - return '/'; - }, - - exists: function (fileName) { - return exists(fileName); - }, - - parent: function (fileName) { - var parts = fileName.split('/'); - parts.pop(); - return parts.join('/'); - }, - - /** - * Gets the absolute file path as a string, normalized - * to using front slashes for path separators. - * @param {String} fileName - */ - absPath: function (fileName) { - return frontSlash(path.normalize(frontSlash(fs.realpathSync(fileName)))); - }, - - normalize: function (fileName) { - return frontSlash(path.normalize(fileName)); - }, - - isFile: function (path) { - return fs.statSync(path).isFile(); - }, - - isDirectory: function (path) { - return fs.statSync(path).isDirectory(); - }, - - getFilteredFileList: function (/*String*/startDir, /*RegExp*/regExpFilters, /*boolean?*/makeUnixPaths) { - //summary: Recurses startDir and finds matches to the files that match regExpFilters.include - //and do not match regExpFilters.exclude. Or just one regexp can be passed in for regExpFilters, - //and it will be treated as the "include" case. - //Ignores files/directories that start with a period (.) unless exclusionRegExp - //is set to another value. - var files = [], topDir, regExpInclude, regExpExclude, dirFileArray, - i, stat, filePath, ok, dirFiles, fileName; - - topDir = startDir; - - regExpInclude = regExpFilters.include || regExpFilters; - regExpExclude = regExpFilters.exclude || null; - - if (file.exists(topDir)) { - dirFileArray = fs.readdirSync(topDir); - for (i = 0; i < dirFileArray.length; i++) { - fileName = dirFileArray[i]; - filePath = path.join(topDir, fileName); - stat = fs.statSync(filePath); - if (stat.isFile()) { - if (makeUnixPaths) { - //Make sure we have a JS string. - if (filePath.indexOf("/") === -1) { - filePath = frontSlash(filePath); - } - } - - ok = true; - if (regExpInclude) { - ok = filePath.match(regExpInclude); - } - if (ok && regExpExclude) { - ok = !filePath.match(regExpExclude); - } - - if (ok && (!file.exclusionRegExp || - !file.exclusionRegExp.test(fileName))) { - files.push(filePath); - } - } else if (stat.isDirectory() && - (!file.exclusionRegExp || !file.exclusionRegExp.test(fileName))) { - dirFiles = this.getFilteredFileList(filePath, regExpFilters, makeUnixPaths); - files.push.apply(files, dirFiles); - } - } - } - - return files; //Array - }, - - copyDir: function (/*String*/srcDir, /*String*/destDir, /*RegExp?*/regExpFilter, /*boolean?*/onlyCopyNew) { - //summary: copies files from srcDir to destDir using the regExpFilter to determine if the - //file should be copied. Returns a list file name strings of the destinations that were copied. - regExpFilter = regExpFilter || /\w/; - - //Normalize th directory names, but keep front slashes. - //path module on windows now returns backslashed paths. - srcDir = frontSlash(path.normalize(srcDir)); - destDir = frontSlash(path.normalize(destDir)); - - var fileNames = file.getFilteredFileList(srcDir, regExpFilter, true), - copiedFiles = [], i, srcFileName, destFileName; - - for (i = 0; i < fileNames.length; i++) { - srcFileName = fileNames[i]; - destFileName = srcFileName.replace(srcDir, destDir); - - if (file.copyFile(srcFileName, destFileName, onlyCopyNew)) { - copiedFiles.push(destFileName); - } - } - - return copiedFiles.length ? copiedFiles : null; //Array or null - }, - - copyFile: function (/*String*/srcFileName, /*String*/destFileName, /*boolean?*/onlyCopyNew) { - //summary: copies srcFileName to destFileName. If onlyCopyNew is set, it only copies the file if - //srcFileName is newer than destFileName. Returns a boolean indicating if the copy occurred. - var parentDir; - - //logger.trace("Src filename: " + srcFileName); - //logger.trace("Dest filename: " + destFileName); - - //If onlyCopyNew is true, then compare dates and only copy if the src is newer - //than dest. - if (onlyCopyNew) { - if (file.exists(destFileName) && fs.statSync(destFileName).mtime.getTime() >= fs.statSync(srcFileName).mtime.getTime()) { - return false; //Boolean - } - } - - //Make sure destination dir exists. - parentDir = path.dirname(destFileName); - if (!file.exists(parentDir)) { - mkFullDir(parentDir); - } - - fs.writeFileSync(destFileName, fs.readFileSync(srcFileName, 'binary'), 'binary'); - - return true; //Boolean - }, - - /** - * Renames a file. May fail if "to" already exists or is on another drive. - */ - renameFile: function (from, to) { - return fs.renameSync(from, to); - }, - - /** - * Reads a *text* file. - */ - readFile: function (/*String*/path, /*String?*/encoding) { - if (encoding === 'utf-8') { - encoding = 'utf8'; - } - if (!encoding) { - encoding = 'utf8'; - } - - var text = fs.readFileSync(path, encoding); - - //Hmm, would not expect to get A BOM, but it seems to happen, - //remove it just in case. - if (text.indexOf('\uFEFF') === 0) { - text = text.substring(1, text.length); - } - - return text; - }, - - readFileAsync: function (path, encoding) { - var d = prim(); - try { - d.resolve(file.readFile(path, encoding)); - } catch (e) { - d.reject(e); - } - return d.promise; - }, - - saveUtf8File: function (/*String*/fileName, /*String*/fileContents) { - //summary: saves a *text* file using UTF-8 encoding. - file.saveFile(fileName, fileContents, "utf8"); - }, - - saveFile: function (/*String*/fileName, /*String*/fileContents, /*String?*/encoding) { - //summary: saves a *text* file. - var parentDir; - - if (encoding === 'utf-8') { - encoding = 'utf8'; - } - if (!encoding) { - encoding = 'utf8'; - } - - //Make sure destination directories exist. - parentDir = path.dirname(fileName); - if (!file.exists(parentDir)) { - mkFullDir(parentDir); - } - - fs.writeFileSync(fileName, fileContents, encoding); - }, - - deleteFile: function (/*String*/fileName) { - //summary: deletes a file or directory if it exists. - var files, i, stat; - if (file.exists(fileName)) { - stat = fs.statSync(fileName); - if (stat.isDirectory()) { - files = fs.readdirSync(fileName); - for (i = 0; i < files.length; i++) { - this.deleteFile(path.join(fileName, files[i])); - } - fs.rmdirSync(fileName); - } else { - fs.unlinkSync(fileName); - } - } - }, - - - /** - * Deletes any empty directories under the given directory. - */ - deleteEmptyDirs: function (startDir) { - var dirFileArray, i, fileName, filePath, stat; - - if (file.exists(startDir)) { - dirFileArray = fs.readdirSync(startDir); - for (i = 0; i < dirFileArray.length; i++) { - fileName = dirFileArray[i]; - filePath = path.join(startDir, fileName); - stat = fs.statSync(filePath); - if (stat.isDirectory()) { - file.deleteEmptyDirs(filePath); - } - } - - //If directory is now empty, remove it. - if (fs.readdirSync(startDir).length === 0) { - file.deleteFile(startDir); - } - } - } - }; - - return file; - -}); - -} - -if(env === 'rhino') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//Helper functions to deal with file I/O. - -/*jslint plusplus: false */ -/*global java: false, define: false */ - -define('rhino/file', ['prim'], function (prim) { - var file = { - backSlashRegExp: /\\/g, - - exclusionRegExp: /^\./, - - getLineSeparator: function () { - return file.lineSeparator; - }, - - lineSeparator: java.lang.System.getProperty("line.separator"), //Java String - - exists: function (fileName) { - return (new java.io.File(fileName)).exists(); - }, - - parent: function (fileName) { - return file.absPath((new java.io.File(fileName)).getParentFile()); - }, - - normalize: function (fileName) { - return file.absPath(fileName); - }, - - isFile: function (path) { - return (new java.io.File(path)).isFile(); - }, - - isDirectory: function (path) { - return (new java.io.File(path)).isDirectory(); - }, - - /** - * Gets the absolute file path as a string, normalized - * to using front slashes for path separators. - * @param {java.io.File||String} file - */ - absPath: function (fileObj) { - if (typeof fileObj === "string") { - fileObj = new java.io.File(fileObj); - } - return (fileObj.getCanonicalPath() + "").replace(file.backSlashRegExp, "/"); - }, - - getFilteredFileList: function (/*String*/startDir, /*RegExp*/regExpFilters, /*boolean?*/makeUnixPaths, /*boolean?*/startDirIsJavaObject) { - //summary: Recurses startDir and finds matches to the files that match regExpFilters.include - //and do not match regExpFilters.exclude. Or just one regexp can be passed in for regExpFilters, - //and it will be treated as the "include" case. - //Ignores files/directories that start with a period (.) unless exclusionRegExp - //is set to another value. - var files = [], topDir, regExpInclude, regExpExclude, dirFileArray, - i, fileObj, filePath, ok, dirFiles; - - topDir = startDir; - if (!startDirIsJavaObject) { - topDir = new java.io.File(startDir); - } - - regExpInclude = regExpFilters.include || regExpFilters; - regExpExclude = regExpFilters.exclude || null; - - if (topDir.exists()) { - dirFileArray = topDir.listFiles(); - for (i = 0; i < dirFileArray.length; i++) { - fileObj = dirFileArray[i]; - if (fileObj.isFile()) { - filePath = fileObj.getPath(); - if (makeUnixPaths) { - //Make sure we have a JS string. - filePath = String(filePath); - if (filePath.indexOf("/") === -1) { - filePath = filePath.replace(/\\/g, "/"); - } - } - - ok = true; - if (regExpInclude) { - ok = filePath.match(regExpInclude); - } - if (ok && regExpExclude) { - ok = !filePath.match(regExpExclude); - } - - if (ok && (!file.exclusionRegExp || - !file.exclusionRegExp.test(fileObj.getName()))) { - files.push(filePath); - } - } else if (fileObj.isDirectory() && - (!file.exclusionRegExp || !file.exclusionRegExp.test(fileObj.getName()))) { - dirFiles = this.getFilteredFileList(fileObj, regExpFilters, makeUnixPaths, true); - files.push.apply(files, dirFiles); - } - } - } - - return files; //Array - }, - - copyDir: function (/*String*/srcDir, /*String*/destDir, /*RegExp?*/regExpFilter, /*boolean?*/onlyCopyNew) { - //summary: copies files from srcDir to destDir using the regExpFilter to determine if the - //file should be copied. Returns a list file name strings of the destinations that were copied. - regExpFilter = regExpFilter || /\w/; - - var fileNames = file.getFilteredFileList(srcDir, regExpFilter, true), - copiedFiles = [], i, srcFileName, destFileName; - - for (i = 0; i < fileNames.length; i++) { - srcFileName = fileNames[i]; - destFileName = srcFileName.replace(srcDir, destDir); - - if (file.copyFile(srcFileName, destFileName, onlyCopyNew)) { - copiedFiles.push(destFileName); - } - } - - return copiedFiles.length ? copiedFiles : null; //Array or null - }, - - copyFile: function (/*String*/srcFileName, /*String*/destFileName, /*boolean?*/onlyCopyNew) { - //summary: copies srcFileName to destFileName. If onlyCopyNew is set, it only copies the file if - //srcFileName is newer than destFileName. Returns a boolean indicating if the copy occurred. - var destFile = new java.io.File(destFileName), srcFile, parentDir, - srcChannel, destChannel; - - //logger.trace("Src filename: " + srcFileName); - //logger.trace("Dest filename: " + destFileName); - - //If onlyCopyNew is true, then compare dates and only copy if the src is newer - //than dest. - if (onlyCopyNew) { - srcFile = new java.io.File(srcFileName); - if (destFile.exists() && destFile.lastModified() >= srcFile.lastModified()) { - return false; //Boolean - } - } - - //Make sure destination dir exists. - parentDir = destFile.getParentFile(); - if (!parentDir.exists()) { - if (!parentDir.mkdirs()) { - throw "Could not create directory: " + parentDir.getCanonicalPath(); - } - } - - //Java's version of copy file. - srcChannel = new java.io.FileInputStream(srcFileName).getChannel(); - destChannel = new java.io.FileOutputStream(destFileName).getChannel(); - destChannel.transferFrom(srcChannel, 0, srcChannel.size()); - srcChannel.close(); - destChannel.close(); - - return true; //Boolean - }, - - /** - * Renames a file. May fail if "to" already exists or is on another drive. - */ - renameFile: function (from, to) { - return (new java.io.File(from)).renameTo((new java.io.File(to))); - }, - - readFile: function (/*String*/path, /*String?*/encoding) { - //A file read function that can deal with BOMs - encoding = encoding || "utf-8"; - var fileObj = new java.io.File(path), - input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(fileObj), encoding)), - stringBuffer, line; - try { - stringBuffer = new java.lang.StringBuffer(); - line = input.readLine(); - - // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324 - // http://www.unicode.org/faq/utf_bom.html - - // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK: - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058 - if (line && line.length() && line.charAt(0) === 0xfeff) { - // Eat the BOM, since we've already found the encoding on this file, - // and we plan to concatenating this buffer with others; the BOM should - // only appear at the top of a file. - line = line.substring(1); - } - while (line !== null) { - stringBuffer.append(line); - stringBuffer.append(file.lineSeparator); - line = input.readLine(); - } - //Make sure we return a JavaScript string and not a Java string. - return String(stringBuffer.toString()); //String - } finally { - input.close(); - } - }, - - readFileAsync: function (path, encoding) { - var d = prim(); - try { - d.resolve(file.readFile(path, encoding)); - } catch (e) { - d.reject(e); - } - return d.promise; - }, - - saveUtf8File: function (/*String*/fileName, /*String*/fileContents) { - //summary: saves a file using UTF-8 encoding. - file.saveFile(fileName, fileContents, "utf-8"); - }, - - saveFile: function (/*String*/fileName, /*String*/fileContents, /*String?*/encoding) { - //summary: saves a file. - var outFile = new java.io.File(fileName), outWriter, parentDir, os; - - parentDir = outFile.getAbsoluteFile().getParentFile(); - if (!parentDir.exists()) { - if (!parentDir.mkdirs()) { - throw "Could not create directory: " + parentDir.getAbsolutePath(); - } - } - - if (encoding) { - outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), encoding); - } else { - outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile)); - } - - os = new java.io.BufferedWriter(outWriter); - try { - os.write(fileContents); - } finally { - os.close(); - } - }, - - deleteFile: function (/*String*/fileName) { - //summary: deletes a file or directory if it exists. - var fileObj = new java.io.File(fileName), files, i; - if (fileObj.exists()) { - if (fileObj.isDirectory()) { - files = fileObj.listFiles(); - for (i = 0; i < files.length; i++) { - this.deleteFile(files[i]); - } - } - fileObj["delete"](); - } - }, - - /** - * Deletes any empty directories under the given directory. - * The startDirIsJavaObject is private to this implementation's - * recursion needs. - */ - deleteEmptyDirs: function (startDir, startDirIsJavaObject) { - var topDir = startDir, - dirFileArray, i, fileObj; - - if (!startDirIsJavaObject) { - topDir = new java.io.File(startDir); - } - - if (topDir.exists()) { - dirFileArray = topDir.listFiles(); - for (i = 0; i < dirFileArray.length; i++) { - fileObj = dirFileArray[i]; - if (fileObj.isDirectory()) { - file.deleteEmptyDirs(fileObj, true); - } - } - - //If the directory is empty now, delete it. - if (topDir.listFiles().length === 0) { - file.deleteFile(String(topDir.getPath())); - } - } - } - }; - - return file; -}); - -} - -if(env === 'browser') { -/*global process */ -define('browser/quit', function () { - 'use strict'; - return function (code) { - }; -}); -} - -if(env === 'node') { -/*global process */ -define('node/quit', function () { - 'use strict'; - return function (code) { - return process.exit(code); - }; -}); -} - -if(env === 'rhino') { -/*global quit */ -define('rhino/quit', function () { - 'use strict'; - return function (code) { - return quit(code); - }; -}); - -} - -if(env === 'browser') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, console: false */ - -define('browser/print', function () { - function print(msg) { - console.log(msg); - } - - return print; -}); - -} - -if(env === 'node') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, console: false */ - -define('node/print', function () { - function print(msg) { - console.log(msg); - } - - return print; -}); - -} - -if(env === 'rhino') { -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false, print: false */ - -define('rhino/print', function () { - return print; -}); - -} -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint nomen: false, strict: false */ -/*global define: false */ - -define('logger', ['env!env/print'], function (print) { - var logger = { - TRACE: 0, - INFO: 1, - WARN: 2, - ERROR: 3, - SILENT: 4, - level: 0, - logPrefix: "", - - logLevel: function( level ) { - this.level = level; - }, - - trace: function (message) { - if (this.level <= this.TRACE) { - this._print(message); - } - }, - - info: function (message) { - if (this.level <= this.INFO) { - this._print(message); - } - }, - - warn: function (message) { - if (this.level <= this.WARN) { - this._print(message); - } - }, - - error: function (message) { - if (this.level <= this.ERROR) { - this._print(message); - } - }, - - _print: function (message) { - this._sysPrint((this.logPrefix ? (this.logPrefix + " ") : "") + message); - }, - - _sysPrint: function (message) { - print(message); - } - }; - - return logger; -}); -//Just a blank file to use when building the optimizer with the optimizer, -//so that the build does not attempt to inline some env modules, -//like Node's fs and path. - -//Commit 465a4eae86c7bae191b1ee427571543ace777117 on July 19, 2012 -define('esprima', ['exports'], function(exports) { -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, exports:true, -throwError: true, createLiteral: true, generateStatement: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseStatement: true, parseSourceElement: true */ - -(function (exports) { - 'use strict'; - - var Token, - TokenName, - Syntax, - PropertyKind, - Messages, - Regex, - source, - strict, - index, - lineNumber, - lineStart, - length, - buffer, - state, - extra; - - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8 - }; - - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; - - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; - - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), - NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') - }; - - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. - - function assert(condition, message) { - if (!condition) { - throw new Error('ASSERT: ' + message); - } - } - - function sliceSource(from, to) { - return source.slice(from, to); - } - - if (typeof 'esprima'[0] === 'undefined') { - sliceSource = function sliceArraySource(from, to) { - return source.slice(from, to).join(''); - }; - } - - function isDecimalDigit(ch) { - return '0123456789'.indexOf(ch) >= 0; - } - - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; - } - - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } - - - // 7.2 White Space - - function isWhiteSpace(ch) { - return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') || - (ch === '\u000C') || (ch === '\u00A0') || - (ch.charCodeAt(0) >= 0x1680 && - '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0); - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029'); - } - - // 7.6 Identifier Names and Identifiers - - function isIdentifierStart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch)); - } - - function isIdentifierPart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch >= '0') && (ch <= '9')) || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); - } - - // 7.6.1.2 Future Reserved Words - - function isFutureReservedWord(id) { - switch (id) { - - // Future reserved words. - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - } - - return false; - } - - function isStrictModeReservedWord(id) { - switch (id) { - - // Strict Mode reserved words. - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - } - - return false; - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - // 7.6.1.1 Keywords - - function isKeyword(id) { - var keyword = false; - switch (id.length) { - case 2: - keyword = (id === 'if') || (id === 'in') || (id === 'do'); - break; - case 3: - keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - break; - case 4: - keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with'); - break; - case 5: - keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw'); - break; - case 6: - keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch'); - break; - case 7: - keyword = (id === 'default') || (id === 'finally'); - break; - case 8: - keyword = (id === 'function') || (id === 'continue') || (id === 'debugger'); - break; - case 10: - keyword = (id === 'instanceof'); - break; - } - - if (keyword) { - return true; - } - - switch (id) { - // Future reserved words. - // 'const' is specialized as Keyword in V8. - case 'const': - return true; - - // For compatiblity to SpiderMonkey and ES.next - case 'yield': - case 'let': - return true; - } - - if (strict && isStrictModeReservedWord(id)) { - return true; - } - - return isFutureReservedWord(id); - } - - // Return the next character and move forward. - - function nextChar() { - return source[index++]; - } - - // 7.4 Comments - - function skipComment() { - var ch, blockComment, lineComment; - - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = nextChar(); - if (isLineTerminator(ch)) { - lineComment = false; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = nextChar(); - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - ++index; - blockComment = false; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - index += 2; - lineComment = true; - } else if (ch === '*') { - index += 2; - blockComment = true; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function scanHexEscape(prefix) { - var i, len, ch, code = 0; - - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = nextChar(); - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; - } - } - return String.fromCharCode(code); - } - - function scanIdentifier() { - var ch, start, id, restore; - - ch = source[index]; - if (!isIdentifierStart(ch)) { - return; - } - - start = index; - if (ch === '\\') { - ++index; - if (source[index] !== 'u') { - return; - } - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - if (ch === '\\' || !isIdentifierStart(ch)) { - return; - } - id = ch; - } else { - index = restore; - id = 'u'; - } - } else { - id = nextChar(); - } - - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch)) { - break; - } - if (ch === '\\') { - ++index; - if (source[index] !== 'u') { - return; - } - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - if (ch === '\\' || !isIdentifierPart(ch)) { - return; - } - id += ch; - } else { - index = restore; - id += 'u'; - } - } else { - id += nextChar(); - } - } - - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - return { - type: Token.Identifier, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (isKeyword(id)) { - return { - type: Token.Keyword, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.1 Null Literals - - if (id === 'null') { - return { - type: Token.NullLiteral, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.2 Boolean Literals - - if (id === 'true' || id === 'false') { - return { - type: Token.BooleanLiteral, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - return { - type: Token.Identifier, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.7 Punctuators - - function scanPunctuator() { - var start = index, - ch1 = source[index], - ch2, - ch3, - ch4; - - // Check for most common single-character punctuators. - - if (ch1 === ';' || ch1 === '{' || ch1 === '}') { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === ',' || ch1 === '(' || ch1 === ')') { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Dot (.) can also start a floating-point number, hence the need - // to check the next character. - - ch2 = source[index + 1]; - if (ch1 === '.' && !isDecimalDigit(ch2)) { - return { - type: Token.Punctuator, - value: nextChar(), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Peek more characters. - - ch3 = source[index + 2]; - ch4 = source[index + 3]; - - // 4-character punctuator: >>>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - if (ch4 === '=') { - index += 4; - return { - type: Token.Punctuator, - value: '>>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 3-character punctuators: === !== >>> <<= >>= - - if (ch1 === '=' && ch2 === '=' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '===', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '!' && ch2 === '=' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '!==', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - index += 3; - return { - type: Token.Punctuator, - value: '>>>', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '<' && ch2 === '<' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '<<=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 2-character punctuators: <= >= == != ++ -- << >> && || - // += -= *= %= &= |= ^= /= - - if (ch2 === '=') { - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { - if ('+-<>&|'.indexOf(ch2) >= 0) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // The remaining 1-character punctuators. - - if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) { - return { - type: Token.Punctuator, - value: nextChar(), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 7.8.3 Numeric Literals - - function scanNumericLiteral() { - var number, start, ch; - - ch = source[index]; - assert(isDecimalDigit(ch) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); - - start = index; - number = ''; - if (ch !== '.') { - number = nextChar(); - ch = source[index]; - - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - number += nextChar(); - while (index < length) { - ch = source[index]; - if (!isHexDigit(ch)) { - break; - } - number += nextChar(); - } - - if (number.length <= 2) { - // only 0x - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - return { - type: Token.NumericLiteral, - value: parseInt(number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } else if (isOctalDigit(ch)) { - number += nextChar(); - while (index < length) { - ch = source[index]; - if (!isOctalDigit(ch)) { - break; - } - number += nextChar(); - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch) || isDecimalDigit(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // decimal number starts with '0' such as '09' is illegal. - if (isDecimalDigit(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += nextChar(); - } - } - - if (ch === '.') { - number += nextChar(); - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += nextChar(); - } - } - - if (ch === 'e' || ch === 'E') { - number += nextChar(); - - ch = source[index]; - if (ch === '+' || ch === '-') { - number += nextChar(); - } - - ch = source[index]; - if (isDecimalDigit(ch)) { - number += nextChar(); - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += nextChar(); - } - } else { - ch = 'character ' + ch; - if (index >= length) { - ch = ''; - } - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.4 String Literals - - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false; - - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); - - start = index; - ++index; - - while (index < length) { - ch = nextChar(); - - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = nextChar(); - if (!isLineTerminator(ch)) { - switch (ch) { - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\v'; - break; - - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); - - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } - - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(nextChar()); - - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(nextChar()); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - } - } else if (isLineTerminator(ch)) { - break; - } else { - str += ch; - } - } - - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.StringLiteral, - value: str, - octal: octal, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanRegExp() { - var str = '', ch, start, pattern, flags, value, classMarker = false, restore; - - buffer = null; - skipComment(); - - start = index; - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = nextChar(); - - while (index < length) { - ch = nextChar(); - str += ch; - if (classMarker) { - if (ch === ']') { - classMarker = false; - } - } else { - if (ch === '\\') { - ch = nextChar(); - // ECMA-262 7.8.5 - if (isLineTerminator(ch)) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (ch === '/') { - break; - } else if (ch === '[') { - classMarker = true; - } else if (isLineTerminator(ch)) { - throwError({}, Messages.UnterminatedRegExp); - } - } - } - - if (str.length === 1) { - throwError({}, Messages.UnterminatedRegExp); - } - - // Exclude leading and trailing slash. - pattern = str.substr(1, str.length - 2); - - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch)) { - break; - } - - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - str += '\\u'; - for (; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - } else { - str += '\\'; - } - } else { - flags += ch; - str += ch; - } - } - - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); - } - - return { - literal: str, - value: value, - range: [start, index] - }; - } - - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } - - function advance() { - var ch, token; - - skipComment(); - - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - range: [index, index] - }; - } - - token = scanPunctuator(); - if (typeof token !== 'undefined') { - return token; - } - - ch = source[index]; - - if (ch === '\'' || ch === '"') { - return scanStringLiteral(); - } - - if (ch === '.' || isDecimalDigit(ch)) { - return scanNumericLiteral(); - } - - token = scanIdentifier(); - if (typeof token !== 'undefined') { - return token; - } - - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - function lex() { - var token; - - if (buffer) { - index = buffer.range[1]; - lineNumber = buffer.lineNumber; - lineStart = buffer.lineStart; - token = buffer; - buffer = null; - return token; - } - - buffer = null; - return advance(); - } - - function lookahead() { - var pos, line, start; - - if (buffer !== null) { - return buffer; - } - - pos = index; - line = lineNumber; - start = lineStart; - buffer = advance(); - index = pos; - lineNumber = line; - lineStart = start; - - return buffer; - } - - // Return true if there is a line terminator before the next token. - - function peekLineTerminator() { - var pos, line, start, found; - - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; - - return found; - } - - // Throw an exception - - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - return args[index] || ''; - } - ); - - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.range[0]; - error.lineNumber = token.lineNumber; - error.column = token.range[0] - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; - } - - throw error; - } - - function throwErrorTolerant() { - var error; - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; - } - } - } - - - // Throw an exception because of the token. - - function throwUnexpected(token) { - var s; - - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); - } - - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); - } - - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); - } - - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); - } - - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwError(token, Messages.StrictReservedWord); - } - throwError(token, Messages.UnexpectedToken, token.value); - } - - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); - } - - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. - - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); - } - } - - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. - - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); - } - } - - // Return true if the next token matches the specified punctuator. - - function match(value) { - var token = lookahead(); - return token.type === Token.Punctuator && token.value === value; - } - - // Return true if the next token matches the specified keyword - - function matchKeyword(keyword) { - var token = lookahead(); - return token.type === Token.Keyword && token.value === keyword; - } - - // Return true if the next token is an assignment operator - - function matchAssign() { - var token = lookahead(), - op = token.value; - - if (token.type !== Token.Punctuator) { - return false; - } - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; - } - - function consumeSemicolon() { - var token, line; - - // Catch the very common case first. - if (source[index] === ';') { - lex(); - return; - } - - line = lineNumber; - skipComment(); - if (lineNumber !== line) { - return; - } - - if (match(';')) { - lex(); - return; - } - - token = lookahead(); - if (token.type !== Token.EOF && !match('}')) { - throwUnexpected(token); - } - return; - } - - // Return true if provided expression is LeftHandSideExpression - - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } - - // 11.1.4 Array Initialiser - - function parseArrayInitialiser() { - var elements = [], - undef; - - expect('['); - - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(undef); - } else { - elements.push(parseAssignmentExpression()); - - if (!match(']')) { - expect(','); - } - } - } - - expect(']'); - - return { - type: Syntax.ArrayExpression, - elements: elements - }; - } - - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body; - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwError(first, Messages.StrictParamName); - } - strict = previousStrict; - - return { - type: Syntax.FunctionExpression, - id: null, - params: param, - body: body - }; - } - - function parseObjectPropertyKey() { - var token = lex(); - - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwError(token, Messages.StrictOctalLiteral); - } - return createLiteral(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseObjectProperty() { - var token, key, id, param; - - token = lookahead(); - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); - - // Property Assignment: Getter and Setter. - - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction([]), - kind: 'get' - }; - } else if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead(); - if (token.type !== Token.Identifier) { - throwUnexpected(lex()); - } - param = [ parseVariableIdentifier() ]; - expect(')'); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction(param, token), - kind: 'set' - }; - } else { - expect(':'); - return { - type: Syntax.Property, - key: id, - value: parseAssignmentExpression(), - kind: 'init' - }; - } - } else if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - return { - type: Syntax.Property, - key: key, - value: parseAssignmentExpression(), - kind: 'init' - }; - } - } - - function parseObjectInitialiser() { - var token, properties = [], property, name, kind, map = {}, toString = String; - - expect('{'); - - while (!match('}')) { - property = parseObjectProperty(); - - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); - } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - if (Object.prototype.hasOwnProperty.call(map, name)) { - if (map[name] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwError({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwError({}, Messages.AccessorDataProperty); - } else if (map[name] & kind) { - throwError({}, Messages.AccessorGetSet); - } - } - map[name] |= kind; - } else { - map[name] = kind; - } - - properties.push(property); - - if (!match('}')) { - expect(','); - } - } - - expect('}'); - - return { - type: Syntax.ObjectExpression, - properties: properties - }; - } - - // 11.1 Primary Expressions - - function parsePrimaryExpression() { - var expr, - token = lookahead(), - type = token.type; - - if (type === Token.Identifier) { - return { - type: Syntax.Identifier, - name: lex().value - }; - } - - if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return createLiteral(lex()); - } - - if (type === Token.Keyword) { - if (matchKeyword('this')) { - lex(); - return { - type: Syntax.ThisExpression - }; - } - - if (matchKeyword('function')) { - return parseFunctionExpression(); - } - } - - if (type === Token.BooleanLiteral) { - lex(); - token.value = (token.value === 'true'); - return createLiteral(token); - } - - if (type === Token.NullLiteral) { - lex(); - token.value = null; - return createLiteral(token); - } - - if (match('[')) { - return parseArrayInitialiser(); - } - - if (match('{')) { - return parseObjectInitialiser(); - } - - if (match('(')) { - lex(); - state.lastParenthesized = expr = parseExpression(); - expect(')'); - return expr; - } - - if (match('/') || match('/=')) { - return createLiteral(scanRegExp()); - } - - return throwUnexpected(lex()); - } - - // 11.2 Left-Hand-Side Expressions - - function parseArguments() { - var args = []; - - expect('('); - - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return args; - } - - function parseNonComputedProperty() { - var token = lex(); - - if (!isIdentifierName(token)) { - throwUnexpected(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseNonComputedMember(object) { - return { - type: Syntax.MemberExpression, - computed: false, - object: object, - property: parseNonComputedProperty() - }; - } - - function parseComputedMember(object) { - var property, expr; - - expect('['); - property = parseExpression(); - expr = { - type: Syntax.MemberExpression, - computed: true, - object: object, - property: property - }; - expect(']'); - return expr; - } - - function parseCallMember(object) { - return { - type: Syntax.CallExpression, - callee: object, - 'arguments': parseArguments() - }; - } - - function parseNewExpression() { - var expr; - - expectKeyword('new'); - - expr = { - type: Syntax.NewExpression, - callee: parseLeftHandSideExpression(), - 'arguments': [] - }; - - if (match('(')) { - expr['arguments'] = parseArguments(); - } - - return expr; - } - - function parseLeftHandSideExpressionAllowCall() { - var useNew, expr; - - useNew = matchKeyword('new'); - expr = useNew ? parseNewExpression() : parsePrimaryExpression(); - - while (index < length) { - if (match('.')) { - lex(); - expr = parseNonComputedMember(expr); - } else if (match('[')) { - expr = parseComputedMember(expr); - } else if (match('(')) { - expr = parseCallMember(expr); - } else { - break; - } - } - - return expr; - } - - function parseLeftHandSideExpression() { - var useNew, expr; - - useNew = matchKeyword('new'); - expr = useNew ? parseNewExpression() : parsePrimaryExpression(); - - while (index < length) { - if (match('.')) { - lex(); - expr = parseNonComputedMember(expr); - } else if (match('[')) { - expr = parseComputedMember(expr); - } else { - break; - } - } - - return expr; - } - - // 11.3 Postfix Expressions - - function parsePostfixExpression() { - var expr = parseLeftHandSideExpressionAllowCall(); - - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwError({}, Messages.StrictLHSPostfix); - } - - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - expr = { - type: Syntax.UpdateExpression, - operator: lex().value, - argument: expr, - prefix: false - }; - } - - return expr; - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr; - - if (match('++') || match('--')) { - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwError({}, Messages.StrictLHSPrefix); - } - - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - expr = { - type: Syntax.UpdateExpression, - operator: token.value, - argument: expr, - prefix: true - }; - return expr; - } - - if (match('+') || match('-') || match('~') || match('!')) { - expr = { - type: Syntax.UnaryExpression, - operator: lex().value, - argument: parseUnaryExpression() - }; - return expr; - } - - if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - expr = { - type: Syntax.UnaryExpression, - operator: lex().value, - argument: parseUnaryExpression() - }; - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); - } - return expr; - } - - return parsePostfixExpression(); - } - - // 11.5 Multiplicative Operators - - function parseMultiplicativeExpression() { - var expr = parseUnaryExpression(); - - while (match('*') || match('/') || match('%')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseUnaryExpression() - }; - } - - return expr; - } - - // 11.6 Additive Operators - - function parseAdditiveExpression() { - var expr = parseMultiplicativeExpression(); - - while (match('+') || match('-')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseMultiplicativeExpression() - }; - } - - return expr; - } - - // 11.7 Bitwise Shift Operators - - function parseShiftExpression() { - var expr = parseAdditiveExpression(); - - while (match('<<') || match('>>') || match('>>>')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseAdditiveExpression() - }; - } - - return expr; - } - // 11.8 Relational Operators - - function parseRelationalExpression() { - var expr, previousAllowIn; - - previousAllowIn = state.allowIn; - state.allowIn = true; - - expr = parseShiftExpression(); - - while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseShiftExpression() - }; - } - - state.allowIn = previousAllowIn; - return expr; - } - - // 11.9 Equality Operators - - function parseEqualityExpression() { - var expr = parseRelationalExpression(); - - while (match('==') || match('!=') || match('===') || match('!==')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseRelationalExpression() - }; - } - - return expr; - } - - // 11.10 Binary Bitwise Operators - - function parseBitwiseANDExpression() { - var expr = parseEqualityExpression(); - - while (match('&')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '&', - left: expr, - right: parseEqualityExpression() - }; - } - - return expr; - } - - function parseBitwiseXORExpression() { - var expr = parseBitwiseANDExpression(); - - while (match('^')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '^', - left: expr, - right: parseBitwiseANDExpression() - }; - } - - return expr; - } - - function parseBitwiseORExpression() { - var expr = parseBitwiseXORExpression(); - - while (match('|')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '|', - left: expr, - right: parseBitwiseXORExpression() - }; - } - - return expr; - } - - // 11.11 Binary Logical Operators - - function parseLogicalANDExpression() { - var expr = parseBitwiseORExpression(); - - while (match('&&')) { - lex(); - expr = { - type: Syntax.LogicalExpression, - operator: '&&', - left: expr, - right: parseBitwiseORExpression() - }; - } - - return expr; - } - - function parseLogicalORExpression() { - var expr = parseLogicalANDExpression(); - - while (match('||')) { - lex(); - expr = { - type: Syntax.LogicalExpression, - operator: '||', - left: expr, - right: parseLogicalANDExpression() - }; - } - - return expr; - } - - // 11.12 Conditional Operator - - function parseConditionalExpression() { - var expr, previousAllowIn, consequent; - - expr = parseLogicalORExpression(); - - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - - expr = { - type: Syntax.ConditionalExpression, - test: expr, - consequent: consequent, - alternate: parseAssignmentExpression() - }; - } - - return expr; - } - - // 11.13 Assignment Operators - - function parseAssignmentExpression() { - var expr; - - expr = parseConditionalExpression(); - - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - // 11.13.1 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwError({}, Messages.StrictLHSAssignment); - } - - expr = { - type: Syntax.AssignmentExpression, - operator: lex().value, - left: expr, - right: parseAssignmentExpression() - }; - } - - return expr; - } - - // 11.14 Comma Operator - - function parseExpression() { - var expr = parseAssignmentExpression(); - - if (match(',')) { - expr = { - type: Syntax.SequenceExpression, - expressions: [ expr ] - }; - - while (index < length) { - if (!match(',')) { - break; - } - lex(); - expr.expressions.push(parseAssignmentExpression()); - } - - } - return expr; - } - - // 12.1 Block - - function parseStatementList() { - var list = [], - statement; - - while (index < length) { - if (match('}')) { - break; - } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; - } - list.push(statement); - } - - return list; - } - - function parseBlock() { - var block; - - expect('{'); - - block = parseStatementList(); - - expect('}'); - - return { - type: Syntax.BlockStatement, - body: block - }; - } - - // 12.2 Variable Statement - - function parseVariableIdentifier() { - var token = lex(); - - if (token.type !== Token.Identifier) { - throwUnexpected(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseVariableDeclaration(kind) { - var id = parseVariableIdentifier(), - init = null; - - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); - } - - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); - } - - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - } - - function parseVariableDeclarationList(kind) { - var list = []; - - while (index < length) { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; - } - lex(); - } - - return list; - } - - function parseVariableStatement() { - var declarations; - - expectKeyword('var'); - - declarations = parseVariableDeclarationList(); - - consumeSemicolon(); - - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: 'var' - }; - } - - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations; - - expectKeyword(kind); - - declarations = parseVariableDeclarationList(kind); - - consumeSemicolon(); - - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - } - - // 12.3 Empty Statement - - function parseEmptyStatement() { - expect(';'); - - return { - type: Syntax.EmptyStatement - }; - } - - // 12.4 Expression Statement - - function parseExpressionStatement() { - var expr = parseExpression(); - - consumeSemicolon(); - - return { - type: Syntax.ExpressionStatement, - expression: expr - }; - } - - // 12.5 If statement - - function parseIfStatement() { - var test, consequent, alternate; - - expectKeyword('if'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - consequent = parseStatement(); - - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } - - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - } - - // 12.6 Iteration Statements - - function parseDoWhileStatement() { - var body, test, oldInIteration; - - expectKeyword('do'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - if (match(';')) { - lex(); - } - - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - } - - function parseWhileStatement() { - var test, body, oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - } - - function parseForVariableDeclaration() { - var token = lex(); - - return { - type: Syntax.VariableDeclaration, - declarations: parseVariableDeclarationList(), - kind: token.value - }; - } - - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; - - init = test = update = null; - - expectKeyword('for'); - - expect('('); - - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; - - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; - - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwError({}, Messages.InvalidLHSInForIn); - } - - lex(); - left = init; - right = parseExpression(); - init = null; - } - } - - if (typeof left === 'undefined') { - expect(';'); - } - } - - if (typeof left === 'undefined') { - - if (!match(';')) { - test = parseExpression(); - } - expect(';'); - - if (!match(')')) { - update = parseExpression(); - } - } - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - if (typeof left === 'undefined') { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - } - - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - } - - // 12.7 The continue statement - - function parseContinueStatement() { - var token, label = null; - - expectKeyword('continue'); - - // Optimize the most common form: 'continue;'. - if (source[index] === ';') { - lex(); - - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: null - }; - } - - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: null - }; - } - - token = lookahead(); - if (token.type === Token.Identifier) { - label = parseVariableIdentifier(); - - if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: label - }; - } - - // 12.8 The break statement - - function parseBreakStatement() { - var token, label = null; - - expectKeyword('break'); - - // Optimize the most common form: 'break;'. - if (source[index] === ';') { - lex(); - - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: null - }; - } - - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: null - }; - } - - token = lookahead(); - if (token.type === Token.Identifier) { - label = parseVariableIdentifier(); - - if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: label - }; - } - - // 12.9 The return statement - - function parseReturnStatement() { - var token, argument = null; - - expectKeyword('return'); - - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); - } - - // 'return' followed by a space and an identifier is very common. - if (source[index] === ' ') { - if (isIdentifierStart(source[index + 1])) { - argument = parseExpression(); - consumeSemicolon(); - return { - type: Syntax.ReturnStatement, - argument: argument - }; - } - } - - if (peekLineTerminator()) { - return { - type: Syntax.ReturnStatement, - argument: null - }; - } - - if (!match(';')) { - token = lookahead(); - if (!match('}') && token.type !== Token.EOF) { - argument = parseExpression(); - } - } - - consumeSemicolon(); - - return { - type: Syntax.ReturnStatement, - argument: argument - }; - } - - // 12.10 The with statement - - function parseWithStatement() { - var object, body; - - if (strict) { - throwErrorTolerant({}, Messages.StrictModeWith); - } - - expectKeyword('with'); - - expect('('); - - object = parseExpression(); - - expect(')'); - - body = parseStatement(); - - return { - type: Syntax.WithStatement, - object: object, - body: body - }; - } - - // 12.10 The swith statement - - function parseSwitchCase() { - var test, - consequent = [], - statement; - - if (matchKeyword('default')) { - lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); - } - expect(':'); - - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - if (typeof statement === 'undefined') { - break; - } - consequent.push(statement); - } - - return { - type: Syntax.SwitchCase, - test: test, - consequent: consequent - }; - } - - function parseSwitchStatement() { - var discriminant, cases, oldInSwitch; - - expectKeyword('switch'); - - expect('('); - - discriminant = parseExpression(); - - expect(')'); - - expect('{'); - - if (match('}')) { - lex(); - return { - type: Syntax.SwitchStatement, - discriminant: discriminant - }; - } - - cases = []; - - oldInSwitch = state.inSwitch; - state.inSwitch = true; - - while (index < length) { - if (match('}')) { - break; - } - cases.push(parseSwitchCase()); - } - - state.inSwitch = oldInSwitch; - - expect('}'); - - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - } - - // 12.13 The throw statement - - function parseThrowStatement() { - var argument; - - expectKeyword('throw'); - - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); - } - - argument = parseExpression(); - - consumeSemicolon(); - - return { - type: Syntax.ThrowStatement, - argument: argument - }; - } - - // 12.14 The try statement - - function parseCatchClause() { - var param; - - expectKeyword('catch'); - - expect('('); - if (!match(')')) { - param = parseExpression(); - // 12.14.1 - if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); - } - } - expect(')'); - - return { - type: Syntax.CatchClause, - param: param, - guard: null, - body: parseBlock() - }; - } - - function parseTryStatement() { - var block, handlers = [], finalizer = null; - - expectKeyword('try'); - - block = parseBlock(); - - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } - - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } - - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); - } - - return { - type: Syntax.TryStatement, - block: block, - handlers: handlers, - finalizer: finalizer - }; - } - - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); - - return { - type: Syntax.DebuggerStatement - }; - } - - // 12 Statements - - function parseStatement() { - var token = lookahead(), - expr, - labeledBody; - - if (token.type === Token.EOF) { - throwUnexpected(token); - } - - if (token.type === Token.Punctuator) { - switch (token.value) { - case ';': - return parseEmptyStatement(); - case '{': - return parseBlock(); - case '(': - return parseExpressionStatement(); - default: - break; - } - } - - if (token.type === Token.Keyword) { - switch (token.value) { - case 'break': - return parseBreakStatement(); - case 'continue': - return parseContinueStatement(); - case 'debugger': - return parseDebuggerStatement(); - case 'do': - return parseDoWhileStatement(); - case 'for': - return parseForStatement(); - case 'function': - return parseFunctionDeclaration(); - case 'if': - return parseIfStatement(); - case 'return': - return parseReturnStatement(); - case 'switch': - return parseSwitchStatement(); - case 'throw': - return parseThrowStatement(); - case 'try': - return parseTryStatement(); - case 'var': - return parseVariableStatement(); - case 'while': - return parseWhileStatement(); - case 'with': - return parseWithStatement(); - default: - break; - } - } - - expr = parseExpression(); - - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); - - if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } - - state.labelSet[expr.name] = true; - labeledBody = parseStatement(); - delete state.labelSet[expr.name]; - - return { - type: Syntax.LabeledStatement, - label: expr, - body: labeledBody - }; - } - - consumeSemicolon(); - - return { - type: Syntax.ExpressionStatement, - expression: expr - }; - } - - // 13 Function Definition - - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; - - expect('{'); - - while (index < length) { - token = lookahead(); - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = sliceSource(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwError(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; - - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; - - while (index < length) { - if (match('}')) { - break; - } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - - expect('}'); - - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; - - return { - type: Syntax.BlockStatement, - body: sourceElements - }; - } - - function parseFunctionDeclaration() { - var id, param, params = [], body, token, firstRestricted, message, previousStrict, paramSet; - - expectKeyword('function'); - token = lookahead(); - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwError(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead(); - param = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwError(token, Messages.StrictParamName); - } - if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - throwError(token, Messages.StrictParamDupe); - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[param.name] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - strict = previousStrict; - - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - body: body - }; - } - - function parseFunctionExpression() { - var token, id = null, firstRestricted, message, param, params = [], body, previousStrict, paramSet; - - expectKeyword('function'); - - if (!match('(')) { - token = lookahead(); - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwError(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - } - - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead(); - param = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwError(token, Messages.StrictParamName); - } - if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - throwError(token, Messages.StrictParamDupe); - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[param.name] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - strict = previousStrict; - - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - body: body - }; - } - - // 14 Program - - function parseSourceElement() { - var token = lookahead(); - - if (token.type === Token.Keyword) { - switch (token.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(token.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); - } - } - - if (token.type !== Token.EOF) { - return parseStatement(); - } - } - - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; - - while (index < length) { - token = lookahead(); - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = sliceSource(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwError(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - while (index < length) { - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - return sourceElements; - } - - function parseProgram() { - var program; - strict = false; - program = { - type: Syntax.Program, - body: parseSourceElements() - }; - return program; - } - - // The following functions are needed only when the option to preserve - // the comments is active. - - function addComment(start, end, type, value) { - assert(typeof start === 'number', 'Comment must have valid position'); - - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (extra.comments.length > 0) { - if (extra.comments[extra.comments.length - 1].range[1] > start) { - return; - } - } - - extra.comments.push({ - range: [start, end], - type: type, - value: value - }); - } - - function scanComment() { - var comment, ch, start, blockComment, lineComment; - - comment = ''; - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = nextChar(); - if (index >= length) { - lineComment = false; - comment += ch; - addComment(start, index, 'Line', comment); - } else if (isLineTerminator(ch)) { - lineComment = false; - addComment(start, index, 'Line', comment); - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - comment = ''; - } else { - comment += ch; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - comment += '\r\n'; - } else { - comment += ch; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = nextChar(); - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - comment += ch; - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - comment = comment.substr(0, comment.length - 1); - blockComment = false; - ++index; - addComment(start, index, 'Block', comment); - comment = ''; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - start = index; - index += 2; - lineComment = true; - } else if (ch === '*') { - start = index; - index += 2; - blockComment = true; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function collectToken() { - var token = extra.advance(), - range, - value; - - if (token.type !== Token.EOF) { - range = [token.range[0], token.range[1]]; - value = sliceSource(token.range[0], token.range[1]); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: range - }); - } - - return token; - } - - function collectRegex() { - var pos, regex, token; - - skipComment(); - - pos = index; - regex = extra.scanRegExp(); - - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } - } - - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index] - }); - - return regex; - } - - function createLiteral(token) { - return { - type: Syntax.Literal, - value: token.value - }; - } - - function createRawLiteral(token) { - return { - type: Syntax.Literal, - value: token.value, - raw: sliceSource(token.range[0], token.range[1]) - }; - } - - function wrapTrackingFunction(range, loc) { - - return function (parseFunction) { - - function isBinary(node) { - return node.type === Syntax.LogicalExpression || - node.type === Syntax.BinaryExpression; - } - - function visit(node) { - if (isBinary(node.left)) { - visit(node.left); - } - if (isBinary(node.right)) { - visit(node.right); - } - - if (range && typeof node.range === 'undefined') { - node.range = [node.left.range[0], node.right.range[1]]; - } - if (loc && typeof node.loc === 'undefined') { - node.loc = { - start: node.left.loc.start, - end: node.right.loc.end - }; - } - } - - return function () { - var node, rangeInfo, locInfo; - - skipComment(); - rangeInfo = [index, 0]; - locInfo = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - node = parseFunction.apply(null, arguments); - if (typeof node !== 'undefined') { - - if (range) { - rangeInfo[1] = index; - node.range = rangeInfo; - } - - if (loc) { - locInfo.end = { - line: lineNumber, - column: index - lineStart - }; - node.loc = locInfo; - } - - if (isBinary(node)) { - visit(node); - } - - if (node.type === Syntax.MemberExpression) { - if (typeof node.object.range !== 'undefined') { - node.range[0] = node.object.range[0]; - } - if (typeof node.object.loc !== 'undefined') { - node.loc.start = node.object.loc.start; - } - } - - if (node.type === Syntax.CallExpression) { - if (typeof node.callee.range !== 'undefined') { - node.range[0] = node.callee.range[0]; - } - if (typeof node.callee.loc !== 'undefined') { - node.loc.start = node.callee.loc.start; - } - } - return node; - } - }; - - }; - } - - function patch() { - - var wrapTracking; - - if (extra.comments) { - extra.skipComment = skipComment; - skipComment = scanComment; - } - - if (extra.raw) { - extra.createLiteral = createLiteral; - createLiteral = createRawLiteral; - } - - if (extra.range || extra.loc) { - - wrapTracking = wrapTrackingFunction(extra.range, extra.loc); - - extra.parseAdditiveExpression = parseAdditiveExpression; - extra.parseAssignmentExpression = parseAssignmentExpression; - extra.parseBitwiseANDExpression = parseBitwiseANDExpression; - extra.parseBitwiseORExpression = parseBitwiseORExpression; - extra.parseBitwiseXORExpression = parseBitwiseXORExpression; - extra.parseBlock = parseBlock; - extra.parseFunctionSourceElements = parseFunctionSourceElements; - extra.parseCallMember = parseCallMember; - extra.parseCatchClause = parseCatchClause; - extra.parseComputedMember = parseComputedMember; - extra.parseConditionalExpression = parseConditionalExpression; - extra.parseConstLetDeclaration = parseConstLetDeclaration; - extra.parseEqualityExpression = parseEqualityExpression; - extra.parseExpression = parseExpression; - extra.parseForVariableDeclaration = parseForVariableDeclaration; - extra.parseFunctionDeclaration = parseFunctionDeclaration; - extra.parseFunctionExpression = parseFunctionExpression; - extra.parseLogicalANDExpression = parseLogicalANDExpression; - extra.parseLogicalORExpression = parseLogicalORExpression; - extra.parseMultiplicativeExpression = parseMultiplicativeExpression; - extra.parseNewExpression = parseNewExpression; - extra.parseNonComputedMember = parseNonComputedMember; - extra.parseNonComputedProperty = parseNonComputedProperty; - extra.parseObjectProperty = parseObjectProperty; - extra.parseObjectPropertyKey = parseObjectPropertyKey; - extra.parsePostfixExpression = parsePostfixExpression; - extra.parsePrimaryExpression = parsePrimaryExpression; - extra.parseProgram = parseProgram; - extra.parsePropertyFunction = parsePropertyFunction; - extra.parseRelationalExpression = parseRelationalExpression; - extra.parseStatement = parseStatement; - extra.parseShiftExpression = parseShiftExpression; - extra.parseSwitchCase = parseSwitchCase; - extra.parseUnaryExpression = parseUnaryExpression; - extra.parseVariableDeclaration = parseVariableDeclaration; - extra.parseVariableIdentifier = parseVariableIdentifier; - - parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression); - parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression); - parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression); - parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression); - parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression); - parseBlock = wrapTracking(extra.parseBlock); - parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements); - parseCallMember = wrapTracking(extra.parseCallMember); - parseCatchClause = wrapTracking(extra.parseCatchClause); - parseComputedMember = wrapTracking(extra.parseComputedMember); - parseConditionalExpression = wrapTracking(extra.parseConditionalExpression); - parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration); - parseEqualityExpression = wrapTracking(extra.parseEqualityExpression); - parseExpression = wrapTracking(extra.parseExpression); - parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration); - parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration); - parseFunctionExpression = wrapTracking(extra.parseFunctionExpression); - parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression); - parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression); - parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression); - parseNewExpression = wrapTracking(extra.parseNewExpression); - parseNonComputedMember = wrapTracking(extra.parseNonComputedMember); - parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty); - parseObjectProperty = wrapTracking(extra.parseObjectProperty); - parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey); - parsePostfixExpression = wrapTracking(extra.parsePostfixExpression); - parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression); - parseProgram = wrapTracking(extra.parseProgram); - parsePropertyFunction = wrapTracking(extra.parsePropertyFunction); - parseRelationalExpression = wrapTracking(extra.parseRelationalExpression); - parseStatement = wrapTracking(extra.parseStatement); - parseShiftExpression = wrapTracking(extra.parseShiftExpression); - parseSwitchCase = wrapTracking(extra.parseSwitchCase); - parseUnaryExpression = wrapTracking(extra.parseUnaryExpression); - parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration); - parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier); - } - - if (typeof extra.tokens !== 'undefined') { - extra.advance = advance; - extra.scanRegExp = scanRegExp; - - advance = collectToken; - scanRegExp = collectRegex; - } - } - - function unpatch() { - if (typeof extra.skipComment === 'function') { - skipComment = extra.skipComment; - } - - if (extra.raw) { - createLiteral = extra.createLiteral; - } - - if (extra.range || extra.loc) { - parseAdditiveExpression = extra.parseAdditiveExpression; - parseAssignmentExpression = extra.parseAssignmentExpression; - parseBitwiseANDExpression = extra.parseBitwiseANDExpression; - parseBitwiseORExpression = extra.parseBitwiseORExpression; - parseBitwiseXORExpression = extra.parseBitwiseXORExpression; - parseBlock = extra.parseBlock; - parseFunctionSourceElements = extra.parseFunctionSourceElements; - parseCallMember = extra.parseCallMember; - parseCatchClause = extra.parseCatchClause; - parseComputedMember = extra.parseComputedMember; - parseConditionalExpression = extra.parseConditionalExpression; - parseConstLetDeclaration = extra.parseConstLetDeclaration; - parseEqualityExpression = extra.parseEqualityExpression; - parseExpression = extra.parseExpression; - parseForVariableDeclaration = extra.parseForVariableDeclaration; - parseFunctionDeclaration = extra.parseFunctionDeclaration; - parseFunctionExpression = extra.parseFunctionExpression; - parseLogicalANDExpression = extra.parseLogicalANDExpression; - parseLogicalORExpression = extra.parseLogicalORExpression; - parseMultiplicativeExpression = extra.parseMultiplicativeExpression; - parseNewExpression = extra.parseNewExpression; - parseNonComputedMember = extra.parseNonComputedMember; - parseNonComputedProperty = extra.parseNonComputedProperty; - parseObjectProperty = extra.parseObjectProperty; - parseObjectPropertyKey = extra.parseObjectPropertyKey; - parsePrimaryExpression = extra.parsePrimaryExpression; - parsePostfixExpression = extra.parsePostfixExpression; - parseProgram = extra.parseProgram; - parsePropertyFunction = extra.parsePropertyFunction; - parseRelationalExpression = extra.parseRelationalExpression; - parseStatement = extra.parseStatement; - parseShiftExpression = extra.parseShiftExpression; - parseSwitchCase = extra.parseSwitchCase; - parseUnaryExpression = extra.parseUnaryExpression; - parseVariableDeclaration = extra.parseVariableDeclaration; - parseVariableIdentifier = extra.parseVariableIdentifier; - } - - if (typeof extra.scanRegExp === 'function') { - advance = extra.advance; - scanRegExp = extra.scanRegExp; - } - } - - function stringToArray(str) { - var length = str.length, - result = [], - i; - for (i = 0; i < length; ++i) { - result[i] = str.charAt(i); - } - return result; - } - - function parse(code, options) { - var program, toString; - - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } - - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - buffer = null; - state = { - allowIn: true, - labelSet: {}, - lastParenthesized: null, - inFunctionBody: false, - inIteration: false, - inSwitch: false - }; - - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.raw = (typeof options.raw === 'boolean') && options.raw; - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - } - - if (length > 0) { - if (typeof source[0] === 'undefined') { - // Try first to convert to a string. This is good as fast path - // for old IE which understands string indexing for string - // literals only and not for string object. - if (code instanceof String) { - source = code.valueOf(); - } - - // Force accessing the characters via an array. - if (typeof source[0] === 'undefined') { - source = stringToArray(code); - } - } - } - - patch(); - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - program.tokens = extra.tokens; - } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; - } - } catch (e) { - throw e; - } finally { - unpatch(); - extra = {}; - } - - return program; - } - - // Sync with package.json. - exports.version = '1.0.0-dev'; - - exports.parse = parse; - - // Deep copy. - exports.Syntax = (function () { - var name, types = {}; - - if (typeof Object.create === 'function') { - types = Object.create(null); - } - - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } - - if (typeof Object.freeze === 'function') { - Object.freeze(types); - } - - return types; - }()); - -}(typeof exports === 'undefined' ? (esprima = {}) : exports)); -/* vim: set sw=4 ts=4 et tw=80 : */ - -});define('uglifyjs/consolidator', ["require", "exports", "module", "./parse-js", "./process"], function(require, exports, module) { -/** - * @preserve Copyright 2012 Robert Gust-Bardon . - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/** - * @fileoverview Enhances UglifyJS with consolidation of null, Boolean, and String values. - *

Also known as aliasing, this feature has been deprecated in the Closure Compiler since its - * initial release, where it is unavailable from the CLI. The Closure Compiler allows one to log and - * influence this process. In contrast, this implementation does not introduce - * any variable declarations in global code and derives String values from - * identifier names used as property accessors.

- *

Consolidating literals may worsen the data compression ratio when an encoding - * transformation is applied. For instance, jQuery 1.7.1 takes 248235 bytes. - * Building it with - * UglifyJS v1.2.5 results in 93647 bytes (37.73% of the original) which are - * then compressed to 33154 bytes (13.36% of the original) using gzip(1). Building it with the same - * version of UglifyJS 1.2.5 patched with the implementation of consolidation - * results in 80784 bytes (a decrease of 12863 bytes, i.e. 13.74%, in comparison - * to the aforementioned 93647 bytes) which are then compressed to 34013 bytes - * (an increase of 859 bytes, i.e. 2.59%, in comparison to the aforementioned - * 33154 bytes).

- *

Written in the strict variant - * of ECMA-262 5.1 Edition. Encoded in UTF-8. Follows Revision 2.28 of the Google JavaScript Style Guide (except for the - * discouraged use of the {@code function} tag and the {@code namespace} tag). - * 100% typed for the Closure Compiler Version 1741.

- *

Should you find this software useful, please consider a donation.

- * @author follow.me@RGustBardon (Robert Gust-Bardon) - * @supported Tested with: - * - */ - -/*global console:false, exports:true, module:false, require:false */ -/*jshint sub:true */ -/** - * Consolidates null, Boolean, and String values found inside an AST. - * @param {!TSyntacticCodeUnit} oAbstractSyntaxTree An array-like object - * representing an AST. - * @return {!TSyntacticCodeUnit} An array-like object representing an AST with its null, Boolean, and - * String values consolidated. - */ -// TODO(user) Consolidation of mathematical values found in numeric literals. -// TODO(user) Unconsolidation. -// TODO(user) Consolidation of ECMA-262 6th Edition programs. -// TODO(user) Rewrite in ECMA-262 6th Edition. -exports['ast_consolidate'] = function(oAbstractSyntaxTree) { - 'use strict'; - /*jshint bitwise:true, curly:true, eqeqeq:true, forin:true, immed:true, - latedef:true, newcap:true, noarge:true, noempty:true, nonew:true, - onevar:true, plusplus:true, regexp:true, undef:true, strict:true, - sub:false, trailing:true */ - - var _, - /** - * A record consisting of data about one or more source elements. - * @constructor - * @nosideeffects - */ - TSourceElementsData = function() { - /** - * The category of the elements. - * @type {number} - * @see ESourceElementCategories - */ - this.nCategory = ESourceElementCategories.N_OTHER; - /** - * The number of occurrences (within the elements) of each primitive - * value that could be consolidated. - * @type {!Array.>} - */ - this.aCount = []; - this.aCount[EPrimaryExpressionCategories.N_IDENTIFIER_NAMES] = {}; - this.aCount[EPrimaryExpressionCategories.N_STRING_LITERALS] = {}; - this.aCount[EPrimaryExpressionCategories.N_NULL_AND_BOOLEAN_LITERALS] = - {}; - /** - * Identifier names found within the elements. - * @type {!Array.} - */ - this.aIdentifiers = []; - /** - * Prefixed representation Strings of each primitive value that could be - * consolidated within the elements. - * @type {!Array.} - */ - this.aPrimitiveValues = []; - }, - /** - * A record consisting of data about a primitive value that could be - * consolidated. - * @constructor - * @nosideeffects - */ - TPrimitiveValue = function() { - /** - * The difference in the number of terminal symbols between the original - * source text and the one with the primitive value consolidated. If the - * difference is positive, the primitive value is considered worthwhile. - * @type {number} - */ - this.nSaving = 0; - /** - * An identifier name of the variable that will be declared and assigned - * the primitive value if the primitive value is consolidated. - * @type {string} - */ - this.sName = ''; - }, - /** - * A record consisting of data on what to consolidate within the range of - * source elements that is currently being considered. - * @constructor - * @nosideeffects - */ - TSolution = function() { - /** - * An object whose keys are prefixed representation Strings of each - * primitive value that could be consolidated within the elements and - * whose values are corresponding data about those primitive values. - * @type {!Object.} - * @see TPrimitiveValue - */ - this.oPrimitiveValues = {}; - /** - * The difference in the number of terminal symbols between the original - * source text and the one with all the worthwhile primitive values - * consolidated. - * @type {number} - * @see TPrimitiveValue#nSaving - */ - this.nSavings = 0; - }, - /** - * The processor of ASTs found - * in UglifyJS. - * @namespace - * @type {!TProcessor} - */ - oProcessor = (/** @type {!TProcessor} */ require('./process')), - /** - * A record consisting of a number of constants that represent the - * difference in the number of terminal symbols between a source text with - * a modified syntactic code unit and the original one. - * @namespace - * @type {!Object.} - */ - oWeights = { - /** - * The difference in the number of punctuators required by the bracket - * notation and the dot notation. - *

'[]'.length - '.'.length

- * @const - * @type {number} - */ - N_PROPERTY_ACCESSOR: 1, - /** - * The number of punctuators required by a variable declaration with an - * initialiser. - *

':'.length + ';'.length

- * @const - * @type {number} - */ - N_VARIABLE_DECLARATION: 2, - /** - * The number of terminal symbols required to introduce a variable - * statement (excluding its variable declaration list). - *

'var '.length

- * @const - * @type {number} - */ - N_VARIABLE_STATEMENT_AFFIXATION: 4, - /** - * The number of terminal symbols needed to enclose source elements - * within a function call with no argument values to a function with an - * empty parameter list. - *

'(function(){}());'.length

- * @const - * @type {number} - */ - N_CLOSURE: 17 - }, - /** - * Categories of primary expressions from which primitive values that - * could be consolidated are derivable. - * @namespace - * @enum {number} - */ - EPrimaryExpressionCategories = { - /** - * Identifier names used as property accessors. - * @type {number} - */ - N_IDENTIFIER_NAMES: 0, - /** - * String literals. - * @type {number} - */ - N_STRING_LITERALS: 1, - /** - * Null and Boolean literals. - * @type {number} - */ - N_NULL_AND_BOOLEAN_LITERALS: 2 - }, - /** - * Prefixes of primitive values that could be consolidated. - * The String values of the prefixes must have same number of characters. - * The prefixes must not be used in any properties defined in any version - * of ECMA-262. - * @namespace - * @enum {string} - */ - EValuePrefixes = { - /** - * Identifies String values. - * @type {string} - */ - S_STRING: '#S', - /** - * Identifies null and Boolean values. - * @type {string} - */ - S_SYMBOLIC: '#O' - }, - /** - * Categories of source elements in terms of their appropriateness of - * having their primitive values consolidated. - * @namespace - * @enum {number} - */ - ESourceElementCategories = { - /** - * Identifies a source element that includes the {@code with} statement. - * @type {number} - */ - N_WITH: 0, - /** - * Identifies a source element that includes the {@code eval} identifier name. - * @type {number} - */ - N_EVAL: 1, - /** - * Identifies a source element that must be excluded from the process - * unless its whole scope is examined. - * @type {number} - */ - N_EXCLUDABLE: 2, - /** - * Identifies source elements not posing any problems. - * @type {number} - */ - N_OTHER: 3 - }, - /** - * The list of literals (other than the String ones) whose primitive - * values can be consolidated. - * @const - * @type {!Array.} - */ - A_OTHER_SUBSTITUTABLE_LITERALS = [ - 'null', // The null literal. - 'false', // The Boolean literal {@code false}. - 'true' // The Boolean literal {@code true}. - ]; - - (/** - * Consolidates all worthwhile primitive values in a syntactic code unit. - * @param {!TSyntacticCodeUnit} oSyntacticCodeUnit An array-like object - * representing the branch of the abstract syntax tree representing the - * syntactic code unit along with its scope. - * @see TPrimitiveValue#nSaving - */ - function fExamineSyntacticCodeUnit(oSyntacticCodeUnit) { - var _, - /** - * Indicates whether the syntactic code unit represents global code. - * @type {boolean} - */ - bIsGlobal = 'toplevel' === oSyntacticCodeUnit[0], - /** - * Indicates whether the whole scope is being examined. - * @type {boolean} - */ - bIsWhollyExaminable = !bIsGlobal, - /** - * An array-like object representing source elements that constitute a - * syntactic code unit. - * @type {!TSyntacticCodeUnit} - */ - oSourceElements, - /** - * A record consisting of data about the source element that is - * currently being examined. - * @type {!TSourceElementsData} - */ - oSourceElementData, - /** - * The scope of the syntactic code unit. - * @type {!TScope} - */ - oScope, - /** - * An instance of an object that allows the traversal of an AST. - * @type {!TWalker} - */ - oWalker, - /** - * An object encompassing collections of functions used during the - * traversal of an AST. - * @namespace - * @type {!Object.>} - */ - oWalkers = { - /** - * A collection of functions used during the surveyance of source - * elements. - * @namespace - * @type {!Object.} - */ - oSurveySourceElement: { - /**#nocode+*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. Adds the identifier of the function and its formal - * parameters to the list of identifier names found. - * @param {string} sIdentifier The identifier of the function. - * @param {!Array.} aFormalParameterList Formal parameters. - * @param {!TSyntacticCodeUnit} oFunctionBody Function code. - */ - 'defun': function( - sIdentifier, - aFormalParameterList, - oFunctionBody) { - fClassifyAsExcludable(); - fAddIdentifier(sIdentifier); - aFormalParameterList.forEach(fAddIdentifier); - }, - /** - * Increments the count of the number of occurrences of the String - * value that is equivalent to the sequence of terminal symbols - * that constitute the encountered identifier name. - * @param {!TSyntacticCodeUnit} oExpression The nonterminal - * MemberExpression. - * @param {string} sIdentifierName The identifier name used as the - * property accessor. - * @return {!Array} The encountered branch of an AST with its nonterminal - * MemberExpression traversed. - */ - 'dot': function(oExpression, sIdentifierName) { - fCountPrimaryExpression( - EPrimaryExpressionCategories.N_IDENTIFIER_NAMES, - EValuePrefixes.S_STRING + sIdentifierName); - return ['dot', oWalker.walk(oExpression), sIdentifierName]; - }, - /** - * Adds the optional identifier of the function and its formal - * parameters to the list of identifier names found. - * @param {?string} sIdentifier The optional identifier of the - * function. - * @param {!Array.} aFormalParameterList Formal parameters. - * @param {!TSyntacticCodeUnit} oFunctionBody Function code. - */ - 'function': function( - sIdentifier, - aFormalParameterList, - oFunctionBody) { - if ('string' === typeof sIdentifier) { - fAddIdentifier(sIdentifier); - } - aFormalParameterList.forEach(fAddIdentifier); - }, - /** - * Either increments the count of the number of occurrences of the - * encountered null or Boolean value or classifies a source element - * as containing the {@code eval} identifier name. - * @param {string} sIdentifier The identifier encountered. - */ - 'name': function(sIdentifier) { - if (-1 !== A_OTHER_SUBSTITUTABLE_LITERALS.indexOf(sIdentifier)) { - fCountPrimaryExpression( - EPrimaryExpressionCategories.N_NULL_AND_BOOLEAN_LITERALS, - EValuePrefixes.S_SYMBOLIC + sIdentifier); - } else { - if ('eval' === sIdentifier) { - oSourceElementData.nCategory = - ESourceElementCategories.N_EVAL; - } - fAddIdentifier(sIdentifier); - } - }, - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. - * @param {TSyntacticCodeUnit} oExpression The expression whose - * value is to be returned. - */ - 'return': function(oExpression) { - fClassifyAsExcludable(); - }, - /** - * Increments the count of the number of occurrences of the - * encountered String value. - * @param {string} sStringValue The String value of the string - * literal encountered. - */ - 'string': function(sStringValue) { - if (sStringValue.length > 0) { - fCountPrimaryExpression( - EPrimaryExpressionCategories.N_STRING_LITERALS, - EValuePrefixes.S_STRING + sStringValue); - } - }, - /** - * Adds the identifier reserved for an exception to the list of - * identifier names found. - * @param {!TSyntacticCodeUnit} oTry A block of code in which an - * exception can occur. - * @param {Array} aCatch The identifier reserved for an exception - * and a block of code to handle the exception. - * @param {TSyntacticCodeUnit} oFinally An optional block of code - * to be evaluated regardless of whether an exception occurs. - */ - 'try': function(oTry, aCatch, oFinally) { - if (Array.isArray(aCatch)) { - fAddIdentifier(aCatch[0]); - } - }, - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. Adds the identifier of each declared variable to the list - * of identifier names found. - * @param {!Array.} aVariableDeclarationList Variable - * declarations. - */ - 'var': function(aVariableDeclarationList) { - fClassifyAsExcludable(); - aVariableDeclarationList.forEach(fAddVariable); - }, - /** - * Classifies a source element as containing the {@code with} - * statement. - * @param {!TSyntacticCodeUnit} oExpression An expression whose - * value is to be converted to a value of type Object and - * become the binding object of a new object environment - * record of a new lexical environment in which the statement - * is to be executed. - * @param {!TSyntacticCodeUnit} oStatement The statement to be - * executed in the augmented lexical environment. - * @return {!Array} An empty array to stop the traversal. - */ - 'with': function(oExpression, oStatement) { - oSourceElementData.nCategory = ESourceElementCategories.N_WITH; - return []; - } - /**#nocode-*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - }, - /** - * A collection of functions used while looking for nested functions. - * @namespace - * @type {!Object.} - */ - oExamineFunctions: { - /**#nocode+*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - /** - * Orders an examination of a nested function declaration. - * @this {!TSyntacticCodeUnit} An array-like object representing - * the branch of an AST representing the syntactic code unit along with - * its scope. - * @return {!Array} An empty array to stop the traversal. - */ - 'defun': function() { - fExamineSyntacticCodeUnit(this); - return []; - }, - /** - * Orders an examination of a nested function expression. - * @this {!TSyntacticCodeUnit} An array-like object representing - * the branch of an AST representing the syntactic code unit along with - * its scope. - * @return {!Array} An empty array to stop the traversal. - */ - 'function': function() { - fExamineSyntacticCodeUnit(this); - return []; - } - /**#nocode-*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - } - }, - /** - * Records containing data about source elements. - * @type {Array.} - */ - aSourceElementsData = [], - /** - * The index (in the source text order) of the source element - * immediately following a Directive Prologue. - * @type {number} - */ - nAfterDirectivePrologue = 0, - /** - * The index (in the source text order) of the source element that is - * currently being considered. - * @type {number} - */ - nPosition, - /** - * The index (in the source text order) of the source element that is - * the last element of the range of source elements that is currently - * being considered. - * @type {(undefined|number)} - */ - nTo, - /** - * Initiates the traversal of a source element. - * @param {!TWalker} oWalker An instance of an object that allows the - * traversal of an abstract syntax tree. - * @param {!TSyntacticCodeUnit} oSourceElement A source element from - * which the traversal should commence. - * @return {function(): !TSyntacticCodeUnit} A function that is able to - * initiate the traversal from a given source element. - */ - cContext = function(oWalker, oSourceElement) { - /** - * @return {!TSyntacticCodeUnit} A function that is able to - * initiate the traversal from a given source element. - */ - var fLambda = function() { - return oWalker.walk(oSourceElement); - }; - - return fLambda; - }, - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. - */ - fClassifyAsExcludable = function() { - if (oSourceElementData.nCategory === - ESourceElementCategories.N_OTHER) { - oSourceElementData.nCategory = - ESourceElementCategories.N_EXCLUDABLE; - } - }, - /** - * Adds an identifier to the list of identifier names found. - * @param {string} sIdentifier The identifier to be added. - */ - fAddIdentifier = function(sIdentifier) { - if (-1 === oSourceElementData.aIdentifiers.indexOf(sIdentifier)) { - oSourceElementData.aIdentifiers.push(sIdentifier); - } - }, - /** - * Adds the identifier of a variable to the list of identifier names - * found. - * @param {!Array} aVariableDeclaration A variable declaration. - */ - fAddVariable = function(aVariableDeclaration) { - fAddIdentifier(/** @type {string} */ aVariableDeclaration[0]); - }, - /** - * Increments the count of the number of occurrences of the prefixed - * String representation attributed to the primary expression. - * @param {number} nCategory The category of the primary expression. - * @param {string} sName The prefixed String representation attributed - * to the primary expression. - */ - fCountPrimaryExpression = function(nCategory, sName) { - if (!oSourceElementData.aCount[nCategory].hasOwnProperty(sName)) { - oSourceElementData.aCount[nCategory][sName] = 0; - if (-1 === oSourceElementData.aPrimitiveValues.indexOf(sName)) { - oSourceElementData.aPrimitiveValues.push(sName); - } - } - oSourceElementData.aCount[nCategory][sName] += 1; - }, - /** - * Consolidates all worthwhile primitive values in a range of source - * elements. - * @param {number} nFrom The index (in the source text order) of the - * source element that is the first element of the range. - * @param {number} nTo The index (in the source text order) of the - * source element that is the last element of the range. - * @param {boolean} bEnclose Indicates whether the range should be - * enclosed within a function call with no argument values to a - * function with an empty parameter list if any primitive values - * are consolidated. - * @see TPrimitiveValue#nSaving - */ - fExamineSourceElements = function(nFrom, nTo, bEnclose) { - var _, - /** - * The index of the last mangled name. - * @type {number} - */ - nIndex = oScope.cname, - /** - * The index of the source element that is currently being - * considered. - * @type {number} - */ - nPosition, - /** - * A collection of functions used during the consolidation of - * primitive values and identifier names used as property - * accessors. - * @namespace - * @type {!Object.} - */ - oWalkersTransformers = { - /** - * If the String value that is equivalent to the sequence of - * terminal symbols that constitute the encountered identifier - * name is worthwhile, a syntactic conversion from the dot - * notation to the bracket notation ensues with that sequence - * being substituted by an identifier name to which the value - * is assigned. - * Applies to property accessors that use the dot notation. - * @param {!TSyntacticCodeUnit} oExpression The nonterminal - * MemberExpression. - * @param {string} sIdentifierName The identifier name used as - * the property accessor. - * @return {!Array} A syntactic code unit that is equivalent to - * the one encountered. - * @see TPrimitiveValue#nSaving - */ - 'dot': function(oExpression, sIdentifierName) { - /** - * The prefixed String value that is equivalent to the - * sequence of terminal symbols that constitute the - * encountered identifier name. - * @type {string} - */ - var sPrefixed = EValuePrefixes.S_STRING + sIdentifierName; - - return oSolutionBest.oPrimitiveValues.hasOwnProperty( - sPrefixed) && - oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0 ? - ['sub', - oWalker.walk(oExpression), - ['name', - oSolutionBest.oPrimitiveValues[sPrefixed].sName]] : - ['dot', oWalker.walk(oExpression), sIdentifierName]; - }, - /** - * If the encountered identifier is a null or Boolean literal - * and its value is worthwhile, the identifier is substituted - * by an identifier name to which that value is assigned. - * Applies to identifier names. - * @param {string} sIdentifier The identifier encountered. - * @return {!Array} A syntactic code unit that is equivalent to - * the one encountered. - * @see TPrimitiveValue#nSaving - */ - 'name': function(sIdentifier) { - /** - * The prefixed representation String of the identifier. - * @type {string} - */ - var sPrefixed = EValuePrefixes.S_SYMBOLIC + sIdentifier; - - return [ - 'name', - oSolutionBest.oPrimitiveValues.hasOwnProperty(sPrefixed) && - oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0 ? - oSolutionBest.oPrimitiveValues[sPrefixed].sName : - sIdentifier - ]; - }, - /** - * If the encountered String value is worthwhile, it is - * substituted by an identifier name to which that value is - * assigned. - * Applies to String values. - * @param {string} sStringValue The String value of the string - * literal encountered. - * @return {!Array} A syntactic code unit that is equivalent to - * the one encountered. - * @see TPrimitiveValue#nSaving - */ - 'string': function(sStringValue) { - /** - * The prefixed representation String of the primitive value - * of the literal. - * @type {string} - */ - var sPrefixed = - EValuePrefixes.S_STRING + sStringValue; - - return oSolutionBest.oPrimitiveValues.hasOwnProperty( - sPrefixed) && - oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0 ? - ['name', - oSolutionBest.oPrimitiveValues[sPrefixed].sName] : - ['string', sStringValue]; - } - }, - /** - * Such data on what to consolidate within the range of source - * elements that is currently being considered that lead to the - * greatest known reduction of the number of the terminal symbols - * in comparison to the original source text. - * @type {!TSolution} - */ - oSolutionBest = new TSolution(), - /** - * Data representing an ongoing attempt to find a better - * reduction of the number of the terminal symbols in comparison - * to the original source text than the best one that is - * currently known. - * @type {!TSolution} - * @see oSolutionBest - */ - oSolutionCandidate = new TSolution(), - /** - * A record consisting of data about the range of source elements - * that is currently being examined. - * @type {!TSourceElementsData} - */ - oSourceElementsData = new TSourceElementsData(), - /** - * Variable declarations for each primitive value that is to be - * consolidated within the elements. - * @type {!Array.} - */ - aVariableDeclarations = [], - /** - * Augments a list with a prefixed representation String. - * @param {!Array.} aList A list that is to be augmented. - * @return {function(string)} A function that augments a list - * with a prefixed representation String. - */ - cAugmentList = function(aList) { - /** - * @param {string} sPrefixed Prefixed representation String of - * a primitive value that could be consolidated within the - * elements. - */ - var fLambda = function(sPrefixed) { - if (-1 === aList.indexOf(sPrefixed)) { - aList.push(sPrefixed); - } - }; - - return fLambda; - }, - /** - * Adds the number of occurrences of a primitive value of a given - * category that could be consolidated in the source element with - * a given index to the count of occurrences of that primitive - * value within the range of source elements that is currently - * being considered. - * @param {number} nPosition The index (in the source text order) - * of a source element. - * @param {number} nCategory The category of the primary - * expression from which the primitive value is derived. - * @return {function(string)} A function that performs the - * addition. - * @see cAddOccurrencesInCategory - */ - cAddOccurrences = function(nPosition, nCategory) { - /** - * @param {string} sPrefixed The prefixed representation String - * of a primitive value. - */ - var fLambda = function(sPrefixed) { - if (!oSourceElementsData.aCount[nCategory].hasOwnProperty( - sPrefixed)) { - oSourceElementsData.aCount[nCategory][sPrefixed] = 0; - } - oSourceElementsData.aCount[nCategory][sPrefixed] += - aSourceElementsData[nPosition].aCount[nCategory][ - sPrefixed]; - }; - - return fLambda; - }, - /** - * Adds the number of occurrences of each primitive value of a - * given category that could be consolidated in the source - * element with a given index to the count of occurrences of that - * primitive values within the range of source elements that is - * currently being considered. - * @param {number} nPosition The index (in the source text order) - * of a source element. - * @return {function(number)} A function that performs the - * addition. - * @see fAddOccurrences - */ - cAddOccurrencesInCategory = function(nPosition) { - /** - * @param {number} nCategory The category of the primary - * expression from which the primitive value is derived. - */ - var fLambda = function(nCategory) { - Object.keys( - aSourceElementsData[nPosition].aCount[nCategory] - ).forEach(cAddOccurrences(nPosition, nCategory)); - }; - - return fLambda; - }, - /** - * Adds the number of occurrences of each primitive value that - * could be consolidated in the source element with a given index - * to the count of occurrences of that primitive values within - * the range of source elements that is currently being - * considered. - * @param {number} nPosition The index (in the source text order) - * of a source element. - */ - fAddOccurrences = function(nPosition) { - Object.keys(aSourceElementsData[nPosition].aCount).forEach( - cAddOccurrencesInCategory(nPosition)); - }, - /** - * Creates a variable declaration for a primitive value if that - * primitive value is to be consolidated within the elements. - * @param {string} sPrefixed Prefixed representation String of a - * primitive value that could be consolidated within the - * elements. - * @see aVariableDeclarations - */ - cAugmentVariableDeclarations = function(sPrefixed) { - if (oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0) { - aVariableDeclarations.push([ - oSolutionBest.oPrimitiveValues[sPrefixed].sName, - [0 === sPrefixed.indexOf(EValuePrefixes.S_SYMBOLIC) ? - 'name' : 'string', - sPrefixed.substring(EValuePrefixes.S_SYMBOLIC.length)] - ]); - } - }, - /** - * Sorts primitive values with regard to the difference in the - * number of terminal symbols between the original source text - * and the one with those primitive values consolidated. - * @param {string} sPrefixed0 The prefixed representation String - * of the first of the two primitive values that are being - * compared. - * @param {string} sPrefixed1 The prefixed representation String - * of the second of the two primitive values that are being - * compared. - * @return {number} - *
- *
-1
- *
if the first primitive value must be placed before - * the other one,
- *
0
- *
if the first primitive value may be placed before - * the other one,
- *
1
- *
if the first primitive value must not be placed - * before the other one.
- *
- * @see TSolution.oPrimitiveValues - */ - cSortPrimitiveValues = function(sPrefixed0, sPrefixed1) { - /** - * The difference between: - *
    - *
  1. the difference in the number of terminal symbols - * between the original source text and the one with the - * first primitive value consolidated, and
  2. - *
  3. the difference in the number of terminal symbols - * between the original source text and the one with the - * second primitive value consolidated.
  4. - *
- * @type {number} - */ - var nDifference = - oSolutionCandidate.oPrimitiveValues[sPrefixed0].nSaving - - oSolutionCandidate.oPrimitiveValues[sPrefixed1].nSaving; - - return nDifference > 0 ? -1 : nDifference < 0 ? 1 : 0; - }, - /** - * Assigns an identifier name to a primitive value and calculates - * whether instances of that primitive value are worth - * consolidating. - * @param {string} sPrefixed The prefixed representation String - * of a primitive value that is being evaluated. - */ - fEvaluatePrimitiveValue = function(sPrefixed) { - var _, - /** - * The index of the last mangled name. - * @type {number} - */ - nIndex, - /** - * The representation String of the primitive value that is - * being evaluated. - * @type {string} - */ - sName = - sPrefixed.substring(EValuePrefixes.S_SYMBOLIC.length), - /** - * The number of source characters taken up by the - * representation String of the primitive value that is - * being evaluated. - * @type {number} - */ - nLengthOriginal = sName.length, - /** - * The number of source characters taken up by the - * identifier name that could substitute the primitive - * value that is being evaluated. - * substituted. - * @type {number} - */ - nLengthSubstitution, - /** - * The number of source characters taken up by by the - * representation String of the primitive value that is - * being evaluated when it is represented by a string - * literal. - * @type {number} - */ - nLengthString = oProcessor.make_string(sName).length; - - oSolutionCandidate.oPrimitiveValues[sPrefixed] = - new TPrimitiveValue(); - do { // Find an identifier unused in this or any nested scope. - nIndex = oScope.cname; - oSolutionCandidate.oPrimitiveValues[sPrefixed].sName = - oScope.next_mangled(); - } while (-1 !== oSourceElementsData.aIdentifiers.indexOf( - oSolutionCandidate.oPrimitiveValues[sPrefixed].sName)); - nLengthSubstitution = oSolutionCandidate.oPrimitiveValues[ - sPrefixed].sName.length; - if (0 === sPrefixed.indexOf(EValuePrefixes.S_SYMBOLIC)) { - // foo:null, or foo:null; - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving -= - nLengthSubstitution + nLengthOriginal + - oWeights.N_VARIABLE_DECLARATION; - // null vs foo - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving += - oSourceElementsData.aCount[ - EPrimaryExpressionCategories. - N_NULL_AND_BOOLEAN_LITERALS][sPrefixed] * - (nLengthOriginal - nLengthSubstitution); - } else { - // foo:'fromCharCode'; - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving -= - nLengthSubstitution + nLengthString + - oWeights.N_VARIABLE_DECLARATION; - // .fromCharCode vs [foo] - if (oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_IDENTIFIER_NAMES - ].hasOwnProperty(sPrefixed)) { - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving += - oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_IDENTIFIER_NAMES - ][sPrefixed] * - (nLengthOriginal - nLengthSubstitution - - oWeights.N_PROPERTY_ACCESSOR); - } - // 'fromCharCode' vs foo - if (oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_STRING_LITERALS - ].hasOwnProperty(sPrefixed)) { - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving += - oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_STRING_LITERALS - ][sPrefixed] * - (nLengthString - nLengthSubstitution); - } - } - if (oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving > - 0) { - oSolutionCandidate.nSavings += - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving; - } else { - oScope.cname = nIndex; // Free the identifier name. - } - }, - /** - * Adds a variable declaration to an existing variable statement. - * @param {!Array} aVariableDeclaration A variable declaration - * with an initialiser. - */ - cAddVariableDeclaration = function(aVariableDeclaration) { - (/** @type {!Array} */ oSourceElements[nFrom][1]).unshift( - aVariableDeclaration); - }; - - if (nFrom > nTo) { - return; - } - // If the range is a closure, reuse the closure. - if (nFrom === nTo && - 'stat' === oSourceElements[nFrom][0] && - 'call' === oSourceElements[nFrom][1][0] && - 'function' === oSourceElements[nFrom][1][1][0]) { - fExamineSyntacticCodeUnit(oSourceElements[nFrom][1][1]); - return; - } - // Create a list of all derived primitive values within the range. - for (nPosition = nFrom; nPosition <= nTo; nPosition += 1) { - aSourceElementsData[nPosition].aPrimitiveValues.forEach( - cAugmentList(oSourceElementsData.aPrimitiveValues)); - } - if (0 === oSourceElementsData.aPrimitiveValues.length) { - return; - } - for (nPosition = nFrom; nPosition <= nTo; nPosition += 1) { - // Add the number of occurrences to the total count. - fAddOccurrences(nPosition); - // Add identifiers of this or any nested scope to the list. - aSourceElementsData[nPosition].aIdentifiers.forEach( - cAugmentList(oSourceElementsData.aIdentifiers)); - } - // Distribute identifier names among derived primitive values. - do { // If there was any progress, find a better distribution. - oSolutionBest = oSolutionCandidate; - if (Object.keys(oSolutionCandidate.oPrimitiveValues).length > 0) { - // Sort primitive values descending by their worthwhileness. - oSourceElementsData.aPrimitiveValues.sort(cSortPrimitiveValues); - } - oSolutionCandidate = new TSolution(); - oSourceElementsData.aPrimitiveValues.forEach( - fEvaluatePrimitiveValue); - oScope.cname = nIndex; - } while (oSolutionCandidate.nSavings > oSolutionBest.nSavings); - // Take the necessity of adding a variable statement into account. - if ('var' !== oSourceElements[nFrom][0]) { - oSolutionBest.nSavings -= oWeights.N_VARIABLE_STATEMENT_AFFIXATION; - } - if (bEnclose) { - // Take the necessity of forming a closure into account. - oSolutionBest.nSavings -= oWeights.N_CLOSURE; - } - if (oSolutionBest.nSavings > 0) { - // Create variable declarations suitable for UglifyJS. - Object.keys(oSolutionBest.oPrimitiveValues).forEach( - cAugmentVariableDeclarations); - // Rewrite expressions that contain worthwhile primitive values. - for (nPosition = nFrom; nPosition <= nTo; nPosition += 1) { - oWalker = oProcessor.ast_walker(); - oSourceElements[nPosition] = - oWalker.with_walkers( - oWalkersTransformers, - cContext(oWalker, oSourceElements[nPosition])); - } - if ('var' === oSourceElements[nFrom][0]) { // Reuse the statement. - (/** @type {!Array.} */ aVariableDeclarations.reverse( - )).forEach(cAddVariableDeclaration); - } else { // Add a variable statement. - Array.prototype.splice.call( - oSourceElements, - nFrom, - 0, - ['var', aVariableDeclarations]); - nTo += 1; - } - if (bEnclose) { - // Add a closure. - Array.prototype.splice.call( - oSourceElements, - nFrom, - 0, - ['stat', ['call', ['function', null, [], []], []]]); - // Copy source elements into the closure. - for (nPosition = nTo + 1; nPosition > nFrom; nPosition -= 1) { - Array.prototype.unshift.call( - oSourceElements[nFrom][1][1][3], - oSourceElements[nPosition]); - } - // Remove source elements outside the closure. - Array.prototype.splice.call( - oSourceElements, - nFrom + 1, - nTo - nFrom + 1); - } - } - if (bEnclose) { - // Restore the availability of identifier names. - oScope.cname = nIndex; - } - }; - - oSourceElements = (/** @type {!TSyntacticCodeUnit} */ - oSyntacticCodeUnit[bIsGlobal ? 1 : 3]); - if (0 === oSourceElements.length) { - return; - } - oScope = bIsGlobal ? oSyntacticCodeUnit.scope : oSourceElements.scope; - // Skip a Directive Prologue. - while (nAfterDirectivePrologue < oSourceElements.length && - 'directive' === oSourceElements[nAfterDirectivePrologue][0]) { - nAfterDirectivePrologue += 1; - aSourceElementsData.push(null); - } - if (oSourceElements.length === nAfterDirectivePrologue) { - return; - } - for (nPosition = nAfterDirectivePrologue; - nPosition < oSourceElements.length; - nPosition += 1) { - oSourceElementData = new TSourceElementsData(); - oWalker = oProcessor.ast_walker(); - // Classify a source element. - // Find its derived primitive values and count their occurrences. - // Find all identifiers used (including nested scopes). - oWalker.with_walkers( - oWalkers.oSurveySourceElement, - cContext(oWalker, oSourceElements[nPosition])); - // Establish whether the scope is still wholly examinable. - bIsWhollyExaminable = bIsWhollyExaminable && - ESourceElementCategories.N_WITH !== oSourceElementData.nCategory && - ESourceElementCategories.N_EVAL !== oSourceElementData.nCategory; - aSourceElementsData.push(oSourceElementData); - } - if (bIsWhollyExaminable) { // Examine the whole scope. - fExamineSourceElements( - nAfterDirectivePrologue, - oSourceElements.length - 1, - false); - } else { // Examine unexcluded ranges of source elements. - for (nPosition = oSourceElements.length - 1; - nPosition >= nAfterDirectivePrologue; - nPosition -= 1) { - oSourceElementData = (/** @type {!TSourceElementsData} */ - aSourceElementsData[nPosition]); - if (ESourceElementCategories.N_OTHER === - oSourceElementData.nCategory) { - if ('undefined' === typeof nTo) { - nTo = nPosition; // Indicate the end of a range. - } - // Examine the range if it immediately follows a Directive Prologue. - if (nPosition === nAfterDirectivePrologue) { - fExamineSourceElements(nPosition, nTo, true); - } - } else { - if ('undefined' !== typeof nTo) { - // Examine the range that immediately follows this source element. - fExamineSourceElements(nPosition + 1, nTo, true); - nTo = void 0; // Obliterate the range. - } - // Examine nested functions. - oWalker = oProcessor.ast_walker(); - oWalker.with_walkers( - oWalkers.oExamineFunctions, - cContext(oWalker, oSourceElements[nPosition])); - } - } - } - }(oAbstractSyntaxTree = oProcessor.ast_add_scope(oAbstractSyntaxTree))); - return oAbstractSyntaxTree; -}; -/*jshint sub:false */ - -/* Local Variables: */ -/* mode: js */ -/* coding: utf-8 */ -/* indent-tabs-mode: nil */ -/* tab-width: 2 */ -/* End: */ -/* vim: set ft=javascript fenc=utf-8 et ts=2 sts=2 sw=2: */ -/* :mode=javascript:noTabs=true:tabSize=2:indentSize=2:deepIndent=true: */ -}); -define('uglifyjs/parse-js', ["exports"], function(exports) { -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - - This version is suitable for Node.js. With minimal changes (the - exports stuff) it should work on any JS platform. - - This file contains the tokenizer/parser. It is a port to JavaScript - of parse-js [1], a JavaScript parser library written in Common Lisp - by Marijn Haverbeke. Thank you Marijn! - - [1] http://marijn.haverbeke.nl/parse-js/ - - Exported functions: - - - tokenizer(code) -- returns a function. Call the returned - function to fetch the next token. - - - parse(code) -- returns an AST of the given JavaScript code. - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2010 (c) Mihai Bazon - Based on parse-js (http://marijn.haverbeke.nl/parse-js/). - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -/* -----[ Tokenizer (constants) ]----- */ - -var KEYWORDS = array_to_hash([ - "break", - "case", - "catch", - "const", - "continue", - "debugger", - "default", - "delete", - "do", - "else", - "finally", - "for", - "function", - "if", - "in", - "instanceof", - "new", - "return", - "switch", - "throw", - "try", - "typeof", - "var", - "void", - "while", - "with" -]); - -var RESERVED_WORDS = array_to_hash([ - "abstract", - "boolean", - "byte", - "char", - "class", - "double", - "enum", - "export", - "extends", - "final", - "float", - "goto", - "implements", - "import", - "int", - "interface", - "long", - "native", - "package", - "private", - "protected", - "public", - "short", - "static", - "super", - "synchronized", - "throws", - "transient", - "volatile" -]); - -var KEYWORDS_BEFORE_EXPRESSION = array_to_hash([ - "return", - "new", - "delete", - "throw", - "else", - "case" -]); - -var KEYWORDS_ATOM = array_to_hash([ - "false", - "null", - "true", - "undefined" -]); - -var OPERATOR_CHARS = array_to_hash(characters("+-*&%=<>!?|~^")); - -var RE_HEX_NUMBER = /^0x[0-9a-f]+$/i; -var RE_OCT_NUMBER = /^0[0-7]+$/; -var RE_DEC_NUMBER = /^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i; - -var OPERATORS = array_to_hash([ - "in", - "instanceof", - "typeof", - "new", - "void", - "delete", - "++", - "--", - "+", - "-", - "!", - "~", - "&", - "|", - "^", - "*", - "/", - "%", - ">>", - "<<", - ">>>", - "<", - ">", - "<=", - ">=", - "==", - "===", - "!=", - "!==", - "?", - "=", - "+=", - "-=", - "/=", - "*=", - "%=", - ">>=", - "<<=", - ">>>=", - "|=", - "^=", - "&=", - "&&", - "||" -]); - -var WHITESPACE_CHARS = array_to_hash(characters(" \u00a0\n\r\t\f\u000b\u200b\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\uFEFF")); - -var PUNC_BEFORE_EXPRESSION = array_to_hash(characters("[{(,.;:")); - -var PUNC_CHARS = array_to_hash(characters("[]{}(),;:")); - -var REGEXP_MODIFIERS = array_to_hash(characters("gmsiy")); - -/* -----[ Tokenizer ]----- */ - -var UNICODE = { // Unicode 6.1 - letter: new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), - combining_mark: new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C01-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C82\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D02\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"), - connector_punctuation: new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]"), - digit: new RegExp("[\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]") -}; - -function is_letter(ch) { - return UNICODE.letter.test(ch); -}; - -function is_digit(ch) { - ch = ch.charCodeAt(0); - return ch >= 48 && ch <= 57; -}; - -function is_unicode_digit(ch) { - return UNICODE.digit.test(ch); -} - -function is_alphanumeric_char(ch) { - return is_digit(ch) || is_letter(ch); -}; - -function is_unicode_combining_mark(ch) { - return UNICODE.combining_mark.test(ch); -}; - -function is_unicode_connector_punctuation(ch) { - return UNICODE.connector_punctuation.test(ch); -}; - -function is_identifier_start(ch) { - return ch == "$" || ch == "_" || is_letter(ch); -}; - -function is_identifier_char(ch) { - return is_identifier_start(ch) - || is_unicode_combining_mark(ch) - || is_unicode_digit(ch) - || is_unicode_connector_punctuation(ch) - || ch == "\u200c" // zero-width non-joiner - || ch == "\u200d" // zero-width joiner (in my ECMA-262 PDF, this is also 200c) - ; -}; - -function parse_js_number(num) { - if (RE_HEX_NUMBER.test(num)) { - return parseInt(num.substr(2), 16); - } else if (RE_OCT_NUMBER.test(num)) { - return parseInt(num.substr(1), 8); - } else if (RE_DEC_NUMBER.test(num)) { - return parseFloat(num); - } -}; - -function JS_Parse_Error(message, line, col, pos) { - this.message = message; - this.line = line + 1; - this.col = col + 1; - this.pos = pos + 1; - this.stack = new Error().stack; -}; - -JS_Parse_Error.prototype.toString = function() { - return this.message + " (line: " + this.line + ", col: " + this.col + ", pos: " + this.pos + ")" + "\n\n" + this.stack; -}; - -function js_error(message, line, col, pos) { - throw new JS_Parse_Error(message, line, col, pos); -}; - -function is_token(token, type, val) { - return token.type == type && (val == null || token.value == val); -}; - -var EX_EOF = {}; - -function tokenizer($TEXT) { - - var S = { - text : $TEXT.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/^\uFEFF/, ''), - pos : 0, - tokpos : 0, - line : 0, - tokline : 0, - col : 0, - tokcol : 0, - newline_before : false, - regex_allowed : false, - comments_before : [] - }; - - function peek() { return S.text.charAt(S.pos); }; - - function next(signal_eof, in_string) { - var ch = S.text.charAt(S.pos++); - if (signal_eof && !ch) - throw EX_EOF; - if (ch == "\n") { - S.newline_before = S.newline_before || !in_string; - ++S.line; - S.col = 0; - } else { - ++S.col; - } - return ch; - }; - - function eof() { - return !S.peek(); - }; - - function find(what, signal_eof) { - var pos = S.text.indexOf(what, S.pos); - if (signal_eof && pos == -1) throw EX_EOF; - return pos; - }; - - function start_token() { - S.tokline = S.line; - S.tokcol = S.col; - S.tokpos = S.pos; - }; - - function token(type, value, is_comment) { - S.regex_allowed = ((type == "operator" && !HOP(UNARY_POSTFIX, value)) || - (type == "keyword" && HOP(KEYWORDS_BEFORE_EXPRESSION, value)) || - (type == "punc" && HOP(PUNC_BEFORE_EXPRESSION, value))); - var ret = { - type : type, - value : value, - line : S.tokline, - col : S.tokcol, - pos : S.tokpos, - endpos : S.pos, - nlb : S.newline_before - }; - if (!is_comment) { - ret.comments_before = S.comments_before; - S.comments_before = []; - // make note of any newlines in the comments that came before - for (var i = 0, len = ret.comments_before.length; i < len; i++) { - ret.nlb = ret.nlb || ret.comments_before[i].nlb; - } - } - S.newline_before = false; - return ret; - }; - - function skip_whitespace() { - while (HOP(WHITESPACE_CHARS, peek())) - next(); - }; - - function read_while(pred) { - var ret = "", ch = peek(), i = 0; - while (ch && pred(ch, i++)) { - ret += next(); - ch = peek(); - } - return ret; - }; - - function parse_error(err) { - js_error(err, S.tokline, S.tokcol, S.tokpos); - }; - - function read_num(prefix) { - var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; - var num = read_while(function(ch, i){ - if (ch == "x" || ch == "X") { - if (has_x) return false; - return has_x = true; - } - if (!has_x && (ch == "E" || ch == "e")) { - if (has_e) return false; - return has_e = after_e = true; - } - if (ch == "-") { - if (after_e || (i == 0 && !prefix)) return true; - return false; - } - if (ch == "+") return after_e; - after_e = false; - if (ch == ".") { - if (!has_dot && !has_x && !has_e) - return has_dot = true; - return false; - } - return is_alphanumeric_char(ch); - }); - if (prefix) - num = prefix + num; - var valid = parse_js_number(num); - if (!isNaN(valid)) { - return token("num", valid); - } else { - parse_error("Invalid syntax: " + num); - } - }; - - function read_escaped_char(in_string) { - var ch = next(true, in_string); - switch (ch) { - case "n" : return "\n"; - case "r" : return "\r"; - case "t" : return "\t"; - case "b" : return "\b"; - case "v" : return "\u000b"; - case "f" : return "\f"; - case "0" : return "\0"; - case "x" : return String.fromCharCode(hex_bytes(2)); - case "u" : return String.fromCharCode(hex_bytes(4)); - case "\n": return ""; - default : return ch; - } - }; - - function hex_bytes(n) { - var num = 0; - for (; n > 0; --n) { - var digit = parseInt(next(true), 16); - if (isNaN(digit)) - parse_error("Invalid hex-character pattern in string"); - num = (num << 4) | digit; - } - return num; - }; - - function read_string() { - return with_eof_error("Unterminated string constant", function(){ - var quote = next(), ret = ""; - for (;;) { - var ch = next(true); - if (ch == "\\") { - // read OctalEscapeSequence (XXX: deprecated if "strict mode") - // https://github.com/mishoo/UglifyJS/issues/178 - var octal_len = 0, first = null; - ch = read_while(function(ch){ - if (ch >= "0" && ch <= "7") { - if (!first) { - first = ch; - return ++octal_len; - } - else if (first <= "3" && octal_len <= 2) return ++octal_len; - else if (first >= "4" && octal_len <= 1) return ++octal_len; - } - return false; - }); - if (octal_len > 0) ch = String.fromCharCode(parseInt(ch, 8)); - else ch = read_escaped_char(true); - } - else if (ch == quote) break; - else if (ch == "\n") throw EX_EOF; - ret += ch; - } - return token("string", ret); - }); - }; - - function read_line_comment() { - next(); - var i = find("\n"), ret; - if (i == -1) { - ret = S.text.substr(S.pos); - S.pos = S.text.length; - } else { - ret = S.text.substring(S.pos, i); - S.pos = i; - } - return token("comment1", ret, true); - }; - - function read_multiline_comment() { - next(); - return with_eof_error("Unterminated multiline comment", function(){ - var i = find("*/", true), - text = S.text.substring(S.pos, i); - S.pos = i + 2; - S.line += text.split("\n").length - 1; - S.newline_before = S.newline_before || text.indexOf("\n") >= 0; - - // https://github.com/mishoo/UglifyJS/issues/#issue/100 - if (/^@cc_on/i.test(text)) { - warn("WARNING: at line " + S.line); - warn("*** Found \"conditional comment\": " + text); - warn("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer."); - } - - return token("comment2", text, true); - }); - }; - - function read_name() { - var backslash = false, name = "", ch, escaped = false, hex; - while ((ch = peek()) != null) { - if (!backslash) { - if (ch == "\\") escaped = backslash = true, next(); - else if (is_identifier_char(ch)) name += next(); - else break; - } - else { - if (ch != "u") parse_error("Expecting UnicodeEscapeSequence -- uXXXX"); - ch = read_escaped_char(); - if (!is_identifier_char(ch)) parse_error("Unicode char: " + ch.charCodeAt(0) + " is not valid in identifier"); - name += ch; - backslash = false; - } - } - if (HOP(KEYWORDS, name) && escaped) { - hex = name.charCodeAt(0).toString(16).toUpperCase(); - name = "\\u" + "0000".substr(hex.length) + hex + name.slice(1); - } - return name; - }; - - function read_regexp(regexp) { - return with_eof_error("Unterminated regular expression", function(){ - var prev_backslash = false, ch, in_class = false; - while ((ch = next(true))) if (prev_backslash) { - regexp += "\\" + ch; - prev_backslash = false; - } else if (ch == "[") { - in_class = true; - regexp += ch; - } else if (ch == "]" && in_class) { - in_class = false; - regexp += ch; - } else if (ch == "/" && !in_class) { - break; - } else if (ch == "\\") { - prev_backslash = true; - } else { - regexp += ch; - } - var mods = read_name(); - return token("regexp", [ regexp, mods ]); - }); - }; - - function read_operator(prefix) { - function grow(op) { - if (!peek()) return op; - var bigger = op + peek(); - if (HOP(OPERATORS, bigger)) { - next(); - return grow(bigger); - } else { - return op; - } - }; - return token("operator", grow(prefix || next())); - }; - - function handle_slash() { - next(); - var regex_allowed = S.regex_allowed; - switch (peek()) { - case "/": - S.comments_before.push(read_line_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - case "*": - S.comments_before.push(read_multiline_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - } - return S.regex_allowed ? read_regexp("") : read_operator("/"); - }; - - function handle_dot() { - next(); - return is_digit(peek()) - ? read_num(".") - : token("punc", "."); - }; - - function read_word() { - var word = read_name(); - return !HOP(KEYWORDS, word) - ? token("name", word) - : HOP(OPERATORS, word) - ? token("operator", word) - : HOP(KEYWORDS_ATOM, word) - ? token("atom", word) - : token("keyword", word); - }; - - function with_eof_error(eof_error, cont) { - try { - return cont(); - } catch(ex) { - if (ex === EX_EOF) parse_error(eof_error); - else throw ex; - } - }; - - function next_token(force_regexp) { - if (force_regexp != null) - return read_regexp(force_regexp); - skip_whitespace(); - start_token(); - var ch = peek(); - if (!ch) return token("eof"); - if (is_digit(ch)) return read_num(); - if (ch == '"' || ch == "'") return read_string(); - if (HOP(PUNC_CHARS, ch)) return token("punc", next()); - if (ch == ".") return handle_dot(); - if (ch == "/") return handle_slash(); - if (HOP(OPERATOR_CHARS, ch)) return read_operator(); - if (ch == "\\" || is_identifier_start(ch)) return read_word(); - parse_error("Unexpected character '" + ch + "'"); - }; - - next_token.context = function(nc) { - if (nc) S = nc; - return S; - }; - - return next_token; - -}; - -/* -----[ Parser (constants) ]----- */ - -var UNARY_PREFIX = array_to_hash([ - "typeof", - "void", - "delete", - "--", - "++", - "!", - "~", - "-", - "+" -]); - -var UNARY_POSTFIX = array_to_hash([ "--", "++" ]); - -var ASSIGNMENT = (function(a, ret, i){ - while (i < a.length) { - ret[a[i]] = a[i].substr(0, a[i].length - 1); - i++; - } - return ret; -})( - ["+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&="], - { "=": true }, - 0 -); - -var PRECEDENCE = (function(a, ret){ - for (var i = 0, n = 1; i < a.length; ++i, ++n) { - var b = a[i]; - for (var j = 0; j < b.length; ++j) { - ret[b[j]] = n; - } - } - return ret; -})( - [ - ["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!=="], - ["<", ">", "<=", ">=", "in", "instanceof"], - [">>", "<<", ">>>"], - ["+", "-"], - ["*", "/", "%"] - ], - {} -); - -var STATEMENTS_WITH_LABELS = array_to_hash([ "for", "do", "while", "switch" ]); - -var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "name" ]); - -/* -----[ Parser ]----- */ - -function NodeWithToken(str, start, end) { - this.name = str; - this.start = start; - this.end = end; -}; - -NodeWithToken.prototype.toString = function() { return this.name; }; - -function parse($TEXT, exigent_mode, embed_tokens) { - - var S = { - input : typeof $TEXT == "string" ? tokenizer($TEXT, true) : $TEXT, - token : null, - prev : null, - peeked : null, - in_function : 0, - in_directives : true, - in_loop : 0, - labels : [] - }; - - S.token = next(); - - function is(type, value) { - return is_token(S.token, type, value); - }; - - function peek() { return S.peeked || (S.peeked = S.input()); }; - - function next() { - S.prev = S.token; - if (S.peeked) { - S.token = S.peeked; - S.peeked = null; - } else { - S.token = S.input(); - } - S.in_directives = S.in_directives && ( - S.token.type == "string" || is("punc", ";") - ); - return S.token; - }; - - function prev() { - return S.prev; - }; - - function croak(msg, line, col, pos) { - var ctx = S.input.context(); - js_error(msg, - line != null ? line : ctx.tokline, - col != null ? col : ctx.tokcol, - pos != null ? pos : ctx.tokpos); - }; - - function token_error(token, msg) { - croak(msg, token.line, token.col); - }; - - function unexpected(token) { - if (token == null) - token = S.token; - token_error(token, "Unexpected token: " + token.type + " (" + token.value + ")"); - }; - - function expect_token(type, val) { - if (is(type, val)) { - return next(); - } - token_error(S.token, "Unexpected token " + S.token.type + ", expected " + type); - }; - - function expect(punc) { return expect_token("punc", punc); }; - - function can_insert_semicolon() { - return !exigent_mode && ( - S.token.nlb || is("eof") || is("punc", "}") - ); - }; - - function semicolon() { - if (is("punc", ";")) next(); - else if (!can_insert_semicolon()) unexpected(); - }; - - function as() { - return slice(arguments); - }; - - function parenthesised() { - expect("("); - var ex = expression(); - expect(")"); - return ex; - }; - - function add_tokens(str, start, end) { - return str instanceof NodeWithToken ? str : new NodeWithToken(str, start, end); - }; - - function maybe_embed_tokens(parser) { - if (embed_tokens) return function() { - var start = S.token; - var ast = parser.apply(this, arguments); - ast[0] = add_tokens(ast[0], start, prev()); - return ast; - }; - else return parser; - }; - - var statement = maybe_embed_tokens(function() { - if (is("operator", "/") || is("operator", "/=")) { - S.peeked = null; - S.token = S.input(S.token.value.substr(1)); // force regexp - } - switch (S.token.type) { - case "string": - var dir = S.in_directives, stat = simple_statement(); - if (dir && stat[1][0] == "string" && !is("punc", ",")) - return as("directive", stat[1][1]); - return stat; - case "num": - case "regexp": - case "operator": - case "atom": - return simple_statement(); - - case "name": - return is_token(peek(), "punc", ":") - ? labeled_statement(prog1(S.token.value, next, next)) - : simple_statement(); - - case "punc": - switch (S.token.value) { - case "{": - return as("block", block_()); - case "[": - case "(": - return simple_statement(); - case ";": - next(); - return as("block"); - default: - unexpected(); - } - - case "keyword": - switch (prog1(S.token.value, next)) { - case "break": - return break_cont("break"); - - case "continue": - return break_cont("continue"); - - case "debugger": - semicolon(); - return as("debugger"); - - case "do": - return (function(body){ - expect_token("keyword", "while"); - return as("do", prog1(parenthesised, semicolon), body); - })(in_loop(statement)); - - case "for": - return for_(); - - case "function": - return function_(true); - - case "if": - return if_(); - - case "return": - if (S.in_function == 0) - croak("'return' outside of function"); - return as("return", - is("punc", ";") - ? (next(), null) - : can_insert_semicolon() - ? null - : prog1(expression, semicolon)); - - case "switch": - return as("switch", parenthesised(), switch_block_()); - - case "throw": - if (S.token.nlb) - croak("Illegal newline after 'throw'"); - return as("throw", prog1(expression, semicolon)); - - case "try": - return try_(); - - case "var": - return prog1(var_, semicolon); - - case "const": - return prog1(const_, semicolon); - - case "while": - return as("while", parenthesised(), in_loop(statement)); - - case "with": - return as("with", parenthesised(), statement()); - - default: - unexpected(); - } - } - }); - - function labeled_statement(label) { - S.labels.push(label); - var start = S.token, stat = statement(); - if (exigent_mode && !HOP(STATEMENTS_WITH_LABELS, stat[0])) - unexpected(start); - S.labels.pop(); - return as("label", label, stat); - }; - - function simple_statement() { - return as("stat", prog1(expression, semicolon)); - }; - - function break_cont(type) { - var name; - if (!can_insert_semicolon()) { - name = is("name") ? S.token.value : null; - } - if (name != null) { - next(); - if (!member(name, S.labels)) - croak("Label " + name + " without matching loop or statement"); - } - else if (S.in_loop == 0) - croak(type + " not inside a loop or switch"); - semicolon(); - return as(type, name); - }; - - function for_() { - expect("("); - var init = null; - if (!is("punc", ";")) { - init = is("keyword", "var") - ? (next(), var_(true)) - : expression(true, true); - if (is("operator", "in")) { - if (init[0] == "var" && init[1].length > 1) - croak("Only one variable declaration allowed in for..in loop"); - return for_in(init); - } - } - return regular_for(init); - }; - - function regular_for(init) { - expect(";"); - var test = is("punc", ";") ? null : expression(); - expect(";"); - var step = is("punc", ")") ? null : expression(); - expect(")"); - return as("for", init, test, step, in_loop(statement)); - }; - - function for_in(init) { - var lhs = init[0] == "var" ? as("name", init[1][0]) : init; - next(); - var obj = expression(); - expect(")"); - return as("for-in", init, lhs, obj, in_loop(statement)); - }; - - var function_ = function(in_statement) { - var name = is("name") ? prog1(S.token.value, next) : null; - if (in_statement && !name) - unexpected(); - expect("("); - return as(in_statement ? "defun" : "function", - name, - // arguments - (function(first, a){ - while (!is("punc", ")")) { - if (first) first = false; else expect(","); - if (!is("name")) unexpected(); - a.push(S.token.value); - next(); - } - next(); - return a; - })(true, []), - // body - (function(){ - ++S.in_function; - var loop = S.in_loop; - S.in_directives = true; - S.in_loop = 0; - var a = block_(); - --S.in_function; - S.in_loop = loop; - return a; - })()); - }; - - function if_() { - var cond = parenthesised(), body = statement(), belse; - if (is("keyword", "else")) { - next(); - belse = statement(); - } - return as("if", cond, body, belse); - }; - - function block_() { - expect("{"); - var a = []; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - a.push(statement()); - } - next(); - return a; - }; - - var switch_block_ = curry(in_loop, function(){ - expect("{"); - var a = [], cur = null; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - if (is("keyword", "case")) { - next(); - cur = []; - a.push([ expression(), cur ]); - expect(":"); - } - else if (is("keyword", "default")) { - next(); - expect(":"); - cur = []; - a.push([ null, cur ]); - } - else { - if (!cur) unexpected(); - cur.push(statement()); - } - } - next(); - return a; - }); - - function try_() { - var body = block_(), bcatch, bfinally; - if (is("keyword", "catch")) { - next(); - expect("("); - if (!is("name")) - croak("Name expected"); - var name = S.token.value; - next(); - expect(")"); - bcatch = [ name, block_() ]; - } - if (is("keyword", "finally")) { - next(); - bfinally = block_(); - } - if (!bcatch && !bfinally) - croak("Missing catch/finally blocks"); - return as("try", body, bcatch, bfinally); - }; - - function vardefs(no_in) { - var a = []; - for (;;) { - if (!is("name")) - unexpected(); - var name = S.token.value; - next(); - if (is("operator", "=")) { - next(); - a.push([ name, expression(false, no_in) ]); - } else { - a.push([ name ]); - } - if (!is("punc", ",")) - break; - next(); - } - return a; - }; - - function var_(no_in) { - return as("var", vardefs(no_in)); - }; - - function const_() { - return as("const", vardefs()); - }; - - function new_() { - var newexp = expr_atom(false), args; - if (is("punc", "(")) { - next(); - args = expr_list(")"); - } else { - args = []; - } - return subscripts(as("new", newexp, args), true); - }; - - var expr_atom = maybe_embed_tokens(function(allow_calls) { - if (is("operator", "new")) { - next(); - return new_(); - } - if (is("punc")) { - switch (S.token.value) { - case "(": - next(); - return subscripts(prog1(expression, curry(expect, ")")), allow_calls); - case "[": - next(); - return subscripts(array_(), allow_calls); - case "{": - next(); - return subscripts(object_(), allow_calls); - } - unexpected(); - } - if (is("keyword", "function")) { - next(); - return subscripts(function_(false), allow_calls); - } - if (HOP(ATOMIC_START_TOKEN, S.token.type)) { - var atom = S.token.type == "regexp" - ? as("regexp", S.token.value[0], S.token.value[1]) - : as(S.token.type, S.token.value); - return subscripts(prog1(atom, next), allow_calls); - } - unexpected(); - }); - - function expr_list(closing, allow_trailing_comma, allow_empty) { - var first = true, a = []; - while (!is("punc", closing)) { - if (first) first = false; else expect(","); - if (allow_trailing_comma && is("punc", closing)) break; - if (is("punc", ",") && allow_empty) { - a.push([ "atom", "undefined" ]); - } else { - a.push(expression(false)); - } - } - next(); - return a; - }; - - function array_() { - return as("array", expr_list("]", !exigent_mode, true)); - }; - - function object_() { - var first = true, a = []; - while (!is("punc", "}")) { - if (first) first = false; else expect(","); - if (!exigent_mode && is("punc", "}")) - // allow trailing comma - break; - var type = S.token.type; - var name = as_property_name(); - if (type == "name" && (name == "get" || name == "set") && !is("punc", ":")) { - a.push([ as_name(), function_(false), name ]); - } else { - expect(":"); - a.push([ name, expression(false) ]); - } - } - next(); - return as("object", a); - }; - - function as_property_name() { - switch (S.token.type) { - case "num": - case "string": - return prog1(S.token.value, next); - } - return as_name(); - }; - - function as_name() { - switch (S.token.type) { - case "name": - case "operator": - case "keyword": - case "atom": - return prog1(S.token.value, next); - default: - unexpected(); - } - }; - - function subscripts(expr, allow_calls) { - if (is("punc", ".")) { - next(); - return subscripts(as("dot", expr, as_name()), allow_calls); - } - if (is("punc", "[")) { - next(); - return subscripts(as("sub", expr, prog1(expression, curry(expect, "]"))), allow_calls); - } - if (allow_calls && is("punc", "(")) { - next(); - return subscripts(as("call", expr, expr_list(")")), true); - } - return expr; - }; - - function maybe_unary(allow_calls) { - if (is("operator") && HOP(UNARY_PREFIX, S.token.value)) { - return make_unary("unary-prefix", - prog1(S.token.value, next), - maybe_unary(allow_calls)); - } - var val = expr_atom(allow_calls); - while (is("operator") && HOP(UNARY_POSTFIX, S.token.value) && !S.token.nlb) { - val = make_unary("unary-postfix", S.token.value, val); - next(); - } - return val; - }; - - function make_unary(tag, op, expr) { - if ((op == "++" || op == "--") && !is_assignable(expr)) - croak("Invalid use of " + op + " operator"); - return as(tag, op, expr); - }; - - function expr_op(left, min_prec, no_in) { - var op = is("operator") ? S.token.value : null; - if (op && op == "in" && no_in) op = null; - var prec = op != null ? PRECEDENCE[op] : null; - if (prec != null && prec > min_prec) { - next(); - var right = expr_op(maybe_unary(true), prec, no_in); - return expr_op(as("binary", op, left, right), min_prec, no_in); - } - return left; - }; - - function expr_ops(no_in) { - return expr_op(maybe_unary(true), 0, no_in); - }; - - function maybe_conditional(no_in) { - var expr = expr_ops(no_in); - if (is("operator", "?")) { - next(); - var yes = expression(false); - expect(":"); - return as("conditional", expr, yes, expression(false, no_in)); - } - return expr; - }; - - function is_assignable(expr) { - if (!exigent_mode) return true; - switch (expr[0]+"") { - case "dot": - case "sub": - case "new": - case "call": - return true; - case "name": - return expr[1] != "this"; - } - }; - - function maybe_assign(no_in) { - var left = maybe_conditional(no_in), val = S.token.value; - if (is("operator") && HOP(ASSIGNMENT, val)) { - if (is_assignable(left)) { - next(); - return as("assign", ASSIGNMENT[val], left, maybe_assign(no_in)); - } - croak("Invalid assignment"); - } - return left; - }; - - var expression = maybe_embed_tokens(function(commas, no_in) { - if (arguments.length == 0) - commas = true; - var expr = maybe_assign(no_in); - if (commas && is("punc", ",")) { - next(); - return as("seq", expr, expression(true, no_in)); - } - return expr; - }); - - function in_loop(cont) { - try { - ++S.in_loop; - return cont(); - } finally { - --S.in_loop; - } - }; - - return as("toplevel", (function(a){ - while (!is("eof")) - a.push(statement()); - return a; - })([])); - -}; - -/* -----[ Utilities ]----- */ - -function curry(f) { - var args = slice(arguments, 1); - return function() { return f.apply(this, args.concat(slice(arguments))); }; -}; - -function prog1(ret) { - if (ret instanceof Function) - ret = ret(); - for (var i = 1, n = arguments.length; --n > 0; ++i) - arguments[i](); - return ret; -}; - -function array_to_hash(a) { - var ret = {}; - for (var i = 0; i < a.length; ++i) - ret[a[i]] = true; - return ret; -}; - -function slice(a, start) { - return Array.prototype.slice.call(a, start || 0); -}; - -function characters(str) { - return str.split(""); -}; - -function member(name, array) { - for (var i = array.length; --i >= 0;) - if (array[i] == name) - return true; - return false; -}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -var warn = function() {}; - -/* -----[ Exports ]----- */ - -exports.tokenizer = tokenizer; -exports.parse = parse; -exports.slice = slice; -exports.curry = curry; -exports.member = member; -exports.array_to_hash = array_to_hash; -exports.PRECEDENCE = PRECEDENCE; -exports.KEYWORDS_ATOM = KEYWORDS_ATOM; -exports.RESERVED_WORDS = RESERVED_WORDS; -exports.KEYWORDS = KEYWORDS; -exports.ATOMIC_START_TOKEN = ATOMIC_START_TOKEN; -exports.OPERATORS = OPERATORS; -exports.is_alphanumeric_char = is_alphanumeric_char; -exports.is_identifier_start = is_identifier_start; -exports.is_identifier_char = is_identifier_char; -exports.set_logger = function(logger) { - warn = logger; -}; - -// Local variables: -// js-indent-level: 4 -// End: -});define('uglifyjs/squeeze-more', ["require", "exports", "module", "./parse-js", "./squeeze-more"], function(require, exports, module) { -var jsp = require("./parse-js"), - pro = require("./process"), - slice = jsp.slice, - member = jsp.member, - curry = jsp.curry, - MAP = pro.MAP, - PRECEDENCE = jsp.PRECEDENCE, - OPERATORS = jsp.OPERATORS; - -function ast_squeeze_more(ast) { - var w = pro.ast_walker(), walk = w.walk, scope; - function with_scope(s, cont) { - var save = scope, ret; - scope = s; - ret = cont(); - scope = save; - return ret; - }; - function _lambda(name, args, body) { - return [ this[0], name, args, with_scope(body.scope, curry(MAP, body, walk)) ]; - }; - return w.with_walkers({ - "toplevel": function(body) { - return [ this[0], with_scope(this.scope, curry(MAP, body, walk)) ]; - }, - "function": _lambda, - "defun": _lambda, - "new": function(ctor, args) { - if (ctor[0] == "name") { - if (ctor[1] == "Array" && !scope.has("Array")) { - if (args.length != 1) { - return [ "array", args ]; - } else { - return walk([ "call", [ "name", "Array" ], args ]); - } - } else if (ctor[1] == "Object" && !scope.has("Object")) { - if (!args.length) { - return [ "object", [] ]; - } else { - return walk([ "call", [ "name", "Object" ], args ]); - } - } else if ((ctor[1] == "RegExp" || ctor[1] == "Function" || ctor[1] == "Error") && !scope.has(ctor[1])) { - return walk([ "call", [ "name", ctor[1] ], args]); - } - } - }, - "call": function(expr, args) { - if (expr[0] == "dot" && expr[1][0] == "string" && args.length == 1 - && (args[0][1] > 0 && expr[2] == "substring" || expr[2] == "substr")) { - return [ "call", [ "dot", expr[1], "slice"], args]; - } - if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) { - // foo.toString() ==> foo+"" - if (expr[1][0] == "string") return expr[1]; - return [ "binary", "+", expr[1], [ "string", "" ]]; - } - if (expr[0] == "name") { - if (expr[1] == "Array" && args.length != 1 && !scope.has("Array")) { - return [ "array", args ]; - } - if (expr[1] == "Object" && !args.length && !scope.has("Object")) { - return [ "object", [] ]; - } - if (expr[1] == "String" && !scope.has("String")) { - return [ "binary", "+", args[0], [ "string", "" ]]; - } - } - } - }, function() { - return walk(pro.ast_add_scope(ast)); - }); -}; - -exports.ast_squeeze_more = ast_squeeze_more; - -// Local variables: -// js-indent-level: 4 -// End: -}); -define('uglifyjs/process', ["require", "exports", "module", "./parse-js", "./squeeze-more"], function(require, exports, module) { -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - - This version is suitable for Node.js. With minimal changes (the - exports stuff) it should work on any JS platform. - - This file implements some AST processors. They work on data built - by parse-js. - - Exported functions: - - - ast_mangle(ast, options) -- mangles the variable/function names - in the AST. Returns an AST. - - - ast_squeeze(ast) -- employs various optimizations to make the - final generated code even smaller. Returns an AST. - - - gen_code(ast, options) -- generates JS code from the AST. Pass - true (or an object, see the code for some options) as second - argument to get "pretty" (indented) code. - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2010 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -var jsp = require("./parse-js"), - curry = jsp.curry, - slice = jsp.slice, - member = jsp.member, - is_identifier_char = jsp.is_identifier_char, - PRECEDENCE = jsp.PRECEDENCE, - OPERATORS = jsp.OPERATORS; - -/* -----[ helper for AST traversal ]----- */ - -function ast_walker() { - function _vardefs(defs) { - return [ this[0], MAP(defs, function(def){ - var a = [ def[0] ]; - if (def.length > 1) - a[1] = walk(def[1]); - return a; - }) ]; - }; - function _block(statements) { - var out = [ this[0] ]; - if (statements != null) - out.push(MAP(statements, walk)); - return out; - }; - var walkers = { - "string": function(str) { - return [ this[0], str ]; - }, - "num": function(num) { - return [ this[0], num ]; - }, - "name": function(name) { - return [ this[0], name ]; - }, - "toplevel": function(statements) { - return [ this[0], MAP(statements, walk) ]; - }, - "block": _block, - "splice": _block, - "var": _vardefs, - "const": _vardefs, - "try": function(t, c, f) { - return [ - this[0], - MAP(t, walk), - c != null ? [ c[0], MAP(c[1], walk) ] : null, - f != null ? MAP(f, walk) : null - ]; - }, - "throw": function(expr) { - return [ this[0], walk(expr) ]; - }, - "new": function(ctor, args) { - return [ this[0], walk(ctor), MAP(args, walk) ]; - }, - "switch": function(expr, body) { - return [ this[0], walk(expr), MAP(body, function(branch){ - return [ branch[0] ? walk(branch[0]) : null, - MAP(branch[1], walk) ]; - }) ]; - }, - "break": function(label) { - return [ this[0], label ]; - }, - "continue": function(label) { - return [ this[0], label ]; - }, - "conditional": function(cond, t, e) { - return [ this[0], walk(cond), walk(t), walk(e) ]; - }, - "assign": function(op, lvalue, rvalue) { - return [ this[0], op, walk(lvalue), walk(rvalue) ]; - }, - "dot": function(expr) { - return [ this[0], walk(expr) ].concat(slice(arguments, 1)); - }, - "call": function(expr, args) { - return [ this[0], walk(expr), MAP(args, walk) ]; - }, - "function": function(name, args, body) { - return [ this[0], name, args.slice(), MAP(body, walk) ]; - }, - "debugger": function() { - return [ this[0] ]; - }, - "defun": function(name, args, body) { - return [ this[0], name, args.slice(), MAP(body, walk) ]; - }, - "if": function(conditional, t, e) { - return [ this[0], walk(conditional), walk(t), walk(e) ]; - }, - "for": function(init, cond, step, block) { - return [ this[0], walk(init), walk(cond), walk(step), walk(block) ]; - }, - "for-in": function(vvar, key, hash, block) { - return [ this[0], walk(vvar), walk(key), walk(hash), walk(block) ]; - }, - "while": function(cond, block) { - return [ this[0], walk(cond), walk(block) ]; - }, - "do": function(cond, block) { - return [ this[0], walk(cond), walk(block) ]; - }, - "return": function(expr) { - return [ this[0], walk(expr) ]; - }, - "binary": function(op, left, right) { - return [ this[0], op, walk(left), walk(right) ]; - }, - "unary-prefix": function(op, expr) { - return [ this[0], op, walk(expr) ]; - }, - "unary-postfix": function(op, expr) { - return [ this[0], op, walk(expr) ]; - }, - "sub": function(expr, subscript) { - return [ this[0], walk(expr), walk(subscript) ]; - }, - "object": function(props) { - return [ this[0], MAP(props, function(p){ - return p.length == 2 - ? [ p[0], walk(p[1]) ] - : [ p[0], walk(p[1]), p[2] ]; // get/set-ter - }) ]; - }, - "regexp": function(rx, mods) { - return [ this[0], rx, mods ]; - }, - "array": function(elements) { - return [ this[0], MAP(elements, walk) ]; - }, - "stat": function(stat) { - return [ this[0], walk(stat) ]; - }, - "seq": function() { - return [ this[0] ].concat(MAP(slice(arguments), walk)); - }, - "label": function(name, block) { - return [ this[0], name, walk(block) ]; - }, - "with": function(expr, block) { - return [ this[0], walk(expr), walk(block) ]; - }, - "atom": function(name) { - return [ this[0], name ]; - }, - "directive": function(dir) { - return [ this[0], dir ]; - } - }; - - var user = {}; - var stack = []; - function walk(ast) { - if (ast == null) - return null; - try { - stack.push(ast); - var type = ast[0]; - var gen = user[type]; - if (gen) { - var ret = gen.apply(ast, ast.slice(1)); - if (ret != null) - return ret; - } - gen = walkers[type]; - return gen.apply(ast, ast.slice(1)); - } finally { - stack.pop(); - } - }; - - function dive(ast) { - if (ast == null) - return null; - try { - stack.push(ast); - return walkers[ast[0]].apply(ast, ast.slice(1)); - } finally { - stack.pop(); - } - }; - - function with_walkers(walkers, cont){ - var save = {}, i; - for (i in walkers) if (HOP(walkers, i)) { - save[i] = user[i]; - user[i] = walkers[i]; - } - var ret = cont(); - for (i in save) if (HOP(save, i)) { - if (!save[i]) delete user[i]; - else user[i] = save[i]; - } - return ret; - }; - - return { - walk: walk, - dive: dive, - with_walkers: with_walkers, - parent: function() { - return stack[stack.length - 2]; // last one is current node - }, - stack: function() { - return stack; - } - }; -}; - -/* -----[ Scope and mangling ]----- */ - -function Scope(parent) { - this.names = {}; // names defined in this scope - this.mangled = {}; // mangled names (orig.name => mangled) - this.rev_mangled = {}; // reverse lookup (mangled => orig.name) - this.cname = -1; // current mangled name - this.refs = {}; // names referenced from this scope - this.uses_with = false; // will become TRUE if with() is detected in this or any subscopes - this.uses_eval = false; // will become TRUE if eval() is detected in this or any subscopes - this.directives = []; // directives activated from this scope - this.parent = parent; // parent scope - this.children = []; // sub-scopes - if (parent) { - this.level = parent.level + 1; - parent.children.push(this); - } else { - this.level = 0; - } -}; - -function base54_digits() { - if (typeof DIGITS_OVERRIDE_FOR_TESTING != "undefined") - return DIGITS_OVERRIDE_FOR_TESTING; - else - return "etnrisouaflchpdvmgybwESxTNCkLAOM_DPHBjFIqRUzWXV$JKQGYZ0516372984"; -} - -var base54 = (function(){ - var DIGITS = base54_digits(); - return function(num) { - var ret = "", base = 54; - do { - ret += DIGITS.charAt(num % base); - num = Math.floor(num / base); - base = 64; - } while (num > 0); - return ret; - }; -})(); - -Scope.prototype = { - has: function(name) { - for (var s = this; s; s = s.parent) - if (HOP(s.names, name)) - return s; - }, - has_mangled: function(mname) { - for (var s = this; s; s = s.parent) - if (HOP(s.rev_mangled, mname)) - return s; - }, - toJSON: function() { - return { - names: this.names, - uses_eval: this.uses_eval, - uses_with: this.uses_with - }; - }, - - next_mangled: function() { - // we must be careful that the new mangled name: - // - // 1. doesn't shadow a mangled name from a parent - // scope, unless we don't reference the original - // name from this scope OR from any sub-scopes! - // This will get slow. - // - // 2. doesn't shadow an original name from a parent - // scope, in the event that the name is not mangled - // in the parent scope and we reference that name - // here OR IN ANY SUBSCOPES! - // - // 3. doesn't shadow a name that is referenced but not - // defined (possibly global defined elsewhere). - for (;;) { - var m = base54(++this.cname), prior; - - // case 1. - prior = this.has_mangled(m); - if (prior && this.refs[prior.rev_mangled[m]] === prior) - continue; - - // case 2. - prior = this.has(m); - if (prior && prior !== this && this.refs[m] === prior && !prior.has_mangled(m)) - continue; - - // case 3. - if (HOP(this.refs, m) && this.refs[m] == null) - continue; - - // I got "do" once. :-/ - if (!is_identifier(m)) - continue; - - return m; - } - }, - set_mangle: function(name, m) { - this.rev_mangled[m] = name; - return this.mangled[name] = m; - }, - get_mangled: function(name, newMangle) { - if (this.uses_eval || this.uses_with) return name; // no mangle if eval or with is in use - var s = this.has(name); - if (!s) return name; // not in visible scope, no mangle - if (HOP(s.mangled, name)) return s.mangled[name]; // already mangled in this scope - if (!newMangle) return name; // not found and no mangling requested - return s.set_mangle(name, s.next_mangled()); - }, - references: function(name) { - return name && !this.parent || this.uses_with || this.uses_eval || this.refs[name]; - }, - define: function(name, type) { - if (name != null) { - if (type == "var" || !HOP(this.names, name)) - this.names[name] = type || "var"; - return name; - } - }, - active_directive: function(dir) { - return member(dir, this.directives) || this.parent && this.parent.active_directive(dir); - } -}; - -function ast_add_scope(ast) { - - var current_scope = null; - var w = ast_walker(), walk = w.walk; - var having_eval = []; - - function with_new_scope(cont) { - current_scope = new Scope(current_scope); - current_scope.labels = new Scope(); - var ret = current_scope.body = cont(); - ret.scope = current_scope; - current_scope = current_scope.parent; - return ret; - }; - - function define(name, type) { - return current_scope.define(name, type); - }; - - function reference(name) { - current_scope.refs[name] = true; - }; - - function _lambda(name, args, body) { - var is_defun = this[0] == "defun"; - return [ this[0], is_defun ? define(name, "defun") : name, args, with_new_scope(function(){ - if (!is_defun) define(name, "lambda"); - MAP(args, function(name){ define(name, "arg") }); - return MAP(body, walk); - })]; - }; - - function _vardefs(type) { - return function(defs) { - MAP(defs, function(d){ - define(d[0], type); - if (d[1]) reference(d[0]); - }); - }; - }; - - function _breacont(label) { - if (label) - current_scope.labels.refs[label] = true; - }; - - return with_new_scope(function(){ - // process AST - var ret = w.with_walkers({ - "function": _lambda, - "defun": _lambda, - "label": function(name, stat) { current_scope.labels.define(name) }, - "break": _breacont, - "continue": _breacont, - "with": function(expr, block) { - for (var s = current_scope; s; s = s.parent) - s.uses_with = true; - }, - "var": _vardefs("var"), - "const": _vardefs("const"), - "try": function(t, c, f) { - if (c != null) return [ - this[0], - MAP(t, walk), - [ define(c[0], "catch"), MAP(c[1], walk) ], - f != null ? MAP(f, walk) : null - ]; - }, - "name": function(name) { - if (name == "eval") - having_eval.push(current_scope); - reference(name); - } - }, function(){ - return walk(ast); - }); - - // the reason why we need an additional pass here is - // that names can be used prior to their definition. - - // scopes where eval was detected and their parents - // are marked with uses_eval, unless they define the - // "eval" name. - MAP(having_eval, function(scope){ - if (!scope.has("eval")) while (scope) { - scope.uses_eval = true; - scope = scope.parent; - } - }); - - // for referenced names it might be useful to know - // their origin scope. current_scope here is the - // toplevel one. - function fixrefs(scope, i) { - // do children first; order shouldn't matter - for (i = scope.children.length; --i >= 0;) - fixrefs(scope.children[i]); - for (i in scope.refs) if (HOP(scope.refs, i)) { - // find origin scope and propagate the reference to origin - for (var origin = scope.has(i), s = scope; s; s = s.parent) { - s.refs[i] = origin; - if (s === origin) break; - } - } - }; - fixrefs(current_scope); - - return ret; - }); - -}; - -/* -----[ mangle names ]----- */ - -function ast_mangle(ast, options) { - var w = ast_walker(), walk = w.walk, scope; - options = defaults(options, { - mangle : true, - toplevel : false, - defines : null, - except : null, - no_functions : false - }); - - function get_mangled(name, newMangle) { - if (!options.mangle) return name; - if (!options.toplevel && !scope.parent) return name; // don't mangle toplevel - if (options.except && member(name, options.except)) - return name; - if (options.no_functions && HOP(scope.names, name) && - (scope.names[name] == 'defun' || scope.names[name] == 'lambda')) - return name; - return scope.get_mangled(name, newMangle); - }; - - function get_define(name) { - if (options.defines) { - // we always lookup a defined symbol for the current scope FIRST, so declared - // vars trump a DEFINE symbol, but if no such var is found, then match a DEFINE value - if (!scope.has(name)) { - if (HOP(options.defines, name)) { - return options.defines[name]; - } - } - return null; - } - }; - - function _lambda(name, args, body) { - if (!options.no_functions && options.mangle) { - var is_defun = this[0] == "defun", extra; - if (name) { - if (is_defun) name = get_mangled(name); - else if (body.scope.references(name)) { - extra = {}; - if (!(scope.uses_eval || scope.uses_with)) - name = extra[name] = scope.next_mangled(); - else - extra[name] = name; - } - else name = null; - } - } - body = with_scope(body.scope, function(){ - args = MAP(args, function(name){ return get_mangled(name) }); - return MAP(body, walk); - }, extra); - return [ this[0], name, args, body ]; - }; - - function with_scope(s, cont, extra) { - var _scope = scope; - scope = s; - if (extra) for (var i in extra) if (HOP(extra, i)) { - s.set_mangle(i, extra[i]); - } - for (var i in s.names) if (HOP(s.names, i)) { - get_mangled(i, true); - } - var ret = cont(); - ret.scope = s; - scope = _scope; - return ret; - }; - - function _vardefs(defs) { - return [ this[0], MAP(defs, function(d){ - return [ get_mangled(d[0]), walk(d[1]) ]; - }) ]; - }; - - function _breacont(label) { - if (label) return [ this[0], scope.labels.get_mangled(label) ]; - }; - - return w.with_walkers({ - "function": _lambda, - "defun": function() { - // move function declarations to the top when - // they are not in some block. - var ast = _lambda.apply(this, arguments); - switch (w.parent()[0]) { - case "toplevel": - case "function": - case "defun": - return MAP.at_top(ast); - } - return ast; - }, - "label": function(label, stat) { - if (scope.labels.refs[label]) return [ - this[0], - scope.labels.get_mangled(label, true), - walk(stat) - ]; - return walk(stat); - }, - "break": _breacont, - "continue": _breacont, - "var": _vardefs, - "const": _vardefs, - "name": function(name) { - return get_define(name) || [ this[0], get_mangled(name) ]; - }, - "try": function(t, c, f) { - return [ this[0], - MAP(t, walk), - c != null ? [ get_mangled(c[0]), MAP(c[1], walk) ] : null, - f != null ? MAP(f, walk) : null ]; - }, - "toplevel": function(body) { - var self = this; - return with_scope(self.scope, function(){ - return [ self[0], MAP(body, walk) ]; - }); - }, - "directive": function() { - return MAP.at_top(this); - } - }, function() { - return walk(ast_add_scope(ast)); - }); -}; - -/* -----[ - - compress foo["bar"] into foo.bar, - - remove block brackets {} where possible - - join consecutive var declarations - - various optimizations for IFs: - - if (cond) foo(); else bar(); ==> cond?foo():bar(); - - if (cond) foo(); ==> cond&&foo(); - - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); // also for throw - - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - ]----- */ - -var warn = function(){}; - -function best_of(ast1, ast2) { - return gen_code(ast1).length > gen_code(ast2[0] == "stat" ? ast2[1] : ast2).length ? ast2 : ast1; -}; - -function last_stat(b) { - if (b[0] == "block" && b[1] && b[1].length > 0) - return b[1][b[1].length - 1]; - return b; -} - -function aborts(t) { - if (t) switch (last_stat(t)[0]) { - case "return": - case "break": - case "continue": - case "throw": - return true; - } -}; - -function boolean_expr(expr) { - return ( (expr[0] == "unary-prefix" - && member(expr[1], [ "!", "delete" ])) || - - (expr[0] == "binary" - && member(expr[1], [ "in", "instanceof", "==", "!=", "===", "!==", "<", "<=", ">=", ">" ])) || - - (expr[0] == "binary" - && member(expr[1], [ "&&", "||" ]) - && boolean_expr(expr[2]) - && boolean_expr(expr[3])) || - - (expr[0] == "conditional" - && boolean_expr(expr[2]) - && boolean_expr(expr[3])) || - - (expr[0] == "assign" - && expr[1] === true - && boolean_expr(expr[3])) || - - (expr[0] == "seq" - && boolean_expr(expr[expr.length - 1])) - ); -}; - -function empty(b) { - return !b || (b[0] == "block" && (!b[1] || b[1].length == 0)); -}; - -function is_string(node) { - return (node[0] == "string" || - node[0] == "unary-prefix" && node[1] == "typeof" || - node[0] == "binary" && node[1] == "+" && - (is_string(node[2]) || is_string(node[3]))); -}; - -var when_constant = (function(){ - - var $NOT_CONSTANT = {}; - - // this can only evaluate constant expressions. If it finds anything - // not constant, it throws $NOT_CONSTANT. - function evaluate(expr) { - switch (expr[0]) { - case "string": - case "num": - return expr[1]; - case "name": - case "atom": - switch (expr[1]) { - case "true": return true; - case "false": return false; - case "null": return null; - } - break; - case "unary-prefix": - switch (expr[1]) { - case "!": return !evaluate(expr[2]); - case "typeof": return typeof evaluate(expr[2]); - case "~": return ~evaluate(expr[2]); - case "-": return -evaluate(expr[2]); - case "+": return +evaluate(expr[2]); - } - break; - case "binary": - var left = expr[2], right = expr[3]; - switch (expr[1]) { - case "&&" : return evaluate(left) && evaluate(right); - case "||" : return evaluate(left) || evaluate(right); - case "|" : return evaluate(left) | evaluate(right); - case "&" : return evaluate(left) & evaluate(right); - case "^" : return evaluate(left) ^ evaluate(right); - case "+" : return evaluate(left) + evaluate(right); - case "*" : return evaluate(left) * evaluate(right); - case "/" : return evaluate(left) / evaluate(right); - case "%" : return evaluate(left) % evaluate(right); - case "-" : return evaluate(left) - evaluate(right); - case "<<" : return evaluate(left) << evaluate(right); - case ">>" : return evaluate(left) >> evaluate(right); - case ">>>" : return evaluate(left) >>> evaluate(right); - case "==" : return evaluate(left) == evaluate(right); - case "===" : return evaluate(left) === evaluate(right); - case "!=" : return evaluate(left) != evaluate(right); - case "!==" : return evaluate(left) !== evaluate(right); - case "<" : return evaluate(left) < evaluate(right); - case "<=" : return evaluate(left) <= evaluate(right); - case ">" : return evaluate(left) > evaluate(right); - case ">=" : return evaluate(left) >= evaluate(right); - case "in" : return evaluate(left) in evaluate(right); - case "instanceof" : return evaluate(left) instanceof evaluate(right); - } - } - throw $NOT_CONSTANT; - }; - - return function(expr, yes, no) { - try { - var val = evaluate(expr), ast; - switch (typeof val) { - case "string": ast = [ "string", val ]; break; - case "number": ast = [ "num", val ]; break; - case "boolean": ast = [ "name", String(val) ]; break; - default: - if (val === null) { ast = [ "atom", "null" ]; break; } - throw new Error("Can't handle constant of type: " + (typeof val)); - } - return yes.call(expr, ast, val); - } catch(ex) { - if (ex === $NOT_CONSTANT) { - if (expr[0] == "binary" - && (expr[1] == "===" || expr[1] == "!==") - && ((is_string(expr[2]) && is_string(expr[3])) - || (boolean_expr(expr[2]) && boolean_expr(expr[3])))) { - expr[1] = expr[1].substr(0, 2); - } - else if (no && expr[0] == "binary" - && (expr[1] == "||" || expr[1] == "&&")) { - // the whole expression is not constant but the lval may be... - try { - var lval = evaluate(expr[2]); - expr = ((expr[1] == "&&" && (lval ? expr[3] : lval)) || - (expr[1] == "||" && (lval ? lval : expr[3])) || - expr); - } catch(ex2) { - // IGNORE... lval is not constant - } - } - return no ? no.call(expr, expr) : null; - } - else throw ex; - } - }; - -})(); - -function warn_unreachable(ast) { - if (!empty(ast)) - warn("Dropping unreachable code: " + gen_code(ast, true)); -}; - -function prepare_ifs(ast) { - var w = ast_walker(), walk = w.walk; - // In this first pass, we rewrite ifs which abort with no else with an - // if-else. For example: - // - // if (x) { - // blah(); - // return y; - // } - // foobar(); - // - // is rewritten into: - // - // if (x) { - // blah(); - // return y; - // } else { - // foobar(); - // } - function redo_if(statements) { - statements = MAP(statements, walk); - - for (var i = 0; i < statements.length; ++i) { - var fi = statements[i]; - if (fi[0] != "if") continue; - - if (fi[3]) continue; - - var t = fi[2]; - if (!aborts(t)) continue; - - var conditional = walk(fi[1]); - - var e_body = redo_if(statements.slice(i + 1)); - var e = e_body.length == 1 ? e_body[0] : [ "block", e_body ]; - - return statements.slice(0, i).concat([ [ - fi[0], // "if" - conditional, // conditional - t, // then - e // else - ] ]); - } - - return statements; - }; - - function redo_if_lambda(name, args, body) { - body = redo_if(body); - return [ this[0], name, args, body ]; - }; - - function redo_if_block(statements) { - return [ this[0], statements != null ? redo_if(statements) : null ]; - }; - - return w.with_walkers({ - "defun": redo_if_lambda, - "function": redo_if_lambda, - "block": redo_if_block, - "splice": redo_if_block, - "toplevel": function(statements) { - return [ this[0], redo_if(statements) ]; - }, - "try": function(t, c, f) { - return [ - this[0], - redo_if(t), - c != null ? [ c[0], redo_if(c[1]) ] : null, - f != null ? redo_if(f) : null - ]; - } - }, function() { - return walk(ast); - }); -}; - -function for_side_effects(ast, handler) { - var w = ast_walker(), walk = w.walk; - var $stop = {}, $restart = {}; - function stop() { throw $stop }; - function restart() { throw $restart }; - function found(){ return handler.call(this, this, w, stop, restart) }; - function unary(op) { - if (op == "++" || op == "--") - return found.apply(this, arguments); - }; - function binary(op) { - if (op == "&&" || op == "||") - return found.apply(this, arguments); - }; - return w.with_walkers({ - "try": found, - "throw": found, - "return": found, - "new": found, - "switch": found, - "break": found, - "continue": found, - "assign": found, - "call": found, - "if": found, - "for": found, - "for-in": found, - "while": found, - "do": found, - "return": found, - "unary-prefix": unary, - "unary-postfix": unary, - "conditional": found, - "binary": binary, - "defun": found - }, function(){ - while (true) try { - walk(ast); - break; - } catch(ex) { - if (ex === $stop) break; - if (ex === $restart) continue; - throw ex; - } - }); -}; - -function ast_lift_variables(ast) { - var w = ast_walker(), walk = w.walk, scope; - function do_body(body, env) { - var _scope = scope; - scope = env; - body = MAP(body, walk); - var hash = {}, names = MAP(env.names, function(type, name){ - if (type != "var") return MAP.skip; - if (!env.references(name)) return MAP.skip; - hash[name] = true; - return [ name ]; - }); - if (names.length > 0) { - // looking for assignments to any of these variables. - // we can save considerable space by moving the definitions - // in the var declaration. - for_side_effects([ "block", body ], function(ast, walker, stop, restart) { - if (ast[0] == "assign" - && ast[1] === true - && ast[2][0] == "name" - && HOP(hash, ast[2][1])) { - // insert the definition into the var declaration - for (var i = names.length; --i >= 0;) { - if (names[i][0] == ast[2][1]) { - if (names[i][1]) // this name already defined, we must stop - stop(); - names[i][1] = ast[3]; // definition - names.push(names.splice(i, 1)[0]); - break; - } - } - // remove this assignment from the AST. - var p = walker.parent(); - if (p[0] == "seq") { - var a = p[2]; - a.unshift(0, p.length); - p.splice.apply(p, a); - } - else if (p[0] == "stat") { - p.splice(0, p.length, "block"); // empty statement - } - else { - stop(); - } - restart(); - } - stop(); - }); - body.unshift([ "var", names ]); - } - scope = _scope; - return body; - }; - function _vardefs(defs) { - var ret = null; - for (var i = defs.length; --i >= 0;) { - var d = defs[i]; - if (!d[1]) continue; - d = [ "assign", true, [ "name", d[0] ], d[1] ]; - if (ret == null) ret = d; - else ret = [ "seq", d, ret ]; - } - if (ret == null && w.parent()[0] != "for") { - if (w.parent()[0] == "for-in") - return [ "name", defs[0][0] ]; - return MAP.skip; - } - return [ "stat", ret ]; - }; - function _toplevel(body) { - return [ this[0], do_body(body, this.scope) ]; - }; - return w.with_walkers({ - "function": function(name, args, body){ - for (var i = args.length; --i >= 0 && !body.scope.references(args[i]);) - args.pop(); - if (!body.scope.references(name)) name = null; - return [ this[0], name, args, do_body(body, body.scope) ]; - }, - "defun": function(name, args, body){ - if (!scope.references(name)) return MAP.skip; - for (var i = args.length; --i >= 0 && !body.scope.references(args[i]);) - args.pop(); - return [ this[0], name, args, do_body(body, body.scope) ]; - }, - "var": _vardefs, - "toplevel": _toplevel - }, function(){ - return walk(ast_add_scope(ast)); - }); -}; - -function ast_squeeze(ast, options) { - ast = squeeze_1(ast, options); - ast = squeeze_2(ast, options); - return ast; -}; - -function squeeze_1(ast, options) { - options = defaults(options, { - make_seqs : true, - dead_code : true, - no_warnings : false, - keep_comps : true, - unsafe : false - }); - - var w = ast_walker(), walk = w.walk, scope; - - function negate(c) { - var not_c = [ "unary-prefix", "!", c ]; - switch (c[0]) { - case "unary-prefix": - return c[1] == "!" && boolean_expr(c[2]) ? c[2] : not_c; - case "seq": - c = slice(c); - c[c.length - 1] = negate(c[c.length - 1]); - return c; - case "conditional": - return best_of(not_c, [ "conditional", c[1], negate(c[2]), negate(c[3]) ]); - case "binary": - var op = c[1], left = c[2], right = c[3]; - if (!options.keep_comps) switch (op) { - case "<=" : return [ "binary", ">", left, right ]; - case "<" : return [ "binary", ">=", left, right ]; - case ">=" : return [ "binary", "<", left, right ]; - case ">" : return [ "binary", "<=", left, right ]; - } - switch (op) { - case "==" : return [ "binary", "!=", left, right ]; - case "!=" : return [ "binary", "==", left, right ]; - case "===" : return [ "binary", "!==", left, right ]; - case "!==" : return [ "binary", "===", left, right ]; - case "&&" : return best_of(not_c, [ "binary", "||", negate(left), negate(right) ]); - case "||" : return best_of(not_c, [ "binary", "&&", negate(left), negate(right) ]); - } - break; - } - return not_c; - }; - - function make_conditional(c, t, e) { - var make_real_conditional = function() { - if (c[0] == "unary-prefix" && c[1] == "!") { - return e ? [ "conditional", c[2], e, t ] : [ "binary", "||", c[2], t ]; - } else { - return e ? best_of( - [ "conditional", c, t, e ], - [ "conditional", negate(c), e, t ] - ) : [ "binary", "&&", c, t ]; - } - }; - // shortcut the conditional if the expression has a constant value - return when_constant(c, function(ast, val){ - warn_unreachable(val ? e : t); - return (val ? t : e); - }, make_real_conditional); - }; - - function rmblock(block) { - if (block != null && block[0] == "block" && block[1]) { - if (block[1].length == 1) - block = block[1][0]; - else if (block[1].length == 0) - block = [ "block" ]; - } - return block; - }; - - function _lambda(name, args, body) { - return [ this[0], name, args, tighten(body, "lambda") ]; - }; - - // this function does a few things: - // 1. discard useless blocks - // 2. join consecutive var declarations - // 3. remove obviously dead code - // 4. transform consecutive statements using the comma operator - // 5. if block_type == "lambda" and it detects constructs like if(foo) return ... - rewrite like if (!foo) { ... } - function tighten(statements, block_type) { - statements = MAP(statements, walk); - - statements = statements.reduce(function(a, stat){ - if (stat[0] == "block") { - if (stat[1]) { - a.push.apply(a, stat[1]); - } - } else { - a.push(stat); - } - return a; - }, []); - - statements = (function(a, prev){ - statements.forEach(function(cur){ - if (prev && ((cur[0] == "var" && prev[0] == "var") || - (cur[0] == "const" && prev[0] == "const"))) { - prev[1] = prev[1].concat(cur[1]); - } else { - a.push(cur); - prev = cur; - } - }); - return a; - })([]); - - if (options.dead_code) statements = (function(a, has_quit){ - statements.forEach(function(st){ - if (has_quit) { - if (st[0] == "function" || st[0] == "defun") { - a.push(st); - } - else if (st[0] == "var" || st[0] == "const") { - if (!options.no_warnings) - warn("Variables declared in unreachable code"); - st[1] = MAP(st[1], function(def){ - if (def[1] && !options.no_warnings) - warn_unreachable([ "assign", true, [ "name", def[0] ], def[1] ]); - return [ def[0] ]; - }); - a.push(st); - } - else if (!options.no_warnings) - warn_unreachable(st); - } - else { - a.push(st); - if (member(st[0], [ "return", "throw", "break", "continue" ])) - has_quit = true; - } - }); - return a; - })([]); - - if (options.make_seqs) statements = (function(a, prev) { - statements.forEach(function(cur){ - if (prev && prev[0] == "stat" && cur[0] == "stat") { - prev[1] = [ "seq", prev[1], cur[1] ]; - } else { - a.push(cur); - prev = cur; - } - }); - if (a.length >= 2 - && a[a.length-2][0] == "stat" - && (a[a.length-1][0] == "return" || a[a.length-1][0] == "throw") - && a[a.length-1][1]) - { - a.splice(a.length - 2, 2, - [ a[a.length-1][0], - [ "seq", a[a.length-2][1], a[a.length-1][1] ]]); - } - return a; - })([]); - - // this increases jQuery by 1K. Probably not such a good idea after all.. - // part of this is done in prepare_ifs anyway. - // if (block_type == "lambda") statements = (function(i, a, stat){ - // while (i < statements.length) { - // stat = statements[i++]; - // if (stat[0] == "if" && !stat[3]) { - // if (stat[2][0] == "return" && stat[2][1] == null) { - // a.push(make_if(negate(stat[1]), [ "block", statements.slice(i) ])); - // break; - // } - // var last = last_stat(stat[2]); - // if (last[0] == "return" && last[1] == null) { - // a.push(make_if(stat[1], [ "block", stat[2][1].slice(0, -1) ], [ "block", statements.slice(i) ])); - // break; - // } - // } - // a.push(stat); - // } - // return a; - // })(0, []); - - return statements; - }; - - function make_if(c, t, e) { - return when_constant(c, function(ast, val){ - if (val) { - t = walk(t); - warn_unreachable(e); - return t || [ "block" ]; - } else { - e = walk(e); - warn_unreachable(t); - return e || [ "block" ]; - } - }, function() { - return make_real_if(c, t, e); - }); - }; - - function abort_else(c, t, e) { - var ret = [ [ "if", negate(c), e ] ]; - if (t[0] == "block") { - if (t[1]) ret = ret.concat(t[1]); - } else { - ret.push(t); - } - return walk([ "block", ret ]); - }; - - function make_real_if(c, t, e) { - c = walk(c); - t = walk(t); - e = walk(e); - - if (empty(e) && empty(t)) - return [ "stat", c ]; - - if (empty(t)) { - c = negate(c); - t = e; - e = null; - } else if (empty(e)) { - e = null; - } else { - // if we have both else and then, maybe it makes sense to switch them? - (function(){ - var a = gen_code(c); - var n = negate(c); - var b = gen_code(n); - if (b.length < a.length) { - var tmp = t; - t = e; - e = tmp; - c = n; - } - })(); - } - var ret = [ "if", c, t, e ]; - if (t[0] == "if" && empty(t[3]) && empty(e)) { - ret = best_of(ret, walk([ "if", [ "binary", "&&", c, t[1] ], t[2] ])); - } - else if (t[0] == "stat") { - if (e) { - if (e[0] == "stat") - ret = best_of(ret, [ "stat", make_conditional(c, t[1], e[1]) ]); - else if (aborts(e)) - ret = abort_else(c, t, e); - } - else { - ret = best_of(ret, [ "stat", make_conditional(c, t[1]) ]); - } - } - else if (e && t[0] == e[0] && (t[0] == "return" || t[0] == "throw") && t[1] && e[1]) { - ret = best_of(ret, [ t[0], make_conditional(c, t[1], e[1] ) ]); - } - else if (e && aborts(t)) { - ret = [ [ "if", c, t ] ]; - if (e[0] == "block") { - if (e[1]) ret = ret.concat(e[1]); - } - else { - ret.push(e); - } - ret = walk([ "block", ret ]); - } - else if (t && aborts(e)) { - ret = abort_else(c, t, e); - } - return ret; - }; - - function _do_while(cond, body) { - return when_constant(cond, function(cond, val){ - if (!val) { - warn_unreachable(body); - return [ "block" ]; - } else { - return [ "for", null, null, null, walk(body) ]; - } - }); - }; - - return w.with_walkers({ - "sub": function(expr, subscript) { - if (subscript[0] == "string") { - var name = subscript[1]; - if (is_identifier(name)) - return [ "dot", walk(expr), name ]; - else if (/^[1-9][0-9]*$/.test(name) || name === "0") - return [ "sub", walk(expr), [ "num", parseInt(name, 10) ] ]; - } - }, - "if": make_if, - "toplevel": function(body) { - return [ "toplevel", tighten(body) ]; - }, - "switch": function(expr, body) { - var last = body.length - 1; - return [ "switch", walk(expr), MAP(body, function(branch, i){ - var block = tighten(branch[1]); - if (i == last && block.length > 0) { - var node = block[block.length - 1]; - if (node[0] == "break" && !node[1]) - block.pop(); - } - return [ branch[0] ? walk(branch[0]) : null, block ]; - }) ]; - }, - "function": _lambda, - "defun": _lambda, - "block": function(body) { - if (body) return rmblock([ "block", tighten(body) ]); - }, - "binary": function(op, left, right) { - return when_constant([ "binary", op, walk(left), walk(right) ], function yes(c){ - return best_of(walk(c), this); - }, function no() { - return function(){ - if(op != "==" && op != "!=") return; - var l = walk(left), r = walk(right); - if(l && l[0] == "unary-prefix" && l[1] == "!" && l[2][0] == "num") - left = ['num', +!l[2][1]]; - else if (r && r[0] == "unary-prefix" && r[1] == "!" && r[2][0] == "num") - right = ['num', +!r[2][1]]; - return ["binary", op, left, right]; - }() || this; - }); - }, - "conditional": function(c, t, e) { - return make_conditional(walk(c), walk(t), walk(e)); - }, - "try": function(t, c, f) { - return [ - "try", - tighten(t), - c != null ? [ c[0], tighten(c[1]) ] : null, - f != null ? tighten(f) : null - ]; - }, - "unary-prefix": function(op, expr) { - expr = walk(expr); - var ret = [ "unary-prefix", op, expr ]; - if (op == "!") - ret = best_of(ret, negate(expr)); - return when_constant(ret, function(ast, val){ - return walk(ast); // it's either true or false, so minifies to !0 or !1 - }, function() { return ret }); - }, - "name": function(name) { - switch (name) { - case "true": return [ "unary-prefix", "!", [ "num", 0 ]]; - case "false": return [ "unary-prefix", "!", [ "num", 1 ]]; - } - }, - "while": _do_while, - "assign": function(op, lvalue, rvalue) { - lvalue = walk(lvalue); - rvalue = walk(rvalue); - var okOps = [ '+', '-', '/', '*', '%', '>>', '<<', '>>>', '|', '^', '&' ]; - if (op === true && lvalue[0] === "name" && rvalue[0] === "binary" && - ~okOps.indexOf(rvalue[1]) && rvalue[2][0] === "name" && - rvalue[2][1] === lvalue[1]) { - return [ this[0], rvalue[1], lvalue, rvalue[3] ] - } - return [ this[0], op, lvalue, rvalue ]; - }, - "call": function(expr, args) { - expr = walk(expr); - if (options.unsafe && expr[0] == "dot" && expr[1][0] == "string" && expr[2] == "toString") { - return expr[1]; - } - return [ this[0], expr, MAP(args, walk) ]; - }, - "num": function (num) { - if (!isFinite(num)) - return [ "binary", "/", num === 1 / 0 - ? [ "num", 1 ] : num === -1 / 0 - ? [ "unary-prefix", "-", [ "num", 1 ] ] - : [ "num", 0 ], [ "num", 0 ] ]; - - return [ this[0], num ]; - } - }, function() { - return walk(prepare_ifs(walk(prepare_ifs(ast)))); - }); -}; - -function squeeze_2(ast, options) { - var w = ast_walker(), walk = w.walk, scope; - function with_scope(s, cont) { - var save = scope, ret; - scope = s; - ret = cont(); - scope = save; - return ret; - }; - function lambda(name, args, body) { - return [ this[0], name, args, with_scope(body.scope, curry(MAP, body, walk)) ]; - }; - return w.with_walkers({ - "directive": function(dir) { - if (scope.active_directive(dir)) - return [ "block" ]; - scope.directives.push(dir); - }, - "toplevel": function(body) { - return [ this[0], with_scope(this.scope, curry(MAP, body, walk)) ]; - }, - "function": lambda, - "defun": lambda - }, function(){ - return walk(ast_add_scope(ast)); - }); -}; - -/* -----[ re-generate code from the AST ]----- */ - -var DOT_CALL_NO_PARENS = jsp.array_to_hash([ - "name", - "array", - "object", - "string", - "dot", - "sub", - "call", - "regexp", - "defun" -]); - -function make_string(str, ascii_only) { - var dq = 0, sq = 0; - str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s){ - switch (s) { - case "\\": return "\\\\"; - case "\b": return "\\b"; - case "\f": return "\\f"; - case "\n": return "\\n"; - case "\r": return "\\r"; - case "\u2028": return "\\u2028"; - case "\u2029": return "\\u2029"; - case '"': ++dq; return '"'; - case "'": ++sq; return "'"; - case "\0": return "\\0"; - } - return s; - }); - if (ascii_only) str = to_ascii(str); - if (dq > sq) return "'" + str.replace(/\x27/g, "\\'") + "'"; - else return '"' + str.replace(/\x22/g, '\\"') + '"'; -}; - -function to_ascii(str) { - return str.replace(/[\u0080-\uffff]/g, function(ch) { - var code = ch.charCodeAt(0).toString(16); - while (code.length < 4) code = "0" + code; - return "\\u" + code; - }); -}; - -var SPLICE_NEEDS_BRACKETS = jsp.array_to_hash([ "if", "while", "do", "for", "for-in", "with" ]); - -function gen_code(ast, options) { - options = defaults(options, { - indent_start : 0, - indent_level : 4, - quote_keys : false, - space_colon : false, - beautify : false, - ascii_only : false, - inline_script: false - }); - var beautify = !!options.beautify; - var indentation = 0, - newline = beautify ? "\n" : "", - space = beautify ? " " : ""; - - function encode_string(str) { - var ret = make_string(str, options.ascii_only); - if (options.inline_script) - ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1"); - return ret; - }; - - function make_name(name) { - name = name.toString(); - if (options.ascii_only) - name = to_ascii(name); - return name; - }; - - function indent(line) { - if (line == null) - line = ""; - if (beautify) - line = repeat_string(" ", options.indent_start + indentation * options.indent_level) + line; - return line; - }; - - function with_indent(cont, incr) { - if (incr == null) incr = 1; - indentation += incr; - try { return cont.apply(null, slice(arguments, 1)); } - finally { indentation -= incr; } - }; - - function last_char(str) { - str = str.toString(); - return str.charAt(str.length - 1); - }; - - function first_char(str) { - return str.toString().charAt(0); - }; - - function add_spaces(a) { - if (beautify) - return a.join(" "); - var b = []; - for (var i = 0; i < a.length; ++i) { - var next = a[i + 1]; - b.push(a[i]); - if (next && - ((is_identifier_char(last_char(a[i])) && (is_identifier_char(first_char(next)) - || first_char(next) == "\\")) || - (/[\+\-]$/.test(a[i].toString()) && /^[\+\-]/.test(next.toString()) || - last_char(a[i]) == "/" && first_char(next) == "/"))) { - b.push(" "); - } - } - return b.join(""); - }; - - function add_commas(a) { - return a.join("," + space); - }; - - function parenthesize(expr) { - var gen = make(expr); - for (var i = 1; i < arguments.length; ++i) { - var el = arguments[i]; - if ((el instanceof Function && el(expr)) || expr[0] == el) - return "(" + gen + ")"; - } - return gen; - }; - - function best_of(a) { - if (a.length == 1) { - return a[0]; - } - if (a.length == 2) { - var b = a[1]; - a = a[0]; - return a.length <= b.length ? a : b; - } - return best_of([ a[0], best_of(a.slice(1)) ]); - }; - - function needs_parens(expr) { - if (expr[0] == "function" || expr[0] == "object") { - // dot/call on a literal function requires the - // function literal itself to be parenthesized - // only if it's the first "thing" in a - // statement. This means that the parent is - // "stat", but it could also be a "seq" and - // we're the first in this "seq" and the - // parent is "stat", and so on. Messy stuff, - // but it worths the trouble. - var a = slice(w.stack()), self = a.pop(), p = a.pop(); - while (p) { - if (p[0] == "stat") return true; - if (((p[0] == "seq" || p[0] == "call" || p[0] == "dot" || p[0] == "sub" || p[0] == "conditional") && p[1] === self) || - ((p[0] == "binary" || p[0] == "assign" || p[0] == "unary-postfix") && p[2] === self)) { - self = p; - p = a.pop(); - } else { - return false; - } - } - } - return !HOP(DOT_CALL_NO_PARENS, expr[0]); - }; - - function make_num(num) { - var str = num.toString(10), a = [ str.replace(/^0\./, ".").replace('e+', 'e') ], m; - if (Math.floor(num) === num) { - if (num >= 0) { - a.push("0x" + num.toString(16).toLowerCase(), // probably pointless - "0" + num.toString(8)); // same. - } else { - a.push("-0x" + (-num).toString(16).toLowerCase(), // probably pointless - "-0" + (-num).toString(8)); // same. - } - if ((m = /^(.*?)(0+)$/.exec(num))) { - a.push(m[1] + "e" + m[2].length); - } - } else if ((m = /^0?\.(0+)(.*)$/.exec(num))) { - a.push(m[2] + "e-" + (m[1].length + m[2].length), - str.substr(str.indexOf("."))); - } - return best_of(a); - }; - - var w = ast_walker(); - var make = w.walk; - return w.with_walkers({ - "string": encode_string, - "num": make_num, - "name": make_name, - "debugger": function(){ return "debugger;" }, - "toplevel": function(statements) { - return make_block_statements(statements) - .join(newline + newline); - }, - "splice": function(statements) { - var parent = w.parent(); - if (HOP(SPLICE_NEEDS_BRACKETS, parent)) { - // we need block brackets in this case - return make_block.apply(this, arguments); - } else { - return MAP(make_block_statements(statements, true), - function(line, i) { - // the first line is already indented - return i > 0 ? indent(line) : line; - }).join(newline); - } - }, - "block": make_block, - "var": function(defs) { - return "var " + add_commas(MAP(defs, make_1vardef)) + ";"; - }, - "const": function(defs) { - return "const " + add_commas(MAP(defs, make_1vardef)) + ";"; - }, - "try": function(tr, ca, fi) { - var out = [ "try", make_block(tr) ]; - if (ca) out.push("catch", "(" + ca[0] + ")", make_block(ca[1])); - if (fi) out.push("finally", make_block(fi)); - return add_spaces(out); - }, - "throw": function(expr) { - return add_spaces([ "throw", make(expr) ]) + ";"; - }, - "new": function(ctor, args) { - args = args.length > 0 ? "(" + add_commas(MAP(args, function(expr){ - return parenthesize(expr, "seq"); - })) + ")" : ""; - return add_spaces([ "new", parenthesize(ctor, "seq", "binary", "conditional", "assign", function(expr){ - var w = ast_walker(), has_call = {}; - try { - w.with_walkers({ - "call": function() { throw has_call }, - "function": function() { return this } - }, function(){ - w.walk(expr); - }); - } catch(ex) { - if (ex === has_call) - return true; - throw ex; - } - }) + args ]); - }, - "switch": function(expr, body) { - return add_spaces([ "switch", "(" + make(expr) + ")", make_switch_block(body) ]); - }, - "break": function(label) { - var out = "break"; - if (label != null) - out += " " + make_name(label); - return out + ";"; - }, - "continue": function(label) { - var out = "continue"; - if (label != null) - out += " " + make_name(label); - return out + ";"; - }, - "conditional": function(co, th, el) { - return add_spaces([ parenthesize(co, "assign", "seq", "conditional"), "?", - parenthesize(th, "seq"), ":", - parenthesize(el, "seq") ]); - }, - "assign": function(op, lvalue, rvalue) { - if (op && op !== true) op += "="; - else op = "="; - return add_spaces([ make(lvalue), op, parenthesize(rvalue, "seq") ]); - }, - "dot": function(expr) { - var out = make(expr), i = 1; - if (expr[0] == "num") { - if (!/[a-f.]/i.test(out)) - out += "."; - } else if (expr[0] != "function" && needs_parens(expr)) - out = "(" + out + ")"; - while (i < arguments.length) - out += "." + make_name(arguments[i++]); - return out; - }, - "call": function(func, args) { - var f = make(func); - if (f.charAt(0) != "(" && needs_parens(func)) - f = "(" + f + ")"; - return f + "(" + add_commas(MAP(args, function(expr){ - return parenthesize(expr, "seq"); - })) + ")"; - }, - "function": make_function, - "defun": make_function, - "if": function(co, th, el) { - var out = [ "if", "(" + make(co) + ")", el ? make_then(th) : make(th) ]; - if (el) { - out.push("else", make(el)); - } - return add_spaces(out); - }, - "for": function(init, cond, step, block) { - var out = [ "for" ]; - init = (init != null ? make(init) : "").replace(/;*\s*$/, ";" + space); - cond = (cond != null ? make(cond) : "").replace(/;*\s*$/, ";" + space); - step = (step != null ? make(step) : "").replace(/;*\s*$/, ""); - var args = init + cond + step; - if (args == "; ; ") args = ";;"; - out.push("(" + args + ")", make(block)); - return add_spaces(out); - }, - "for-in": function(vvar, key, hash, block) { - return add_spaces([ "for", "(" + - (vvar ? make(vvar).replace(/;+$/, "") : make(key)), - "in", - make(hash) + ")", make(block) ]); - }, - "while": function(condition, block) { - return add_spaces([ "while", "(" + make(condition) + ")", make(block) ]); - }, - "do": function(condition, block) { - return add_spaces([ "do", make(block), "while", "(" + make(condition) + ")" ]) + ";"; - }, - "return": function(expr) { - var out = [ "return" ]; - if (expr != null) out.push(make(expr)); - return add_spaces(out) + ";"; - }, - "binary": function(operator, lvalue, rvalue) { - var left = make(lvalue), right = make(rvalue); - // XXX: I'm pretty sure other cases will bite here. - // we need to be smarter. - // adding parens all the time is the safest bet. - if (member(lvalue[0], [ "assign", "conditional", "seq" ]) || - lvalue[0] == "binary" && PRECEDENCE[operator] > PRECEDENCE[lvalue[1]] || - lvalue[0] == "function" && needs_parens(this)) { - left = "(" + left + ")"; - } - if (member(rvalue[0], [ "assign", "conditional", "seq" ]) || - rvalue[0] == "binary" && PRECEDENCE[operator] >= PRECEDENCE[rvalue[1]] && - !(rvalue[1] == operator && member(operator, [ "&&", "||", "*" ]))) { - right = "(" + right + ")"; - } - else if (!beautify && options.inline_script && (operator == "<" || operator == "<<") - && rvalue[0] == "regexp" && /^script/i.test(rvalue[1])) { - right = " " + right; - } - return add_spaces([ left, operator, right ]); - }, - "unary-prefix": function(operator, expr) { - var val = make(expr); - if (!(expr[0] == "num" || (expr[0] == "unary-prefix" && !HOP(OPERATORS, operator + expr[1])) || !needs_parens(expr))) - val = "(" + val + ")"; - return operator + (jsp.is_alphanumeric_char(operator.charAt(0)) ? " " : "") + val; - }, - "unary-postfix": function(operator, expr) { - var val = make(expr); - if (!(expr[0] == "num" || (expr[0] == "unary-postfix" && !HOP(OPERATORS, operator + expr[1])) || !needs_parens(expr))) - val = "(" + val + ")"; - return val + operator; - }, - "sub": function(expr, subscript) { - var hash = make(expr); - if (needs_parens(expr)) - hash = "(" + hash + ")"; - return hash + "[" + make(subscript) + "]"; - }, - "object": function(props) { - var obj_needs_parens = needs_parens(this); - if (props.length == 0) - return obj_needs_parens ? "({})" : "{}"; - var out = "{" + newline + with_indent(function(){ - return MAP(props, function(p){ - if (p.length == 3) { - // getter/setter. The name is in p[0], the arg.list in p[1][2], the - // body in p[1][3] and type ("get" / "set") in p[2]. - return indent(make_function(p[0], p[1][2], p[1][3], p[2], true)); - } - var key = p[0], val = parenthesize(p[1], "seq"); - if (options.quote_keys) { - key = encode_string(key); - } else if ((typeof key == "number" || !beautify && +key + "" == key) - && parseFloat(key) >= 0) { - key = make_num(+key); - } else if (!is_identifier(key)) { - key = encode_string(key); - } - return indent(add_spaces(beautify && options.space_colon - ? [ key, ":", val ] - : [ key + ":", val ])); - }).join("," + newline); - }) + newline + indent("}"); - return obj_needs_parens ? "(" + out + ")" : out; - }, - "regexp": function(rx, mods) { - if (options.ascii_only) rx = to_ascii(rx); - return "/" + rx + "/" + mods; - }, - "array": function(elements) { - if (elements.length == 0) return "[]"; - return add_spaces([ "[", add_commas(MAP(elements, function(el, i){ - if (!beautify && el[0] == "atom" && el[1] == "undefined") return i === elements.length - 1 ? "," : ""; - return parenthesize(el, "seq"); - })), "]" ]); - }, - "stat": function(stmt) { - return stmt != null - ? make(stmt).replace(/;*\s*$/, ";") - : ";"; - }, - "seq": function() { - return add_commas(MAP(slice(arguments), make)); - }, - "label": function(name, block) { - return add_spaces([ make_name(name), ":", make(block) ]); - }, - "with": function(expr, block) { - return add_spaces([ "with", "(" + make(expr) + ")", make(block) ]); - }, - "atom": function(name) { - return make_name(name); - }, - "directive": function(dir) { - return make_string(dir) + ";"; - } - }, function(){ return make(ast) }); - - // The squeezer replaces "block"-s that contain only a single - // statement with the statement itself; technically, the AST - // is correct, but this can create problems when we output an - // IF having an ELSE clause where the THEN clause ends in an - // IF *without* an ELSE block (then the outer ELSE would refer - // to the inner IF). This function checks for this case and - // adds the block brackets if needed. - function make_then(th) { - if (th == null) return ";"; - if (th[0] == "do") { - // https://github.com/mishoo/UglifyJS/issues/#issue/57 - // IE croaks with "syntax error" on code like this: - // if (foo) do ... while(cond); else ... - // we need block brackets around do/while - return make_block([ th ]); - } - var b = th; - while (true) { - var type = b[0]; - if (type == "if") { - if (!b[3]) - // no else, we must add the block - return make([ "block", [ th ]]); - b = b[3]; - } - else if (type == "while" || type == "do") b = b[2]; - else if (type == "for" || type == "for-in") b = b[4]; - else break; - } - return make(th); - }; - - function make_function(name, args, body, keyword, no_parens) { - var out = keyword || "function"; - if (name) { - out += " " + make_name(name); - } - out += "(" + add_commas(MAP(args, make_name)) + ")"; - out = add_spaces([ out, make_block(body) ]); - return (!no_parens && needs_parens(this)) ? "(" + out + ")" : out; - }; - - function must_has_semicolon(node) { - switch (node[0]) { - case "with": - case "while": - return empty(node[2]) || must_has_semicolon(node[2]); - case "for": - case "for-in": - return empty(node[4]) || must_has_semicolon(node[4]); - case "if": - if (empty(node[2]) && !node[3]) return true; // `if' with empty `then' and no `else' - if (node[3]) { - if (empty(node[3])) return true; // `else' present but empty - return must_has_semicolon(node[3]); // dive into the `else' branch - } - return must_has_semicolon(node[2]); // dive into the `then' branch - case "directive": - return true; - } - }; - - function make_block_statements(statements, noindent) { - for (var a = [], last = statements.length - 1, i = 0; i <= last; ++i) { - var stat = statements[i]; - var code = make(stat); - if (code != ";") { - if (!beautify && i == last && !must_has_semicolon(stat)) { - code = code.replace(/;+\s*$/, ""); - } - a.push(code); - } - } - return noindent ? a : MAP(a, indent); - }; - - function make_switch_block(body) { - var n = body.length; - if (n == 0) return "{}"; - return "{" + newline + MAP(body, function(branch, i){ - var has_body = branch[1].length > 0, code = with_indent(function(){ - return indent(branch[0] - ? add_spaces([ "case", make(branch[0]) + ":" ]) - : "default:"); - }, 0.5) + (has_body ? newline + with_indent(function(){ - return make_block_statements(branch[1]).join(newline); - }) : ""); - if (!beautify && has_body && i < n - 1) - code += ";"; - return code; - }).join(newline) + newline + indent("}"); - }; - - function make_block(statements) { - if (!statements) return ";"; - if (statements.length == 0) return "{}"; - return "{" + newline + with_indent(function(){ - return make_block_statements(statements).join(newline); - }) + newline + indent("}"); - }; - - function make_1vardef(def) { - var name = def[0], val = def[1]; - if (val != null) - name = add_spaces([ make_name(name), "=", parenthesize(val, "seq") ]); - return name; - }; - -}; - -function split_lines(code, max_line_length) { - var splits = [ 0 ]; - jsp.parse(function(){ - var next_token = jsp.tokenizer(code); - var last_split = 0; - var prev_token; - function current_length(tok) { - return tok.pos - last_split; - }; - function split_here(tok) { - last_split = tok.pos; - splits.push(last_split); - }; - function custom(){ - var tok = next_token.apply(this, arguments); - out: { - if (prev_token) { - if (prev_token.type == "keyword") break out; - } - if (current_length(tok) > max_line_length) { - switch (tok.type) { - case "keyword": - case "atom": - case "name": - case "punc": - split_here(tok); - break out; - } - } - } - prev_token = tok; - return tok; - }; - custom.context = function() { - return next_token.context.apply(this, arguments); - }; - return custom; - }()); - return splits.map(function(pos, i){ - return code.substring(pos, splits[i + 1] || code.length); - }).join("\n"); -}; - -/* -----[ Utilities ]----- */ - -function repeat_string(str, i) { - if (i <= 0) return ""; - if (i == 1) return str; - var d = repeat_string(str, i >> 1); - d += d; - if (i & 1) d += str; - return d; -}; - -function defaults(args, defs) { - var ret = {}; - if (args === true) - args = {}; - for (var i in defs) if (HOP(defs, i)) { - ret[i] = (args && HOP(args, i)) ? args[i] : defs[i]; - } - return ret; -}; - -function is_identifier(name) { - return /^[a-z_$][a-z0-9_$]*$/i.test(name) - && name != "this" - && !HOP(jsp.KEYWORDS_ATOM, name) - && !HOP(jsp.RESERVED_WORDS, name) - && !HOP(jsp.KEYWORDS, name); -}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -// some utilities - -var MAP; - -(function(){ - MAP = function(a, f, o) { - var ret = [], top = [], i; - function doit() { - var val = f.call(o, a[i], i); - if (val instanceof AtTop) { - val = val.v; - if (val instanceof Splice) { - top.push.apply(top, val.v); - } else { - top.push(val); - } - } - else if (val != skip) { - if (val instanceof Splice) { - ret.push.apply(ret, val.v); - } else { - ret.push(val); - } - } - }; - if (a instanceof Array) for (i = 0; i < a.length; ++i) doit(); - else for (i in a) if (HOP(a, i)) doit(); - return top.concat(ret); - }; - MAP.at_top = function(val) { return new AtTop(val) }; - MAP.splice = function(val) { return new Splice(val) }; - var skip = MAP.skip = {}; - function AtTop(val) { this.v = val }; - function Splice(val) { this.v = val }; -})(); - -/* -----[ Exports ]----- */ - -exports.ast_walker = ast_walker; -exports.ast_mangle = ast_mangle; -exports.ast_squeeze = ast_squeeze; -exports.ast_lift_variables = ast_lift_variables; -exports.gen_code = gen_code; -exports.ast_add_scope = ast_add_scope; -exports.set_logger = function(logger) { warn = logger }; -exports.make_string = make_string; -exports.split_lines = split_lines; -exports.MAP = MAP; - -// keep this last! -exports.ast_squeeze_more = require("./squeeze-more").ast_squeeze_more; - -// Local variables: -// js-indent-level: 4 -// End: -}); -define('uglifyjs/index', ["require", "exports", "module", "./parse-js", "./process", "./consolidator"], function(require, exports, module) { -//convienence function(src, [options]); -function uglify(orig_code, options){ - options || (options = {}); - var jsp = uglify.parser; - var pro = uglify.uglify; - - var ast = jsp.parse(orig_code, options.strict_semicolons); // parse code and get the initial AST - ast = pro.ast_mangle(ast, options.mangle_options); // get a new AST with mangled names - ast = pro.ast_squeeze(ast, options.squeeze_options); // get an AST with compression optimizations - var final_code = pro.gen_code(ast, options.gen_options); // compressed code here - return final_code; -}; - -uglify.parser = require("./parse-js"); -uglify.uglify = require("./process"); -uglify.consolidator = require("./consolidator"); - -module.exports = uglify -});/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/array-set', function (require, exports, module) { - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = {}; - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i]); - } - return set; - }; - - /** - * Because behavior goes wacky when you set `__proto__` on `this._set`, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - ArraySet.prototype._toSetString = function ArraySet__toSetString (aStr) { - return "$" + aStr; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr) { - if (this.has(aStr)) { - // Already a member; nothing to do. - return; - } - var idx = this._array.length; - this._array.push(aStr); - this._set[this._toSetString(aStr)] = idx; - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - return Object.prototype.hasOwnProperty.call(this._set, - this._toSetString(aStr)); - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (this.has(aStr)) { - return this._set[this._toSetString(aStr)]; - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -define('source-map/base64-vlq', function (require, exports, module) { - - var base64 = require('./base64'); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string. - */ - exports.decode = function base64VLQ_decode(aStr) { - var i = 0; - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (i >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charAt(i++)); - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - return { - value: fromVLQSigned(result), - rest: aStr.slice(i) - }; - }; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/base64', function (require, exports, module) { - - var charToIntMap = {}; - var intToCharMap = {}; - - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - .split('') - .forEach(function (ch, index) { - charToIntMap[ch] = index; - intToCharMap[index] = ch; - }); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function base64_encode(aNumber) { - if (aNumber in intToCharMap) { - return intToCharMap[aNumber]; - } - throw new TypeError("Must be between 0 and 63: " + aNumber); - }; - - /** - * Decode a single base 64 digit to an integer. - */ - exports.decode = function base64_decode(aChar) { - if (aChar in charToIntMap) { - return charToIntMap[aChar]; - } - throw new TypeError("Not a valid base 64 digit: " + aChar); - }; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/binary-search', function (require, exports, module) { - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the next - // closest element that is less than that element. - // - // 3. We did not find the exact element, and there is no next-closest - // element which is less than the one we are searching for, so we - // return null. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid]); - if (cmp === 0) { - // Found the element we are looking for. - return aHaystack[mid]; - } - else if (cmp > 0) { - // aHaystack[mid] is greater than our needle. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); - } - // We did not find an exact match, return the next closest one - // (termination case 2). - return aHaystack[mid]; - } - else { - // aHaystack[mid] is less than our needle. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); - } - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (2) or (3) and return the appropriate thing. - return aLow < 0 - ? null - : aHaystack[aLow]; - } - } - - /** - * This is an implementation of binary search which will always try and return - * the next lowest value checked if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - */ - exports.search = function search(aNeedle, aHaystack, aCompare) { - return aHaystack.length > 0 - ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) - : null; - }; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/source-map-consumer', function (require, exports, module) { - - var util = require('./util'); - var binarySearch = require('./binary-search'); - var ArraySet = require('./array-set').ArraySet; - var base64VLQ = require('./base64-vlq'); - - /** - * A SourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - var names = util.getArg(sourceMap, 'names'); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file'); - - if (version !== this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._names = ArraySet.fromArray(names); - this._sources = ArraySet.fromArray(sources); - this._sourceRoot = sourceRoot; - this.file = file; - - // `this._generatedMappings` and `this._originalMappings` hold the parsed - // mapping coordinates from the source map's "mappings" attribute. Each - // object in the array is of the form - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `this._generatedMappings` is ordered by the generated positions. - // - // `this._originalMappings` is ordered by the original positions. - this._generatedMappings = []; - this._originalMappings = []; - this._parseMappings(mappings, sourceRoot); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(SourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this._sourceRoot ? util.join(this._sourceRoot, s) : s; - }, this); - } - }); - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (an ordered list in this._generatedMappings). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var mappingSeparator = /^[,;]/; - var str = aStr; - var mapping; - var temp; - - while (str.length > 0) { - if (str.charAt(0) === ';') { - generatedLine++; - str = str.slice(1); - previousGeneratedColumn = 0; - } - else if (str.charAt(0) === ',') { - str = str.slice(1); - } - else { - mapping = {}; - mapping.generatedLine = generatedLine; - - // Generated column. - temp = base64VLQ.decode(str); - mapping.generatedColumn = previousGeneratedColumn + temp.value; - previousGeneratedColumn = mapping.generatedColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original source. - temp = base64VLQ.decode(str); - if (aSourceRoot) { - mapping.source = util.join(aSourceRoot, this._sources.at(previousSource + temp.value)); - } - else { - mapping.source = this._sources.at(previousSource + temp.value); - } - previousSource += temp.value; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source, but no line and column'); - } - - // Original line. - temp = base64VLQ.decode(str); - mapping.originalLine = previousOriginalLine + temp.value; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source and line, but no column'); - } - - // Original column. - temp = base64VLQ.decode(str); - mapping.originalColumn = previousOriginalColumn + temp.value; - previousOriginalColumn = mapping.originalColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original name. - temp = base64VLQ.decode(str); - mapping.name = this._names.at(previousName + temp.value); - previousName += temp.value; - str = temp.rest; - } - } - - this._generatedMappings.push(mapping); - this._originalMappings.push(mapping); - } - } - - this._originalMappings.sort(this._compareOriginalPositions); - }; - - /** - * Comparator between two mappings where the original positions are compared. - */ - SourceMapConsumer.prototype._compareOriginalPositions = - function SourceMapConsumer_compareOriginalPositions(mappingA, mappingB) { - if (mappingA.source > mappingB.source) { - return 1; - } - else if (mappingA.source < mappingB.source) { - return -1; - } - else { - var cmp = mappingA.originalLine - mappingB.originalLine; - return cmp === 0 - ? mappingA.originalColumn - mappingB.originalColumn - : cmp; - } - }; - - /** - * Comparator between two mappings where the generated positions are compared. - */ - SourceMapConsumer.prototype._compareGeneratedPositions = - function SourceMapConsumer_compareGeneratedPositions(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - return cmp === 0 - ? mappingA.generatedColumn - mappingB.generatedColumn - : cmp; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - SourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator); - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - SourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - this._compareGeneratedPositions) - - if (mapping) { - return { - source: util.getArg(mapping, 'source', null), - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: util.getArg(mapping, 'name', null) - }; - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - this._compareOriginalPositions) - - if (mapping) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null) - }; - } - - return { - line: null, - column: null - }; - }; - - exports.SourceMapConsumer = SourceMapConsumer; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/source-map-generator', function (require, exports, module) { - - var base64VLQ = require('./base64-vlq'); - var util = require('./util'); - var ArraySet = require('./array-set').ArraySet; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. To create a new one, you must pass an object - * with the following properties: - * - * - file: The filename of the generated source. - * - sourceRoot: An optional root for all URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - this._file = util.getArg(aArgs, 'file'); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = []; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - this._validateMapping(generated, original, source, name); - - if (source && !this._sources.has(source)) { - this._sources.add(source); - } - - if (name && !this._names.has(name)) { - this._names.add(name); - } - - this._mappings.push({ - generated: generated, - original: original, - source: source, - name: name - }); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping.'); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var mapping; - - // The mappings must be guarenteed to be in sorted order before we start - // serializing them or else the generated line numbers (which are defined - // via the ';' separators) will be all messed up. Note: it might be more - // performant to maintain the sorting as we insert them, rather than as we - // serialize them, but the big O is the same either way. - this._mappings.sort(function (mappingA, mappingB) { - var cmp = mappingA.generated.line - mappingB.generated.line; - return cmp === 0 - ? mappingA.generated.column - mappingB.generated.column - : cmp; - }); - - for (var i = 0, len = this._mappings.length; i < len; i++) { - mapping = this._mappings[i]; - - if (mapping.generated.line !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generated.line !== previousGeneratedLine) { - result += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - result += ','; - } - } - - result += base64VLQ.encode(mapping.generated.column - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generated.column; - - if (mapping.source && mapping.original) { - result += base64VLQ.encode(this._sources.indexOf(mapping.source) - - previousSource); - previousSource = this._sources.indexOf(mapping.source); - - // lines are stored 0-based in SourceMap spec version 3 - result += base64VLQ.encode(mapping.original.line - 1 - - previousOriginalLine); - previousOriginalLine = mapping.original.line - 1; - - result += base64VLQ.encode(mapping.original.column - - previousOriginalColumn); - previousOriginalColumn = mapping.original.column; - - if (mapping.name) { - result += base64VLQ.encode(this._names.indexOf(mapping.name) - - previousName); - previousName = this._names.indexOf(mapping.name); - } - } - } - - return result; - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - file: this._file, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._sourceRoot) { - map.sourceRoot = this._sourceRoot; - } - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/source-node', function (require, exports, module) { - - var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - */ - function SourceNode(aLine, aColumn, aSource, aChunks) { - this.children = []; - this.line = aLine; - this.column = aColumn; - this.source = aSource; - if (aChunks != null) this.add(aChunks); - } - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - this.children.forEach(function (chunk) { - if (chunk instanceof SourceNode) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, line: this.line, column: this.column }); - } - } - }, this); - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild instanceof SourceNode) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source != null - && original.line != null - && original.column != null) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - } - }); - } - chunk.split('').forEach(function (char) { - if (char === '\n') { - generated.line++; - generated.column = 0; - } else { - generated.column++; - } - }); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - -}); -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -define('source-map/util', function (require, exports, module) { - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - function join(aRoot, aPath) { - return aPath.charAt(0) === '/' - ? aPath - : aRoot.replace(/\/*$/, '') + '/' + aPath; - } - exports.join = join; - -}); -define('source-map', function (require, exports, module) { - -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./source-map/source-node').SourceNode; - -}); - -//Distributed under the BSD license: -//Copyright 2012 (c) Mihai Bazon -define('uglifyjs2', ['exports', 'source-map', 'logger'], function (exports, MOZ_SourceMap, logger) { -(function(exports, global) { - global["UglifyJS"] = exports; - "use strict"; - function array_to_hash(a) { - var ret = Object.create(null); - for (var i = 0; i < a.length; ++i) ret[a[i]] = true; - return ret; - } - function slice(a, start) { - return Array.prototype.slice.call(a, start || 0); - } - function characters(str) { - return str.split(""); - } - function member(name, array) { - for (var i = array.length; --i >= 0; ) if (array[i] == name) return true; - return false; - } - function find_if(func, array) { - for (var i = 0, n = array.length; i < n; ++i) { - if (func(array[i])) return array[i]; - } - } - function repeat_string(str, i) { - if (i <= 0) return ""; - if (i == 1) return str; - var d = repeat_string(str, i >> 1); - d += d; - if (i & 1) d += str; - return d; - } - function DefaultsError(msg, defs) { - this.msg = msg; - this.defs = defs; - } - function defaults(args, defs, croak) { - if (args === true) args = {}; - var ret = args || {}; - if (croak) for (var i in ret) if (ret.hasOwnProperty(i) && !defs.hasOwnProperty(i)) throw new DefaultsError("`" + i + "` is not a supported option", defs); - for (var i in defs) if (defs.hasOwnProperty(i)) { - ret[i] = args && args.hasOwnProperty(i) ? args[i] : defs[i]; - } - return ret; - } - function merge(obj, ext) { - for (var i in ext) if (ext.hasOwnProperty(i)) { - obj[i] = ext[i]; - } - return obj; - } - function noop() {} - var MAP = function() { - function MAP(a, f, backwards) { - var ret = [], top = [], i; - function doit() { - var val = f(a[i], i); - var is_last = val instanceof Last; - if (is_last) val = val.v; - if (val instanceof AtTop) { - val = val.v; - if (val instanceof Splice) { - top.push.apply(top, backwards ? val.v.slice().reverse() : val.v); - } else { - top.push(val); - } - } else if (val !== skip) { - if (val instanceof Splice) { - ret.push.apply(ret, backwards ? val.v.slice().reverse() : val.v); - } else { - ret.push(val); - } - } - return is_last; - } - if (a instanceof Array) { - if (backwards) { - for (i = a.length; --i >= 0; ) if (doit()) break; - ret.reverse(); - top.reverse(); - } else { - for (i = 0; i < a.length; ++i) if (doit()) break; - } - } else { - for (i in a) if (a.hasOwnProperty(i)) if (doit()) break; - } - return top.concat(ret); - } - MAP.at_top = function(val) { - return new AtTop(val); - }; - MAP.splice = function(val) { - return new Splice(val); - }; - MAP.last = function(val) { - return new Last(val); - }; - var skip = MAP.skip = {}; - function AtTop(val) { - this.v = val; - } - function Splice(val) { - this.v = val; - } - function Last(val) { - this.v = val; - } - return MAP; - }(); - function push_uniq(array, el) { - if (array.indexOf(el) < 0) array.push(el); - } - function string_template(text, props) { - return text.replace(/\{(.+?)\}/g, function(str, p) { - return props[p]; - }); - } - function remove(array, el) { - for (var i = array.length; --i >= 0; ) { - if (array[i] === el) array.splice(i, 1); - } - } - function mergeSort(array, cmp) { - if (array.length < 2) return array.slice(); - function merge(a, b) { - var r = [], ai = 0, bi = 0, i = 0; - while (ai < a.length && bi < b.length) { - cmp(a[ai], b[bi]) <= 0 ? r[i++] = a[ai++] : r[i++] = b[bi++]; - } - if (ai < a.length) r.push.apply(r, a.slice(ai)); - if (bi < b.length) r.push.apply(r, b.slice(bi)); - return r; - } - function _ms(a) { - if (a.length <= 1) return a; - var m = Math.floor(a.length / 2), left = a.slice(0, m), right = a.slice(m); - left = _ms(left); - right = _ms(right); - return merge(left, right); - } - return _ms(array); - } - function set_difference(a, b) { - return a.filter(function(el) { - return b.indexOf(el) < 0; - }); - } - function set_intersection(a, b) { - return a.filter(function(el) { - return b.indexOf(el) >= 0; - }); - } - function makePredicate(words) { - if (!(words instanceof Array)) words = words.split(" "); - var f = "", cats = []; - out: for (var i = 0; i < words.length; ++i) { - for (var j = 0; j < cats.length; ++j) if (cats[j][0].length == words[i].length) { - cats[j].push(words[i]); - continue out; - } - cats.push([ words[i] ]); - } - function compareTo(arr) { - if (arr.length == 1) return f += "return str === " + JSON.stringify(arr[0]) + ";"; - f += "switch(str){"; - for (var i = 0; i < arr.length; ++i) f += "case " + JSON.stringify(arr[i]) + ":"; - f += "return true}return false;"; - } - if (cats.length > 3) { - cats.sort(function(a, b) { - return b.length - a.length; - }); - f += "switch(str.length){"; - for (var i = 0; i < cats.length; ++i) { - var cat = cats[i]; - f += "case " + cat[0].length + ":"; - compareTo(cat); - } - f += "}"; - } else { - compareTo(words); - } - return new Function("str", f); - } - function Dictionary() { - this._values = Object.create(null); - this._size = 0; - } - Dictionary.prototype = { - set: function(key, val) { - if (!this.has(key)) ++this._size; - this._values["$" + key] = val; - return this; - }, - get: function(key) { - return this._values["$" + key]; - }, - del: function(key) { - if (this.has(key)) { - --this._size; - delete this._values["$" + key]; - } - return this; - }, - has: function(key) { - return "$" + key in this._values; - }, - each: function(f) { - for (var i in this._values) f(this._values[i], i.substr(1)); - }, - size: function() { - return this._size; - }, - map: function(f) { - var ret = []; - for (var i in this._values) ret.push(f(this._values[i], i.substr(1))); - return ret; - } - }; - "use strict"; - function DEFNODE(type, props, methods, base) { - if (arguments.length < 4) base = AST_Node; - if (!props) props = []; else props = props.split(/\s+/); - var self_props = props; - if (base && base.PROPS) props = props.concat(base.PROPS); - var code = "return function AST_" + type + "(props){ if (props) { "; - for (var i = props.length; --i >= 0; ) { - code += "this." + props[i] + " = props." + props[i] + ";"; - } - var proto = base && new base(); - if (proto && proto.initialize || methods && methods.initialize) code += "this.initialize();"; - code += "}}"; - var ctor = new Function(code)(); - if (proto) { - ctor.prototype = proto; - ctor.BASE = base; - } - if (base) base.SUBCLASSES.push(ctor); - ctor.prototype.CTOR = ctor; - ctor.PROPS = props || null; - ctor.SELF_PROPS = self_props; - ctor.SUBCLASSES = []; - if (type) { - ctor.prototype.TYPE = ctor.TYPE = type; - } - if (methods) for (i in methods) if (methods.hasOwnProperty(i)) { - if (/^\$/.test(i)) { - ctor[i.substr(1)] = methods[i]; - } else { - ctor.prototype[i] = methods[i]; - } - } - ctor.DEFMETHOD = function(name, method) { - this.prototype[name] = method; - }; - return ctor; - } - var AST_Token = DEFNODE("Token", "type value line col pos endpos nlb comments_before file", {}, null); - var AST_Node = DEFNODE("Node", "start end", { - clone: function() { - return new this.CTOR(this); - }, - $documentation: "Base class of all AST nodes", - $propdoc: { - start: "[AST_Token] The first token of this node", - end: "[AST_Token] The last token of this node" - }, - _walk: function(visitor) { - return visitor._visit(this); - }, - walk: function(visitor) { - return this._walk(visitor); - } - }, null); - AST_Node.warn_function = null; - AST_Node.warn = function(txt, props) { - if (AST_Node.warn_function) AST_Node.warn_function(string_template(txt, props)); - }; - var AST_Statement = DEFNODE("Statement", null, { - $documentation: "Base class of all statements" - }); - var AST_Debugger = DEFNODE("Debugger", null, { - $documentation: "Represents a debugger statement" - }, AST_Statement); - var AST_Directive = DEFNODE("Directive", "value scope", { - $documentation: 'Represents a directive, like "use strict";', - $propdoc: { - value: "[string] The value of this directive as a plain string (it's not an AST_String!)", - scope: "[AST_Scope/S] The scope that this directive affects" - } - }, AST_Statement); - var AST_SimpleStatement = DEFNODE("SimpleStatement", "body", { - $documentation: "A statement consisting of an expression, i.e. a = 1 + 2", - $propdoc: { - body: "[AST_Node] an expression node (should not be instanceof AST_Statement)" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.body._walk(visitor); - }); - } - }, AST_Statement); - function walk_body(node, visitor) { - if (node.body instanceof AST_Statement) { - node.body._walk(visitor); - } else node.body.forEach(function(stat) { - stat._walk(visitor); - }); - } - var AST_Block = DEFNODE("Block", "body", { - $documentation: "A body of statements (usually bracketed)", - $propdoc: { - body: "[AST_Statement*] an array of statements" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - walk_body(this, visitor); - }); - } - }, AST_Statement); - var AST_BlockStatement = DEFNODE("BlockStatement", null, { - $documentation: "A block statement" - }, AST_Block); - var AST_EmptyStatement = DEFNODE("EmptyStatement", null, { - $documentation: "The empty statement (empty block or simply a semicolon)", - _walk: function(visitor) { - return visitor._visit(this); - } - }, AST_Statement); - var AST_StatementWithBody = DEFNODE("StatementWithBody", "body", { - $documentation: "Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`", - $propdoc: { - body: "[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.body._walk(visitor); - }); - } - }, AST_Statement); - var AST_LabeledStatement = DEFNODE("LabeledStatement", "label", { - $documentation: "Statement with a label", - $propdoc: { - label: "[AST_Label] a label definition" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.label._walk(visitor); - this.body._walk(visitor); - }); - } - }, AST_StatementWithBody); - var AST_DWLoop = DEFNODE("DWLoop", "condition", { - $documentation: "Base class for do/while statements", - $propdoc: { - condition: "[AST_Node] the loop condition. Should not be instanceof AST_Statement" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.condition._walk(visitor); - this.body._walk(visitor); - }); - } - }, AST_StatementWithBody); - var AST_Do = DEFNODE("Do", null, { - $documentation: "A `do` statement" - }, AST_DWLoop); - var AST_While = DEFNODE("While", null, { - $documentation: "A `while` statement" - }, AST_DWLoop); - var AST_For = DEFNODE("For", "init condition step", { - $documentation: "A `for` statement", - $propdoc: { - init: "[AST_Node?] the `for` initialization code, or null if empty", - condition: "[AST_Node?] the `for` termination clause, or null if empty", - step: "[AST_Node?] the `for` update clause, or null if empty" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - if (this.init) this.init._walk(visitor); - if (this.condition) this.condition._walk(visitor); - if (this.step) this.step._walk(visitor); - this.body._walk(visitor); - }); - } - }, AST_StatementWithBody); - var AST_ForIn = DEFNODE("ForIn", "init name object", { - $documentation: "A `for ... in` statement", - $propdoc: { - init: "[AST_Node] the `for/in` initialization code", - name: "[AST_SymbolRef?] the loop variable, only if `init` is AST_Var", - object: "[AST_Node] the object that we're looping through" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.init._walk(visitor); - this.object._walk(visitor); - this.body._walk(visitor); - }); - } - }, AST_StatementWithBody); - var AST_With = DEFNODE("With", "expression", { - $documentation: "A `with` statement", - $propdoc: { - expression: "[AST_Node] the `with` expression" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - this.body._walk(visitor); - }); - } - }, AST_StatementWithBody); - var AST_Scope = DEFNODE("Scope", "directives variables functions uses_with uses_eval parent_scope enclosed cname", { - $documentation: "Base class for all statements introducing a lexical scope", - $propdoc: { - directives: "[string*/S] an array of directives declared in this scope", - variables: "[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope", - functions: "[Object/S] like `variables`, but only lists function declarations", - uses_with: "[boolean/S] tells whether this scope uses the `with` statement", - uses_eval: "[boolean/S] tells whether this scope contains a direct call to the global `eval`", - parent_scope: "[AST_Scope?/S] link to the parent scope", - enclosed: "[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes", - cname: "[integer/S] current index for mangling variables (used internally by the mangler)" - } - }, AST_Block); - var AST_Toplevel = DEFNODE("Toplevel", "globals", { - $documentation: "The toplevel scope", - $propdoc: { - globals: "[Object/S] a map of name -> SymbolDef for all undeclared names" - }, - wrap_commonjs: function(name, export_all) { - var self = this; - if (export_all) { - self.figure_out_scope(); - var to_export = []; - self.walk(new TreeWalker(function(node) { - if (node instanceof AST_SymbolDeclaration && node.definition().global) { - if (!find_if(function(n) { - return n.name == node.name; - }, to_export)) to_export.push(node); - } - })); - } - var wrapped_tl = "(function(exports, global){ global['" + name + "'] = exports; '$ORIG'; '$EXPORTS'; }({}, (function(){return this}())))"; - wrapped_tl = parse(wrapped_tl); - wrapped_tl = wrapped_tl.transform(new TreeTransformer(function before(node) { - if (node instanceof AST_SimpleStatement) { - node = node.body; - if (node instanceof AST_String) switch (node.getValue()) { - case "$ORIG": - return MAP.splice(self.body); - - case "$EXPORTS": - var body = []; - to_export.forEach(function(sym) { - body.push(new AST_SimpleStatement({ - body: new AST_Assign({ - left: new AST_Sub({ - expression: new AST_SymbolRef({ - name: "exports" - }), - property: new AST_String({ - value: sym.name - }) - }), - operator: "=", - right: new AST_SymbolRef(sym) - }) - })); - }); - return MAP.splice(body); - } - } - })); - return wrapped_tl; - } - }, AST_Scope); - var AST_Lambda = DEFNODE("Lambda", "name argnames uses_arguments", { - $documentation: "Base class for functions", - $propdoc: { - name: "[AST_SymbolDeclaration?] the name of this function", - argnames: "[AST_SymbolFunarg*] array of function arguments", - uses_arguments: "[boolean/S] tells whether this function accesses the arguments array" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - if (this.name) this.name._walk(visitor); - this.argnames.forEach(function(arg) { - arg._walk(visitor); - }); - walk_body(this, visitor); - }); - } - }, AST_Scope); - var AST_Accessor = DEFNODE("Accessor", null, { - $documentation: "A setter/getter function" - }, AST_Lambda); - var AST_Function = DEFNODE("Function", null, { - $documentation: "A function expression" - }, AST_Lambda); - var AST_Defun = DEFNODE("Defun", null, { - $documentation: "A function definition" - }, AST_Lambda); - var AST_Jump = DEFNODE("Jump", null, { - $documentation: "Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)" - }, AST_Statement); - var AST_Exit = DEFNODE("Exit", "value", { - $documentation: "Base class for “exits” (`return` and `throw`)", - $propdoc: { - value: "[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return" - }, - _walk: function(visitor) { - return visitor._visit(this, this.value && function() { - this.value._walk(visitor); - }); - } - }, AST_Jump); - var AST_Return = DEFNODE("Return", null, { - $documentation: "A `return` statement" - }, AST_Exit); - var AST_Throw = DEFNODE("Throw", null, { - $documentation: "A `throw` statement" - }, AST_Exit); - var AST_LoopControl = DEFNODE("LoopControl", "label", { - $documentation: "Base class for loop control statements (`break` and `continue`)", - $propdoc: { - label: "[AST_LabelRef?] the label, or null if none" - }, - _walk: function(visitor) { - return visitor._visit(this, this.label && function() { - this.label._walk(visitor); - }); - } - }, AST_Jump); - var AST_Break = DEFNODE("Break", null, { - $documentation: "A `break` statement" - }, AST_LoopControl); - var AST_Continue = DEFNODE("Continue", null, { - $documentation: "A `continue` statement" - }, AST_LoopControl); - var AST_If = DEFNODE("If", "condition alternative", { - $documentation: "A `if` statement", - $propdoc: { - condition: "[AST_Node] the `if` condition", - alternative: "[AST_Statement?] the `else` part, or null if not present" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.condition._walk(visitor); - this.body._walk(visitor); - if (this.alternative) this.alternative._walk(visitor); - }); - } - }, AST_StatementWithBody); - var AST_Switch = DEFNODE("Switch", "expression", { - $documentation: "A `switch` statement", - $propdoc: { - expression: "[AST_Node] the `switch` “discriminant”" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - walk_body(this, visitor); - }); - } - }, AST_Block); - var AST_SwitchBranch = DEFNODE("SwitchBranch", null, { - $documentation: "Base class for `switch` branches" - }, AST_Block); - var AST_Default = DEFNODE("Default", null, { - $documentation: "A `default` switch branch" - }, AST_SwitchBranch); - var AST_Case = DEFNODE("Case", "expression", { - $documentation: "A `case` switch branch", - $propdoc: { - expression: "[AST_Node] the `case` expression" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - walk_body(this, visitor); - }); - } - }, AST_SwitchBranch); - var AST_Try = DEFNODE("Try", "bcatch bfinally", { - $documentation: "A `try` statement", - $propdoc: { - bcatch: "[AST_Catch?] the catch block, or null if not present", - bfinally: "[AST_Finally?] the finally block, or null if not present" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - walk_body(this, visitor); - if (this.bcatch) this.bcatch._walk(visitor); - if (this.bfinally) this.bfinally._walk(visitor); - }); - } - }, AST_Block); - var AST_Catch = DEFNODE("Catch", "argname", { - $documentation: "A `catch` node; only makes sense as part of a `try` statement", - $propdoc: { - argname: "[AST_SymbolCatch] symbol for the exception" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.argname._walk(visitor); - walk_body(this, visitor); - }); - } - }, AST_Block); - var AST_Finally = DEFNODE("Finally", null, { - $documentation: "A `finally` node; only makes sense as part of a `try` statement" - }, AST_Block); - var AST_Definitions = DEFNODE("Definitions", "definitions", { - $documentation: "Base class for `var` or `const` nodes (variable declarations/initializations)", - $propdoc: { - definitions: "[AST_VarDef*] array of variable definitions" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.definitions.forEach(function(def) { - def._walk(visitor); - }); - }); - } - }, AST_Statement); - var AST_Var = DEFNODE("Var", null, { - $documentation: "A `var` statement" - }, AST_Definitions); - var AST_Const = DEFNODE("Const", null, { - $documentation: "A `const` statement" - }, AST_Definitions); - var AST_VarDef = DEFNODE("VarDef", "name value", { - $documentation: "A variable declaration; only appears in a AST_Definitions node", - $propdoc: { - name: "[AST_SymbolVar|AST_SymbolConst] name of the variable", - value: "[AST_Node?] initializer, or null of there's no initializer" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.name._walk(visitor); - if (this.value) this.value._walk(visitor); - }); - } - }); - var AST_Call = DEFNODE("Call", "expression args", { - $documentation: "A function call expression", - $propdoc: { - expression: "[AST_Node] expression to invoke as function", - args: "[AST_Node*] array of arguments" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - this.args.forEach(function(arg) { - arg._walk(visitor); - }); - }); - } - }); - var AST_New = DEFNODE("New", null, { - $documentation: "An object instantiation. Derives from a function call since it has exactly the same properties" - }, AST_Call); - var AST_Seq = DEFNODE("Seq", "car cdr", { - $documentation: "A sequence expression (two comma-separated expressions)", - $propdoc: { - car: "[AST_Node] first element in sequence", - cdr: "[AST_Node] second element in sequence" - }, - $cons: function(x, y) { - var seq = new AST_Seq(x); - seq.car = x; - seq.cdr = y; - return seq; - }, - $from_array: function(array) { - if (array.length == 0) return null; - if (array.length == 1) return array[0].clone(); - var list = null; - for (var i = array.length; --i >= 0; ) { - list = AST_Seq.cons(array[i], list); - } - var p = list; - while (p) { - if (p.cdr && !p.cdr.cdr) { - p.cdr = p.cdr.car; - break; - } - p = p.cdr; - } - return list; - }, - to_array: function() { - var p = this, a = []; - while (p) { - a.push(p.car); - if (p.cdr && !(p.cdr instanceof AST_Seq)) { - a.push(p.cdr); - break; - } - p = p.cdr; - } - return a; - }, - add: function(node) { - var p = this; - while (p) { - if (!(p.cdr instanceof AST_Seq)) { - var cell = AST_Seq.cons(p.cdr, node); - return p.cdr = cell; - } - p = p.cdr; - } - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.car._walk(visitor); - if (this.cdr) this.cdr._walk(visitor); - }); - } - }); - var AST_PropAccess = DEFNODE("PropAccess", "expression property", { - $documentation: 'Base class for property access expressions, i.e. `a.foo` or `a["foo"]`', - $propdoc: { - expression: "[AST_Node] the “container” expression", - property: "[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node" - } - }); - var AST_Dot = DEFNODE("Dot", null, { - $documentation: "A dotted property access expression", - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - }); - } - }, AST_PropAccess); - var AST_Sub = DEFNODE("Sub", null, { - $documentation: 'Index-style property access, i.e. `a["foo"]`', - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - this.property._walk(visitor); - }); - } - }, AST_PropAccess); - var AST_Unary = DEFNODE("Unary", "operator expression", { - $documentation: "Base class for unary expressions", - $propdoc: { - operator: "[string] the operator", - expression: "[AST_Node] expression that this unary operator applies to" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.expression._walk(visitor); - }); - } - }); - var AST_UnaryPrefix = DEFNODE("UnaryPrefix", null, { - $documentation: "Unary prefix expression, i.e. `typeof i` or `++i`" - }, AST_Unary); - var AST_UnaryPostfix = DEFNODE("UnaryPostfix", null, { - $documentation: "Unary postfix expression, i.e. `i++`" - }, AST_Unary); - var AST_Binary = DEFNODE("Binary", "left operator right", { - $documentation: "Binary expression, i.e. `a + b`", - $propdoc: { - left: "[AST_Node] left-hand side expression", - operator: "[string] the operator", - right: "[AST_Node] right-hand side expression" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.left._walk(visitor); - this.right._walk(visitor); - }); - } - }); - var AST_Conditional = DEFNODE("Conditional", "condition consequent alternative", { - $documentation: "Conditional expression using the ternary operator, i.e. `a ? b : c`", - $propdoc: { - condition: "[AST_Node]", - consequent: "[AST_Node]", - alternative: "[AST_Node]" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.condition._walk(visitor); - this.consequent._walk(visitor); - this.alternative._walk(visitor); - }); - } - }); - var AST_Assign = DEFNODE("Assign", null, { - $documentation: "An assignment expression — `a = b + 5`" - }, AST_Binary); - var AST_Array = DEFNODE("Array", "elements", { - $documentation: "An array literal", - $propdoc: { - elements: "[AST_Node*] array of elements" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.elements.forEach(function(el) { - el._walk(visitor); - }); - }); - } - }); - var AST_Object = DEFNODE("Object", "properties", { - $documentation: "An object literal", - $propdoc: { - properties: "[AST_ObjectProperty*] array of properties" - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.properties.forEach(function(prop) { - prop._walk(visitor); - }); - }); - } - }); - var AST_ObjectProperty = DEFNODE("ObjectProperty", "key value", { - $documentation: "Base class for literal object properties", - $propdoc: { - key: "[string] the property name; it's always a plain string in our AST, no matter if it was a string, number or identifier in original code", - value: "[AST_Node] property value. For setters and getters this is an AST_Function." - }, - _walk: function(visitor) { - return visitor._visit(this, function() { - this.value._walk(visitor); - }); - } - }); - var AST_ObjectKeyVal = DEFNODE("ObjectKeyVal", null, { - $documentation: "A key: value object property" - }, AST_ObjectProperty); - var AST_ObjectSetter = DEFNODE("ObjectSetter", null, { - $documentation: "An object setter property" - }, AST_ObjectProperty); - var AST_ObjectGetter = DEFNODE("ObjectGetter", null, { - $documentation: "An object getter property" - }, AST_ObjectProperty); - var AST_Symbol = DEFNODE("Symbol", "scope name thedef", { - $propdoc: { - name: "[string] name of this symbol", - scope: "[AST_Scope/S] the current scope (not necessarily the definition scope)", - thedef: "[SymbolDef/S] the definition of this symbol" - }, - $documentation: "Base class for all symbols" - }); - var AST_SymbolAccessor = DEFNODE("SymbolAccessor", null, { - $documentation: "The name of a property accessor (setter/getter function)" - }, AST_Symbol); - var AST_SymbolDeclaration = DEFNODE("SymbolDeclaration", "init", { - $documentation: "A declaration symbol (symbol in var/const, function name or argument, symbol in catch)", - $propdoc: { - init: "[AST_Node*/S] array of initializers for this declaration." - } - }, AST_Symbol); - var AST_SymbolVar = DEFNODE("SymbolVar", null, { - $documentation: "Symbol defining a variable" - }, AST_SymbolDeclaration); - var AST_SymbolConst = DEFNODE("SymbolConst", null, { - $documentation: "A constant declaration" - }, AST_SymbolDeclaration); - var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, { - $documentation: "Symbol naming a function argument" - }, AST_SymbolVar); - var AST_SymbolDefun = DEFNODE("SymbolDefun", null, { - $documentation: "Symbol defining a function" - }, AST_SymbolDeclaration); - var AST_SymbolLambda = DEFNODE("SymbolLambda", null, { - $documentation: "Symbol naming a function expression" - }, AST_SymbolDeclaration); - var AST_SymbolCatch = DEFNODE("SymbolCatch", null, { - $documentation: "Symbol naming the exception in catch" - }, AST_SymbolDeclaration); - var AST_Label = DEFNODE("Label", "references", { - $documentation: "Symbol naming a label (declaration)", - $propdoc: { - references: "[AST_LabelRef*] a list of nodes referring to this label" - } - }, AST_Symbol); - var AST_SymbolRef = DEFNODE("SymbolRef", null, { - $documentation: "Reference to some symbol (not definition/declaration)" - }, AST_Symbol); - var AST_LabelRef = DEFNODE("LabelRef", null, { - $documentation: "Reference to a label symbol" - }, AST_Symbol); - var AST_This = DEFNODE("This", null, { - $documentation: "The `this` symbol" - }, AST_Symbol); - var AST_Constant = DEFNODE("Constant", null, { - $documentation: "Base class for all constants", - getValue: function() { - return this.value; - } - }); - var AST_String = DEFNODE("String", "value", { - $documentation: "A string literal", - $propdoc: { - value: "[string] the contents of this string" - } - }, AST_Constant); - var AST_Number = DEFNODE("Number", "value", { - $documentation: "A number literal", - $propdoc: { - value: "[number] the numeric value" - } - }, AST_Constant); - var AST_RegExp = DEFNODE("RegExp", "value", { - $documentation: "A regexp literal", - $propdoc: { - value: "[RegExp] the actual regexp" - } - }, AST_Constant); - var AST_Atom = DEFNODE("Atom", null, { - $documentation: "Base class for atoms" - }, AST_Constant); - var AST_Null = DEFNODE("Null", null, { - $documentation: "The `null` atom", - value: null - }, AST_Atom); - var AST_NaN = DEFNODE("NaN", null, { - $documentation: "The impossible value", - value: 0 / 0 - }, AST_Atom); - var AST_Undefined = DEFNODE("Undefined", null, { - $documentation: "The `undefined` value", - value: function() {}() - }, AST_Atom); - var AST_Infinity = DEFNODE("Infinity", null, { - $documentation: "The `Infinity` value", - value: 1 / 0 - }, AST_Atom); - var AST_Boolean = DEFNODE("Boolean", null, { - $documentation: "Base class for booleans" - }, AST_Atom); - var AST_False = DEFNODE("False", null, { - $documentation: "The `false` atom", - value: false - }, AST_Boolean); - var AST_True = DEFNODE("True", null, { - $documentation: "The `true` atom", - value: true - }, AST_Boolean); - function TreeWalker(callback) { - this.visit = callback; - this.stack = []; - } - TreeWalker.prototype = { - _visit: function(node, descend) { - this.stack.push(node); - var ret = this.visit(node, descend ? function() { - descend.call(node); - } : noop); - if (!ret && descend) { - descend.call(node); - } - this.stack.pop(); - return ret; - }, - parent: function(n) { - return this.stack[this.stack.length - 2 - (n || 0)]; - }, - push: function(node) { - this.stack.push(node); - }, - pop: function() { - return this.stack.pop(); - }, - self: function() { - return this.stack[this.stack.length - 1]; - }, - find_parent: function(type) { - var stack = this.stack; - for (var i = stack.length; --i >= 0; ) { - var x = stack[i]; - if (x instanceof type) return x; - } - }, - in_boolean_context: function() { - var stack = this.stack; - var i = stack.length, self = stack[--i]; - while (i > 0) { - var p = stack[--i]; - if (p instanceof AST_If && p.condition === self || p instanceof AST_Conditional && p.condition === self || p instanceof AST_DWLoop && p.condition === self || p instanceof AST_For && p.condition === self || p instanceof AST_UnaryPrefix && p.operator == "!" && p.expression === self) { - return true; - } - if (!(p instanceof AST_Binary && (p.operator == "&&" || p.operator == "||"))) return false; - self = p; - } - }, - loopcontrol_target: function(label) { - var stack = this.stack; - if (label) { - for (var i = stack.length; --i >= 0; ) { - var x = stack[i]; - if (x instanceof AST_LabeledStatement && x.label.name == label.name) { - return x.body; - } - } - } else { - for (var i = stack.length; --i >= 0; ) { - var x = stack[i]; - if (x instanceof AST_Switch || x instanceof AST_For || x instanceof AST_ForIn || x instanceof AST_DWLoop) return x; - } - } - } - }; - "use strict"; - var KEYWORDS = "break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with"; - var KEYWORDS_ATOM = "false null true"; - var RESERVED_WORDS = "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized this throws transient volatile" + " " + KEYWORDS_ATOM + " " + KEYWORDS; - var KEYWORDS_BEFORE_EXPRESSION = "return new delete throw else case"; - KEYWORDS = makePredicate(KEYWORDS); - RESERVED_WORDS = makePredicate(RESERVED_WORDS); - KEYWORDS_BEFORE_EXPRESSION = makePredicate(KEYWORDS_BEFORE_EXPRESSION); - KEYWORDS_ATOM = makePredicate(KEYWORDS_ATOM); - var OPERATOR_CHARS = makePredicate(characters("+-*&%=<>!?|~^")); - var RE_HEX_NUMBER = /^0x[0-9a-f]+$/i; - var RE_OCT_NUMBER = /^0[0-7]+$/; - var RE_DEC_NUMBER = /^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i; - var OPERATORS = makePredicate([ "in", "instanceof", "typeof", "new", "void", "delete", "++", "--", "+", "-", "!", "~", "&", "|", "^", "*", "/", "%", ">>", "<<", ">>>", "<", ">", "<=", ">=", "==", "===", "!=", "!==", "?", "=", "+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&=", "&&", "||" ]); - var WHITESPACE_CHARS = makePredicate(characters("  \n\r \f ​᠎              ")); - var PUNC_BEFORE_EXPRESSION = makePredicate(characters("[{(,.;:")); - var PUNC_CHARS = makePredicate(characters("[]{}(),;:")); - var REGEXP_MODIFIERS = makePredicate(characters("gmsiy")); - var UNICODE = { - letter: new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), - non_spacing_mark: new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"), - space_combining_mark: new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"), - connector_punctuation: new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]") - }; - function is_letter(code) { - return code >= 97 && code <= 122 || code >= 65 && code <= 90 || code >= 170 && UNICODE.letter.test(String.fromCharCode(code)); - } - function is_digit(code) { - return code >= 48 && code <= 57; - } - function is_alphanumeric_char(code) { - return is_digit(code) || is_letter(code); - } - function is_unicode_combining_mark(ch) { - return UNICODE.non_spacing_mark.test(ch) || UNICODE.space_combining_mark.test(ch); - } - function is_unicode_connector_punctuation(ch) { - return UNICODE.connector_punctuation.test(ch); - } - function is_identifier(name) { - return /^[a-z_$][a-z0-9_$]*$/i.test(name) && !RESERVED_WORDS(name); - } - function is_identifier_start(code) { - return code == 36 || code == 95 || is_letter(code); - } - function is_identifier_char(ch) { - var code = ch.charCodeAt(0); - return is_identifier_start(code) || is_digit(code) || code == 8204 || code == 8205 || is_unicode_combining_mark(ch) || is_unicode_connector_punctuation(ch); - } - function parse_js_number(num) { - if (RE_HEX_NUMBER.test(num)) { - return parseInt(num.substr(2), 16); - } else if (RE_OCT_NUMBER.test(num)) { - return parseInt(num.substr(1), 8); - } else if (RE_DEC_NUMBER.test(num)) { - return parseFloat(num); - } - } - function JS_Parse_Error(message, line, col, pos) { - this.message = message; - this.line = line; - this.col = col; - this.pos = pos; - this.stack = new Error().stack; - } - JS_Parse_Error.prototype.toString = function() { - return this.message + " (line: " + this.line + ", col: " + this.col + ", pos: " + this.pos + ")" + "\n\n" + this.stack; - }; - function js_error(message, filename, line, col, pos) { - AST_Node.warn("ERROR: {message} [{file}:{line},{col}]", { - message: message, - file: filename, - line: line, - col: col - }); - throw new JS_Parse_Error(message, line, col, pos); - } - function is_token(token, type, val) { - return token.type == type && (val == null || token.value == val); - } - var EX_EOF = {}; - function tokenizer($TEXT, filename) { - var S = { - text: $TEXT.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/\uFEFF/g, ""), - filename: filename, - pos: 0, - tokpos: 0, - line: 1, - tokline: 0, - col: 0, - tokcol: 0, - newline_before: false, - regex_allowed: false, - comments_before: [] - }; - function peek() { - return S.text.charAt(S.pos); - } - function next(signal_eof, in_string) { - var ch = S.text.charAt(S.pos++); - if (signal_eof && !ch) throw EX_EOF; - if (ch == "\n") { - S.newline_before = S.newline_before || !in_string; - ++S.line; - S.col = 0; - } else { - ++S.col; - } - return ch; - } - function find(what, signal_eof) { - var pos = S.text.indexOf(what, S.pos); - if (signal_eof && pos == -1) throw EX_EOF; - return pos; - } - function start_token() { - S.tokline = S.line; - S.tokcol = S.col; - S.tokpos = S.pos; - } - function token(type, value, is_comment) { - S.regex_allowed = type == "operator" && !UNARY_POSTFIX[value] || type == "keyword" && KEYWORDS_BEFORE_EXPRESSION(value) || type == "punc" && PUNC_BEFORE_EXPRESSION(value); - var ret = { - type: type, - value: value, - line: S.tokline, - col: S.tokcol, - pos: S.tokpos, - endpos: S.pos, - nlb: S.newline_before, - file: filename - }; - if (!is_comment) { - ret.comments_before = S.comments_before; - S.comments_before = []; - for (var i = 0, len = ret.comments_before.length; i < len; i++) { - ret.nlb = ret.nlb || ret.comments_before[i].nlb; - } - } - S.newline_before = false; - return new AST_Token(ret); - } - function skip_whitespace() { - while (WHITESPACE_CHARS(peek())) next(); - } - function read_while(pred) { - var ret = "", ch, i = 0; - while ((ch = peek()) && pred(ch, i++)) ret += next(); - return ret; - } - function parse_error(err) { - js_error(err, filename, S.tokline, S.tokcol, S.tokpos); - } - function read_num(prefix) { - var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; - var num = read_while(function(ch, i) { - var code = ch.charCodeAt(0); - switch (code) { - case 120: - case 88: - return has_x ? false : has_x = true; - - case 101: - case 69: - return has_x ? true : has_e ? false : has_e = after_e = true; - - case 45: - return after_e || i == 0 && !prefix; - - case 43: - return after_e; - - case after_e = false, 46: - return !has_dot && !has_x && !has_e ? has_dot = true : false; - } - return is_alphanumeric_char(code); - }); - if (prefix) num = prefix + num; - var valid = parse_js_number(num); - if (!isNaN(valid)) { - return token("num", valid); - } else { - parse_error("Invalid syntax: " + num); - } - } - function read_escaped_char(in_string) { - var ch = next(true, in_string); - switch (ch.charCodeAt(0)) { - case 110: - return "\n"; - - case 114: - return "\r"; - - case 116: - return " "; - - case 98: - return "\b"; - - case 118: - return " "; - - case 102: - return "\f"; - - case 48: - return "\0"; - - case 120: - return String.fromCharCode(hex_bytes(2)); - - case 117: - return String.fromCharCode(hex_bytes(4)); - - case 10: - return ""; - - default: - return ch; - } - } - function hex_bytes(n) { - var num = 0; - for (;n > 0; --n) { - var digit = parseInt(next(true), 16); - if (isNaN(digit)) parse_error("Invalid hex-character pattern in string"); - num = num << 4 | digit; - } - return num; - } - var read_string = with_eof_error("Unterminated string constant", function() { - var quote = next(), ret = ""; - for (;;) { - var ch = next(true); - if (ch == "\\") { - var octal_len = 0, first = null; - ch = read_while(function(ch) { - if (ch >= "0" && ch <= "7") { - if (!first) { - first = ch; - return ++octal_len; - } else if (first <= "3" && octal_len <= 2) return ++octal_len; else if (first >= "4" && octal_len <= 1) return ++octal_len; - } - return false; - }); - if (octal_len > 0) ch = String.fromCharCode(parseInt(ch, 8)); else ch = read_escaped_char(true); - } else if (ch == quote) break; - ret += ch; - } - return token("string", ret); - }); - function read_line_comment() { - next(); - var i = find("\n"), ret; - if (i == -1) { - ret = S.text.substr(S.pos); - S.pos = S.text.length; - } else { - ret = S.text.substring(S.pos, i); - S.pos = i; - } - return token("comment1", ret, true); - } - var read_multiline_comment = with_eof_error("Unterminated multiline comment", function() { - next(); - var i = find("*/", true); - var text = S.text.substring(S.pos, i); - var a = text.split("\n"), n = a.length; - S.pos = i + 2; - S.line += n - 1; - if (n > 1) S.col = a[n - 1].length; else S.col += a[n - 1].length; - S.col += 2; - S.newline_before = S.newline_before || text.indexOf("\n") >= 0; - return token("comment2", text, true); - }); - function read_name() { - var backslash = false, name = "", ch, escaped = false, hex; - while ((ch = peek()) != null) { - if (!backslash) { - if (ch == "\\") escaped = backslash = true, next(); else if (is_identifier_char(ch)) name += next(); else break; - } else { - if (ch != "u") parse_error("Expecting UnicodeEscapeSequence -- uXXXX"); - ch = read_escaped_char(); - if (!is_identifier_char(ch)) parse_error("Unicode char: " + ch.charCodeAt(0) + " is not valid in identifier"); - name += ch; - backslash = false; - } - } - if (KEYWORDS(name) && escaped) { - hex = name.charCodeAt(0).toString(16).toUpperCase(); - name = "\\u" + "0000".substr(hex.length) + hex + name.slice(1); - } - return name; - } - var read_regexp = with_eof_error("Unterminated regular expression", function(regexp) { - var prev_backslash = false, ch, in_class = false; - while (ch = next(true)) if (prev_backslash) { - regexp += "\\" + ch; - prev_backslash = false; - } else if (ch == "[") { - in_class = true; - regexp += ch; - } else if (ch == "]" && in_class) { - in_class = false; - regexp += ch; - } else if (ch == "/" && !in_class) { - break; - } else if (ch == "\\") { - prev_backslash = true; - } else { - regexp += ch; - } - var mods = read_name(); - return token("regexp", new RegExp(regexp, mods)); - }); - function read_operator(prefix) { - function grow(op) { - if (!peek()) return op; - var bigger = op + peek(); - if (OPERATORS(bigger)) { - next(); - return grow(bigger); - } else { - return op; - } - } - return token("operator", grow(prefix || next())); - } - function handle_slash() { - next(); - var regex_allowed = S.regex_allowed; - switch (peek()) { - case "/": - S.comments_before.push(read_line_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - - case "*": - S.comments_before.push(read_multiline_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - } - return S.regex_allowed ? read_regexp("") : read_operator("/"); - } - function handle_dot() { - next(); - return is_digit(peek().charCodeAt(0)) ? read_num(".") : token("punc", "."); - } - function read_word() { - var word = read_name(); - return KEYWORDS_ATOM(word) ? token("atom", word) : !KEYWORDS(word) ? token("name", word) : OPERATORS(word) ? token("operator", word) : token("keyword", word); - } - function with_eof_error(eof_error, cont) { - return function(x) { - try { - return cont(x); - } catch (ex) { - if (ex === EX_EOF) parse_error(eof_error); else throw ex; - } - }; - } - function next_token(force_regexp) { - if (force_regexp != null) return read_regexp(force_regexp); - skip_whitespace(); - start_token(); - var ch = peek(); - if (!ch) return token("eof"); - var code = ch.charCodeAt(0); - switch (code) { - case 34: - case 39: - return read_string(); - - case 46: - return handle_dot(); - - case 47: - return handle_slash(); - } - if (is_digit(code)) return read_num(); - if (PUNC_CHARS(ch)) return token("punc", next()); - if (OPERATOR_CHARS(ch)) return read_operator(); - if (code == 92 || is_identifier_start(code)) return read_word(); - parse_error("Unexpected character '" + ch + "'"); - } - next_token.context = function(nc) { - if (nc) S = nc; - return S; - }; - return next_token; - } - var UNARY_PREFIX = makePredicate([ "typeof", "void", "delete", "--", "++", "!", "~", "-", "+" ]); - var UNARY_POSTFIX = makePredicate([ "--", "++" ]); - var ASSIGNMENT = makePredicate([ "=", "+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&=" ]); - var PRECEDENCE = function(a, ret) { - for (var i = 0, n = 1; i < a.length; ++i, ++n) { - var b = a[i]; - for (var j = 0; j < b.length; ++j) { - ret[b[j]] = n; - } - } - return ret; - }([ [ "||" ], [ "&&" ], [ "|" ], [ "^" ], [ "&" ], [ "==", "===", "!=", "!==" ], [ "<", ">", "<=", ">=", "in", "instanceof" ], [ ">>", "<<", ">>>" ], [ "+", "-" ], [ "*", "/", "%" ] ], {}); - var STATEMENTS_WITH_LABELS = array_to_hash([ "for", "do", "while", "switch" ]); - var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "name" ]); - function parse($TEXT, options) { - options = defaults(options, { - strict: false, - filename: null, - toplevel: null - }); - var S = { - input: typeof $TEXT == "string" ? tokenizer($TEXT, options.filename) : $TEXT, - token: null, - prev: null, - peeked: null, - in_function: 0, - in_directives: true, - in_loop: 0, - labels: [] - }; - S.token = next(); - function is(type, value) { - return is_token(S.token, type, value); - } - function peek() { - return S.peeked || (S.peeked = S.input()); - } - function next() { - S.prev = S.token; - if (S.peeked) { - S.token = S.peeked; - S.peeked = null; - } else { - S.token = S.input(); - } - S.in_directives = S.in_directives && (S.token.type == "string" || is("punc", ";")); - return S.token; - } - function prev() { - return S.prev; - } - function croak(msg, line, col, pos) { - var ctx = S.input.context(); - js_error(msg, ctx.filename, line != null ? line : ctx.tokline, col != null ? col : ctx.tokcol, pos != null ? pos : ctx.tokpos); - } - function token_error(token, msg) { - croak(msg, token.line, token.col); - } - function unexpected(token) { - if (token == null) token = S.token; - token_error(token, "Unexpected token: " + token.type + " (" + token.value + ")"); - } - function expect_token(type, val) { - if (is(type, val)) { - return next(); - } - token_error(S.token, "Unexpected token " + S.token.type + " «" + S.token.value + "»" + ", expected " + type + " «" + val + "»"); - } - function expect(punc) { - return expect_token("punc", punc); - } - function can_insert_semicolon() { - return !options.strict && (S.token.nlb || is("eof") || is("punc", "}")); - } - function semicolon() { - if (is("punc", ";")) next(); else if (!can_insert_semicolon()) unexpected(); - } - function parenthesised() { - expect("("); - var exp = expression(true); - expect(")"); - return exp; - } - function embed_tokens(parser) { - return function() { - var start = S.token; - var expr = parser(); - var end = prev(); - expr.start = start; - expr.end = end; - return expr; - }; - } - var statement = embed_tokens(function() { - var tmp; - if (is("operator", "/") || is("operator", "/=")) { - S.peeked = null; - S.token = S.input(S.token.value.substr(1)); - } - switch (S.token.type) { - case "string": - var dir = S.in_directives, stat = simple_statement(); - if (dir && stat.body instanceof AST_String && !is("punc", ",")) return new AST_Directive({ - value: stat.body.value - }); - return stat; - - case "num": - case "regexp": - case "operator": - case "atom": - return simple_statement(); - - case "name": - return is_token(peek(), "punc", ":") ? labeled_statement() : simple_statement(); - - case "punc": - switch (S.token.value) { - case "{": - return new AST_BlockStatement({ - start: S.token, - body: block_(), - end: prev() - }); - - case "[": - case "(": - return simple_statement(); - - case ";": - next(); - return new AST_EmptyStatement(); - - default: - unexpected(); - } - - case "keyword": - switch (tmp = S.token.value, next(), tmp) { - case "break": - return break_cont(AST_Break); - - case "continue": - return break_cont(AST_Continue); - - case "debugger": - semicolon(); - return new AST_Debugger(); - - case "do": - return new AST_Do({ - body: in_loop(statement), - condition: (expect_token("keyword", "while"), tmp = parenthesised(), semicolon(), - tmp) - }); - - case "while": - return new AST_While({ - condition: parenthesised(), - body: in_loop(statement) - }); - - case "for": - return for_(); - - case "function": - return function_(true); - - case "if": - return if_(); - - case "return": - if (S.in_function == 0) croak("'return' outside of function"); - return new AST_Return({ - value: is("punc", ";") ? (next(), null) : can_insert_semicolon() ? null : (tmp = expression(true), - semicolon(), tmp) - }); - - case "switch": - return new AST_Switch({ - expression: parenthesised(), - body: in_loop(switch_body_) - }); - - case "throw": - if (S.token.nlb) croak("Illegal newline after 'throw'"); - return new AST_Throw({ - value: (tmp = expression(true), semicolon(), tmp) - }); - - case "try": - return try_(); - - case "var": - return tmp = var_(), semicolon(), tmp; - - case "const": - return tmp = const_(), semicolon(), tmp; - - case "with": - return new AST_With({ - expression: parenthesised(), - body: statement() - }); - - default: - unexpected(); - } - } - }); - function labeled_statement() { - var label = as_symbol(AST_Label); - if (find_if(function(l) { - return l.name == label.name; - }, S.labels)) { - croak("Label " + label.name + " defined twice"); - } - expect(":"); - S.labels.push(label); - var stat = statement(); - S.labels.pop(); - return new AST_LabeledStatement({ - body: stat, - label: label - }); - } - function simple_statement(tmp) { - return new AST_SimpleStatement({ - body: (tmp = expression(true), semicolon(), tmp) - }); - } - function break_cont(type) { - var label = null; - if (!can_insert_semicolon()) { - label = as_symbol(AST_LabelRef, true); - } - if (label != null) { - if (!find_if(function(l) { - return l.name == label.name; - }, S.labels)) croak("Undefined label " + label.name); - } else if (S.in_loop == 0) croak(type.TYPE + " not inside a loop or switch"); - semicolon(); - return new type({ - label: label - }); - } - function for_() { - expect("("); - var init = null; - if (!is("punc", ";")) { - init = is("keyword", "var") ? (next(), var_(true)) : expression(true, true); - if (is("operator", "in")) { - if (init instanceof AST_Var && init.definitions.length > 1) croak("Only one variable declaration allowed in for..in loop"); - next(); - return for_in(init); - } - } - return regular_for(init); - } - function regular_for(init) { - expect(";"); - var test = is("punc", ";") ? null : expression(true); - expect(";"); - var step = is("punc", ")") ? null : expression(true); - expect(")"); - return new AST_For({ - init: init, - condition: test, - step: step, - body: in_loop(statement) - }); - } - function for_in(init) { - var lhs = init instanceof AST_Var ? init.definitions[0].name : null; - var obj = expression(true); - expect(")"); - return new AST_ForIn({ - init: init, - name: lhs, - object: obj, - body: in_loop(statement) - }); - } - var function_ = function(in_statement, ctor) { - var name = is("name") ? as_symbol(in_statement ? AST_SymbolDefun : ctor === AST_Accessor ? AST_SymbolAccessor : AST_SymbolLambda) : null; - if (in_statement && !name) unexpected(); - expect("("); - if (!ctor) ctor = in_statement ? AST_Defun : AST_Function; - return new ctor({ - name: name, - argnames: function(first, a) { - while (!is("punc", ")")) { - if (first) first = false; else expect(","); - a.push(as_symbol(AST_SymbolFunarg)); - } - next(); - return a; - }(true, []), - body: function(loop, labels) { - ++S.in_function; - S.in_directives = true; - S.in_loop = 0; - S.labels = []; - var a = block_(); - --S.in_function; - S.in_loop = loop; - S.labels = labels; - return a; - }(S.in_loop, S.labels) - }); - }; - function if_() { - var cond = parenthesised(), body = statement(), belse = null; - if (is("keyword", "else")) { - next(); - belse = statement(); - } - return new AST_If({ - condition: cond, - body: body, - alternative: belse - }); - } - function block_() { - expect("{"); - var a = []; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - a.push(statement()); - } - next(); - return a; - } - function switch_body_() { - expect("{"); - var a = [], cur = null, branch = null, tmp; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - if (is("keyword", "case")) { - if (branch) branch.end = prev(); - cur = []; - branch = new AST_Case({ - start: (tmp = S.token, next(), tmp), - expression: expression(true), - body: cur - }); - a.push(branch); - expect(":"); - } else if (is("keyword", "default")) { - if (branch) branch.end = prev(); - cur = []; - branch = new AST_Default({ - start: (tmp = S.token, next(), expect(":"), tmp), - body: cur - }); - a.push(branch); - } else { - if (!cur) unexpected(); - cur.push(statement()); - } - } - if (branch) branch.end = prev(); - next(); - return a; - } - function try_() { - var body = block_(), bcatch = null, bfinally = null; - if (is("keyword", "catch")) { - var start = S.token; - next(); - expect("("); - var name = as_symbol(AST_SymbolCatch); - expect(")"); - bcatch = new AST_Catch({ - start: start, - argname: name, - body: block_(), - end: prev() - }); - } - if (is("keyword", "finally")) { - var start = S.token; - next(); - bfinally = new AST_Finally({ - start: start, - body: block_(), - end: prev() - }); - } - if (!bcatch && !bfinally) croak("Missing catch/finally blocks"); - return new AST_Try({ - body: body, - bcatch: bcatch, - bfinally: bfinally - }); - } - function vardefs(no_in, in_const) { - var a = []; - for (;;) { - a.push(new AST_VarDef({ - start: S.token, - name: as_symbol(in_const ? AST_SymbolConst : AST_SymbolVar), - value: is("operator", "=") ? (next(), expression(false, no_in)) : null, - end: prev() - })); - if (!is("punc", ",")) break; - next(); - } - return a; - } - var var_ = function(no_in) { - return new AST_Var({ - start: prev(), - definitions: vardefs(no_in, false), - end: prev() - }); - }; - var const_ = function() { - return new AST_Const({ - start: prev(), - definitions: vardefs(false, true), - end: prev() - }); - }; - var new_ = function() { - var start = S.token; - expect_token("operator", "new"); - var newexp = expr_atom(false), args; - if (is("punc", "(")) { - next(); - args = expr_list(")"); - } else { - args = []; - } - return subscripts(new AST_New({ - start: start, - expression: newexp, - args: args, - end: prev() - }), true); - }; - function as_atom_node() { - var tok = S.token, ret; - switch (tok.type) { - case "name": - return as_symbol(AST_SymbolRef); - - case "num": - ret = new AST_Number({ - start: tok, - end: tok, - value: tok.value - }); - break; - - case "string": - ret = new AST_String({ - start: tok, - end: tok, - value: tok.value - }); - break; - - case "regexp": - ret = new AST_RegExp({ - start: tok, - end: tok, - value: tok.value - }); - break; - - case "atom": - switch (tok.value) { - case "false": - ret = new AST_False({ - start: tok, - end: tok - }); - break; - - case "true": - ret = new AST_True({ - start: tok, - end: tok - }); - break; - - case "null": - ret = new AST_Null({ - start: tok, - end: tok - }); - break; - } - break; - } - next(); - return ret; - } - var expr_atom = function(allow_calls) { - if (is("operator", "new")) { - return new_(); - } - var start = S.token; - if (is("punc")) { - switch (start.value) { - case "(": - next(); - var ex = expression(true); - ex.start = start; - ex.end = S.token; - expect(")"); - return subscripts(ex, allow_calls); - - case "[": - return subscripts(array_(), allow_calls); - - case "{": - return subscripts(object_(), allow_calls); - } - unexpected(); - } - if (is("keyword", "function")) { - next(); - var func = function_(false); - func.start = start; - func.end = prev(); - return subscripts(func, allow_calls); - } - if (ATOMIC_START_TOKEN[S.token.type]) { - return subscripts(as_atom_node(), allow_calls); - } - unexpected(); - }; - function expr_list(closing, allow_trailing_comma, allow_empty) { - var first = true, a = []; - while (!is("punc", closing)) { - if (first) first = false; else expect(","); - if (allow_trailing_comma && is("punc", closing)) break; - if (is("punc", ",") && allow_empty) { - a.push(new AST_Undefined({ - start: S.token, - end: S.token - })); - } else { - a.push(expression(false)); - } - } - next(); - return a; - } - var array_ = embed_tokens(function() { - expect("["); - return new AST_Array({ - elements: expr_list("]", !options.strict, true) - }); - }); - var object_ = embed_tokens(function() { - expect("{"); - var first = true, a = []; - while (!is("punc", "}")) { - if (first) first = false; else expect(","); - if (!options.strict && is("punc", "}")) break; - var start = S.token; - var type = start.type; - var name = as_property_name(); - if (type == "name" && !is("punc", ":")) { - if (name == "get") { - a.push(new AST_ObjectGetter({ - start: start, - key: name, - value: function_(false, AST_Accessor), - end: prev() - })); - continue; - } - if (name == "set") { - a.push(new AST_ObjectSetter({ - start: start, - key: name, - value: function_(false, AST_Accessor), - end: prev() - })); - continue; - } - } - expect(":"); - a.push(new AST_ObjectKeyVal({ - start: start, - key: name, - value: expression(false), - end: prev() - })); - } - next(); - return new AST_Object({ - properties: a - }); - }); - function as_property_name() { - var tmp = S.token; - next(); - switch (tmp.type) { - case "num": - case "string": - case "name": - case "operator": - case "keyword": - case "atom": - return tmp.value; - - default: - unexpected(); - } - } - function as_name() { - var tmp = S.token; - next(); - switch (tmp.type) { - case "name": - case "operator": - case "keyword": - case "atom": - return tmp.value; - - default: - unexpected(); - } - } - function as_symbol(type, noerror) { - if (!is("name")) { - if (!noerror) croak("Name expected"); - return null; - } - var name = S.token.value; - var sym = new (name == "this" ? AST_This : type)({ - name: String(S.token.value), - start: S.token, - end: S.token - }); - next(); - return sym; - } - var subscripts = function(expr, allow_calls) { - var start = expr.start; - if (is("punc", ".")) { - next(); - return subscripts(new AST_Dot({ - start: start, - expression: expr, - property: as_name(), - end: prev() - }), allow_calls); - } - if (is("punc", "[")) { - next(); - var prop = expression(true); - expect("]"); - return subscripts(new AST_Sub({ - start: start, - expression: expr, - property: prop, - end: prev() - }), allow_calls); - } - if (allow_calls && is("punc", "(")) { - next(); - return subscripts(new AST_Call({ - start: start, - expression: expr, - args: expr_list(")"), - end: prev() - }), true); - } - return expr; - }; - var maybe_unary = function(allow_calls) { - var start = S.token; - if (is("operator") && UNARY_PREFIX(start.value)) { - next(); - var ex = make_unary(AST_UnaryPrefix, start.value, maybe_unary(allow_calls)); - ex.start = start; - ex.end = prev(); - return ex; - } - var val = expr_atom(allow_calls); - while (is("operator") && UNARY_POSTFIX(S.token.value) && !S.token.nlb) { - val = make_unary(AST_UnaryPostfix, S.token.value, val); - val.start = start; - val.end = S.token; - next(); - } - return val; - }; - function make_unary(ctor, op, expr) { - if ((op == "++" || op == "--") && !is_assignable(expr)) croak("Invalid use of " + op + " operator"); - return new ctor({ - operator: op, - expression: expr - }); - } - var expr_op = function(left, min_prec, no_in) { - var op = is("operator") ? S.token.value : null; - if (op == "in" && no_in) op = null; - var prec = op != null ? PRECEDENCE[op] : null; - if (prec != null && prec > min_prec) { - next(); - var right = expr_op(maybe_unary(true), prec, no_in); - return expr_op(new AST_Binary({ - start: left.start, - left: left, - operator: op, - right: right, - end: right.end - }), min_prec, no_in); - } - return left; - }; - function expr_ops(no_in) { - return expr_op(maybe_unary(true), 0, no_in); - } - var maybe_conditional = function(no_in) { - var start = S.token; - var expr = expr_ops(no_in); - if (is("operator", "?")) { - next(); - var yes = expression(false); - expect(":"); - return new AST_Conditional({ - start: start, - condition: expr, - consequent: yes, - alternative: expression(false, no_in), - end: peek() - }); - } - return expr; - }; - function is_assignable(expr) { - if (!options.strict) return true; - switch (expr[0] + "") { - case "dot": - case "sub": - case "new": - case "call": - return true; - - case "name": - return expr[1] != "this"; - } - } - var maybe_assign = function(no_in) { - var start = S.token; - var left = maybe_conditional(no_in), val = S.token.value; - if (is("operator") && ASSIGNMENT(val)) { - if (is_assignable(left)) { - next(); - return new AST_Assign({ - start: start, - left: left, - operator: val, - right: maybe_assign(no_in), - end: peek() - }); - } - croak("Invalid assignment"); - } - return left; - }; - var expression = function(commas, no_in) { - var start = S.token; - var expr = maybe_assign(no_in); - if (commas && is("punc", ",")) { - next(); - return new AST_Seq({ - start: start, - car: expr, - cdr: expression(true, no_in), - end: peek() - }); - } - return expr; - }; - function in_loop(cont) { - ++S.in_loop; - var ret = cont(); - --S.in_loop; - return ret; - } - return function() { - var start = S.token; - var body = []; - while (!is("eof")) body.push(statement()); - var end = prev(); - var toplevel = options.toplevel; - if (toplevel) { - toplevel.body = toplevel.body.concat(body); - toplevel.end = end; - } else { - toplevel = new AST_Toplevel({ - start: start, - body: body, - end: end - }); - } - return toplevel; - }(); - } - "use strict"; - function TreeTransformer(before, after) { - TreeWalker.call(this); - this.before = before; - this.after = after; - } - TreeTransformer.prototype = new TreeWalker(); - (function(undefined) { - function _(node, descend) { - node.DEFMETHOD("transform", function(tw, in_list) { - var x, y; - tw.push(this); - if (tw.before) x = tw.before(this, descend, in_list); - if (x === undefined) { - if (!tw.after) { - x = this; - descend(x, tw); - } else { - tw.stack[tw.stack - 1] = x = this.clone(); - descend(x, tw); - y = tw.after(x, in_list); - if (y !== undefined) x = y; - } - } - tw.pop(); - return x; - }); - } - function do_list(list, tw) { - return MAP(list, function(node) { - return node.transform(tw, true); - }); - } - _(AST_Node, noop); - _(AST_LabeledStatement, function(self, tw) { - self.label = self.label.transform(tw); - self.body = self.body.transform(tw); - }); - _(AST_SimpleStatement, function(self, tw) { - self.body = self.body.transform(tw); - }); - _(AST_Block, function(self, tw) { - self.body = do_list(self.body, tw); - }); - _(AST_DWLoop, function(self, tw) { - self.condition = self.condition.transform(tw); - self.body = self.body.transform(tw); - }); - _(AST_For, function(self, tw) { - if (self.init) self.init = self.init.transform(tw); - if (self.condition) self.condition = self.condition.transform(tw); - if (self.step) self.step = self.step.transform(tw); - self.body = self.body.transform(tw); - }); - _(AST_ForIn, function(self, tw) { - self.init = self.init.transform(tw); - self.object = self.object.transform(tw); - self.body = self.body.transform(tw); - }); - _(AST_With, function(self, tw) { - self.expression = self.expression.transform(tw); - self.body = self.body.transform(tw); - }); - _(AST_Exit, function(self, tw) { - if (self.value) self.value = self.value.transform(tw); - }); - _(AST_LoopControl, function(self, tw) { - if (self.label) self.label = self.label.transform(tw); - }); - _(AST_If, function(self, tw) { - self.condition = self.condition.transform(tw); - self.body = self.body.transform(tw); - if (self.alternative) self.alternative = self.alternative.transform(tw); - }); - _(AST_Switch, function(self, tw) { - self.expression = self.expression.transform(tw); - self.body = do_list(self.body, tw); - }); - _(AST_Case, function(self, tw) { - self.expression = self.expression.transform(tw); - self.body = do_list(self.body, tw); - }); - _(AST_Try, function(self, tw) { - self.body = do_list(self.body, tw); - if (self.bcatch) self.bcatch = self.bcatch.transform(tw); - if (self.bfinally) self.bfinally = self.bfinally.transform(tw); - }); - _(AST_Catch, function(self, tw) { - self.argname = self.argname.transform(tw); - self.body = do_list(self.body, tw); - }); - _(AST_Definitions, function(self, tw) { - self.definitions = do_list(self.definitions, tw); - }); - _(AST_VarDef, function(self, tw) { - if (self.value) self.value = self.value.transform(tw); - }); - _(AST_Lambda, function(self, tw) { - if (self.name) self.name = self.name.transform(tw); - self.argnames = do_list(self.argnames, tw); - self.body = do_list(self.body, tw); - }); - _(AST_Call, function(self, tw) { - self.expression = self.expression.transform(tw); - self.args = do_list(self.args, tw); - }); - _(AST_Seq, function(self, tw) { - self.car = self.car.transform(tw); - self.cdr = self.cdr.transform(tw); - }); - _(AST_Dot, function(self, tw) { - self.expression = self.expression.transform(tw); - }); - _(AST_Sub, function(self, tw) { - self.expression = self.expression.transform(tw); - self.property = self.property.transform(tw); - }); - _(AST_Unary, function(self, tw) { - self.expression = self.expression.transform(tw); - }); - _(AST_Binary, function(self, tw) { - self.left = self.left.transform(tw); - self.right = self.right.transform(tw); - }); - _(AST_Conditional, function(self, tw) { - self.condition = self.condition.transform(tw); - self.consequent = self.consequent.transform(tw); - self.alternative = self.alternative.transform(tw); - }); - _(AST_Array, function(self, tw) { - self.elements = do_list(self.elements, tw); - }); - _(AST_Object, function(self, tw) { - self.properties = do_list(self.properties, tw); - }); - _(AST_ObjectProperty, function(self, tw) { - self.value = self.value.transform(tw); - }); - })(); - "use strict"; - function SymbolDef(scope, index, orig) { - this.name = orig.name; - this.orig = [ orig ]; - this.scope = scope; - this.references = []; - this.global = false; - this.mangled_name = null; - this.undeclared = false; - this.constant = false; - this.index = index; - } - SymbolDef.prototype = { - unmangleable: function(options) { - return this.global || this.undeclared || !(options && options.eval) && (this.scope.uses_eval || this.scope.uses_with); - }, - mangle: function(options) { - if (!this.mangled_name && !this.unmangleable(options)) this.mangled_name = this.scope.next_mangled(options); - } - }; - AST_Toplevel.DEFMETHOD("figure_out_scope", function() { - var self = this; - var scope = self.parent_scope = null; - var labels = new Dictionary(); - var nesting = 0; - var tw = new TreeWalker(function(node, descend) { - if (node instanceof AST_Scope) { - node.init_scope_vars(nesting); - var save_scope = node.parent_scope = scope; - ++nesting; - scope = node; - descend(); - scope = save_scope; - --nesting; - return true; - } - if (node instanceof AST_Directive) { - node.scope = scope; - push_uniq(scope.directives, node.value); - return true; - } - if (node instanceof AST_With) { - for (var s = scope; s; s = s.parent_scope) s.uses_with = true; - return; - } - if (node instanceof AST_LabeledStatement) { - var l = node.label; - if (labels.has(l.name)) throw new Error(string_template("Label {name} defined twice", l)); - labels.set(l.name, l); - descend(); - labels.del(l.name); - return true; - } - if (node instanceof AST_SymbolDeclaration) { - node.init_scope_vars(); - } - if (node instanceof AST_Symbol) { - node.scope = scope; - } - if (node instanceof AST_Label) { - node.thedef = node; - node.init_scope_vars(); - } - if (node instanceof AST_SymbolLambda) { - (node.scope = scope.parent_scope).def_function(node); - node.init.push(tw.parent()); - } else if (node instanceof AST_SymbolDefun) { - (node.scope = scope.parent_scope).def_function(node); - node.init.push(tw.parent()); - } else if (node instanceof AST_SymbolVar || node instanceof AST_SymbolConst) { - var def = scope.def_variable(node); - def.constant = node instanceof AST_SymbolConst; - def = tw.parent(); - if (def.value) node.init.push(def); - } else if (node instanceof AST_SymbolCatch) { - scope.def_variable(node); - } - if (node instanceof AST_LabelRef) { - var sym = labels.get(node.name); - if (!sym) throw new Error(string_template("Undefined label {name} [{line},{col}]", { - name: node.name, - line: node.start.line, - col: node.start.col - })); - node.thedef = sym; - } - }); - self.walk(tw); - var func = null; - var globals = self.globals = new Dictionary(); - var tw = new TreeWalker(function(node, descend) { - if (node instanceof AST_Lambda) { - var prev_func = func; - func = node; - descend(); - func = prev_func; - return true; - } - if (node instanceof AST_LabelRef) { - node.reference(); - return true; - } - if (node instanceof AST_SymbolRef) { - var name = node.name; - var sym = node.scope.find_variable(name); - if (!sym) { - var g; - if (globals.has(name)) { - g = globals.get(name); - } else { - g = new SymbolDef(self, globals.size(), node); - g.undeclared = true; - globals.set(name, g); - } - node.thedef = g; - if (name == "eval" && tw.parent() instanceof AST_Call) { - for (var s = node.scope; s && !s.uses_eval; s = s.parent_scope) s.uses_eval = true; - } - if (name == "arguments") { - func.uses_arguments = true; - } - } else { - node.thedef = sym; - } - node.reference(); - return true; - } - }); - self.walk(tw); - }); - AST_Scope.DEFMETHOD("init_scope_vars", function(nesting) { - this.directives = []; - this.variables = new Dictionary(); - this.functions = new Dictionary(); - this.uses_with = false; - this.uses_eval = false; - this.parent_scope = null; - this.enclosed = []; - this.cname = -1; - this.nesting = nesting; - }); - AST_Scope.DEFMETHOD("strict", function() { - return this.has_directive("use strict"); - }); - AST_Lambda.DEFMETHOD("init_scope_vars", function() { - AST_Scope.prototype.init_scope_vars.apply(this, arguments); - this.uses_arguments = false; - }); - AST_SymbolRef.DEFMETHOD("reference", function() { - var def = this.definition(); - def.references.push(this); - var s = this.scope; - while (s) { - push_uniq(s.enclosed, def); - if (s === def.scope) break; - s = s.parent_scope; - } - this.frame = this.scope.nesting - def.scope.nesting; - }); - AST_SymbolDeclaration.DEFMETHOD("init_scope_vars", function() { - this.init = []; - }); - AST_Label.DEFMETHOD("init_scope_vars", function() { - this.references = []; - }); - AST_LabelRef.DEFMETHOD("reference", function() { - this.thedef.references.push(this); - }); - AST_Scope.DEFMETHOD("find_variable", function(name) { - if (name instanceof AST_Symbol) name = name.name; - return this.variables.get(name) || this.parent_scope && this.parent_scope.find_variable(name); - }); - AST_Scope.DEFMETHOD("has_directive", function(value) { - return this.parent_scope && this.parent_scope.has_directive(value) || (this.directives.indexOf(value) >= 0 ? this : null); - }); - AST_Scope.DEFMETHOD("def_function", function(symbol) { - this.functions.set(symbol.name, this.def_variable(symbol)); - }); - AST_Scope.DEFMETHOD("def_variable", function(symbol) { - var def; - if (!this.variables.has(symbol.name)) { - def = new SymbolDef(this, this.variables.size(), symbol); - this.variables.set(symbol.name, def); - def.global = !this.parent_scope; - } else { - def = this.variables.get(symbol.name); - def.orig.push(symbol); - } - return symbol.thedef = def; - }); - AST_Scope.DEFMETHOD("next_mangled", function(options) { - var ext = this.enclosed, n = ext.length; - out: while (true) { - var m = base54(++this.cname); - if (!is_identifier(m)) continue; - for (var i = n; --i >= 0; ) { - var sym = ext[i]; - var name = sym.mangled_name || sym.unmangleable(options) && sym.name; - if (m == name) continue out; - } - return m; - } - }); - AST_Scope.DEFMETHOD("references", function(sym) { - if (sym instanceof AST_Symbol) sym = sym.definition(); - return this.enclosed.indexOf(sym) < 0 ? null : sym; - }); - AST_Symbol.DEFMETHOD("unmangleable", function(options) { - return this.definition().unmangleable(options); - }); - AST_SymbolAccessor.DEFMETHOD("unmangleable", function() { - return true; - }); - AST_Label.DEFMETHOD("unmangleable", function() { - return false; - }); - AST_Symbol.DEFMETHOD("unreferenced", function() { - return this.definition().references.length == 0 && !(this.scope.uses_eval || this.scope.uses_with); - }); - AST_Symbol.DEFMETHOD("undeclared", function() { - return this.definition().undeclared; - }); - AST_LabelRef.DEFMETHOD("undeclared", function() { - return false; - }); - AST_Label.DEFMETHOD("undeclared", function() { - return false; - }); - AST_Symbol.DEFMETHOD("definition", function() { - return this.thedef; - }); - AST_Symbol.DEFMETHOD("global", function() { - return this.definition().global; - }); - AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options) { - return defaults(options, { - except: [], - eval: false - }); - }); - AST_Toplevel.DEFMETHOD("mangle_names", function(options) { - options = this._default_mangler_options(options); - var lname = -1; - var to_mangle = []; - var tw = new TreeWalker(function(node, descend) { - if (node instanceof AST_LabeledStatement) { - var save_nesting = lname; - descend(); - lname = save_nesting; - return true; - } - if (node instanceof AST_Scope) { - var p = tw.parent(); - node.variables.each(function(symbol) { - if (options.except.indexOf(symbol.name) < 0) { - to_mangle.push(symbol); - } - }); - return; - } - if (node instanceof AST_Label) { - var name; - do name = base54(++lname); while (!is_identifier(name)); - node.mangled_name = name; - return true; - } - }); - this.walk(tw); - to_mangle.forEach(function(def) { - def.mangle(options); - }); - }); - AST_Toplevel.DEFMETHOD("compute_char_frequency", function(options) { - options = this._default_mangler_options(options); - var tw = new TreeWalker(function(node) { - if (node instanceof AST_Constant) base54.consider(node.print_to_string()); else if (node instanceof AST_Return) base54.consider("return"); else if (node instanceof AST_Throw) base54.consider("throw"); else if (node instanceof AST_Continue) base54.consider("continue"); else if (node instanceof AST_Break) base54.consider("break"); else if (node instanceof AST_Debugger) base54.consider("debugger"); else if (node instanceof AST_Directive) base54.consider(node.value); else if (node instanceof AST_While) base54.consider("while"); else if (node instanceof AST_Do) base54.consider("do while"); else if (node instanceof AST_If) { - base54.consider("if"); - if (node.alternative) base54.consider("else"); - } else if (node instanceof AST_Var) base54.consider("var"); else if (node instanceof AST_Const) base54.consider("const"); else if (node instanceof AST_Lambda) base54.consider("function"); else if (node instanceof AST_For) base54.consider("for"); else if (node instanceof AST_ForIn) base54.consider("for in"); else if (node instanceof AST_Switch) base54.consider("switch"); else if (node instanceof AST_Case) base54.consider("case"); else if (node instanceof AST_Default) base54.consider("default"); else if (node instanceof AST_With) base54.consider("with"); else if (node instanceof AST_ObjectSetter) base54.consider("set" + node.key); else if (node instanceof AST_ObjectGetter) base54.consider("get" + node.key); else if (node instanceof AST_ObjectKeyVal) base54.consider(node.key); else if (node instanceof AST_New) base54.consider("new"); else if (node instanceof AST_This) base54.consider("this"); else if (node instanceof AST_Try) base54.consider("try"); else if (node instanceof AST_Catch) base54.consider("catch"); else if (node instanceof AST_Finally) base54.consider("finally"); else if (node instanceof AST_Symbol && node.unmangleable(options)) base54.consider(node.name); else if (node instanceof AST_Unary || node instanceof AST_Binary) base54.consider(node.operator); else if (node instanceof AST_Dot) base54.consider(node.property); - }); - this.walk(tw); - base54.sort(); - }); - var base54 = function() { - var string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789"; - var chars, frequency; - function reset() { - frequency = Object.create(null); - chars = string.split("").map(function(ch) { - return ch.charCodeAt(0); - }); - chars.forEach(function(ch) { - frequency[ch] = 0; - }); - } - base54.consider = function(str) { - for (var i = str.length; --i >= 0; ) { - var code = str.charCodeAt(i); - if (code in frequency) ++frequency[code]; - } - }; - base54.sort = function() { - chars = mergeSort(chars, function(a, b) { - if (is_digit(a) && !is_digit(b)) return 1; - if (is_digit(b) && !is_digit(a)) return -1; - return frequency[b] - frequency[a]; - }); - }; - base54.reset = reset; - reset(); - base54.get = function() { - return chars; - }; - base54.freq = function() { - return frequency; - }; - function base54(num) { - var ret = "", base = 54; - do { - ret += String.fromCharCode(chars[num % base]); - num = Math.floor(num / base); - base = 64; - } while (num > 0); - return ret; - } - return base54; - }(); - AST_Toplevel.DEFMETHOD("scope_warnings", function(options) { - options = defaults(options, { - undeclared: false, - unreferenced: true, - assign_to_global: true, - func_arguments: true, - nested_defuns: true, - eval: true - }); - var tw = new TreeWalker(function(node) { - if (options.undeclared && node instanceof AST_SymbolRef && node.undeclared()) { - AST_Node.warn("Undeclared symbol: {name} [{file}:{line},{col}]", { - name: node.name, - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - if (options.assign_to_global) { - var sym = null; - if (node instanceof AST_Assign && node.left instanceof AST_SymbolRef) sym = node.left; else if (node instanceof AST_ForIn && node.init instanceof AST_SymbolRef) sym = node.init; - if (sym && (sym.undeclared() || sym.global() && sym.scope !== sym.definition().scope)) { - AST_Node.warn("{msg}: {name} [{file}:{line},{col}]", { - msg: sym.undeclared() ? "Accidental global?" : "Assignment to global", - name: sym.name, - file: sym.start.file, - line: sym.start.line, - col: sym.start.col - }); - } - } - if (options.eval && node instanceof AST_SymbolRef && node.undeclared() && node.name == "eval") { - AST_Node.warn("Eval is used [{file}:{line},{col}]", node.start); - } - if (options.unreferenced && (node instanceof AST_SymbolDeclaration || node instanceof AST_Label) && node.unreferenced()) { - AST_Node.warn("{type} {name} is declared but not referenced [{file}:{line},{col}]", { - type: node instanceof AST_Label ? "Label" : "Symbol", - name: node.name, - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - if (options.func_arguments && node instanceof AST_Lambda && node.uses_arguments) { - AST_Node.warn("arguments used in function {name} [{file}:{line},{col}]", { - name: node.name ? node.name.name : "anonymous", - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - if (options.nested_defuns && node instanceof AST_Defun && !(tw.parent() instanceof AST_Scope)) { - AST_Node.warn('Function {name} declared in nested statement "{type}" [{file}:{line},{col}]', { - name: node.name.name, - type: tw.parent().TYPE, - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - }); - this.walk(tw); - }); - "use strict"; - function OutputStream(options) { - options = defaults(options, { - indent_start: 0, - indent_level: 4, - quote_keys: false, - space_colon: true, - ascii_only: false, - inline_script: false, - width: 80, - max_line_len: 32e3, - ie_proof: true, - beautify: false, - source_map: null, - bracketize: false, - semicolons: true, - comments: false - }, true); - var indentation = 0; - var current_col = 0; - var current_line = 1; - var current_pos = 0; - var OUTPUT = ""; - function to_ascii(str) { - return str.replace(/[\u0080-\uffff]/g, function(ch) { - var code = ch.charCodeAt(0).toString(16); - while (code.length < 4) code = "0" + code; - return "\\u" + code; - }); - } - function make_string(str) { - var dq = 0, sq = 0; - str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s) { - switch (s) { - case "\\": - return "\\\\"; - - case "\b": - return "\\b"; - - case "\f": - return "\\f"; - - case "\n": - return "\\n"; - - case "\r": - return "\\r"; - - case "\u2028": - return "\\u2028"; - - case "\u2029": - return "\\u2029"; - - case '"': - ++dq; - return '"'; - - case "'": - ++sq; - return "'"; - - case "\0": - return "\\0"; - } - return s; - }); - if (options.ascii_only) str = to_ascii(str); - if (dq > sq) return "'" + str.replace(/\x27/g, "\\'") + "'"; else return '"' + str.replace(/\x22/g, '\\"') + '"'; - } - function encode_string(str) { - var ret = make_string(str); - if (options.inline_script) ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1"); - return ret; - } - function make_name(name) { - name = name.toString(); - if (options.ascii_only) name = to_ascii(name); - return name; - } - function make_indent(back) { - return repeat_string(" ", options.indent_start + indentation - back * options.indent_level); - } - var might_need_space = false; - var might_need_semicolon = false; - var last = null; - function last_char() { - return last.charAt(last.length - 1); - } - function maybe_newline() { - if (options.max_line_len && current_col > options.max_line_len) print("\n"); - } - var requireSemicolonChars = makePredicate("( [ + * / - , ."); - function print(str) { - str = String(str); - var ch = str.charAt(0); - if (might_need_semicolon) { - if ((!ch || ";}".indexOf(ch) < 0) && !/[;]$/.test(last)) { - if (options.semicolons || requireSemicolonChars(ch)) { - OUTPUT += ";"; - current_col++; - current_pos++; - } else { - OUTPUT += "\n"; - current_pos++; - current_line++; - current_col = 0; - } - if (!options.beautify) might_need_space = false; - } - might_need_semicolon = false; - maybe_newline(); - } - if (might_need_space) { - var prev = last_char(); - if (is_identifier_char(prev) && (is_identifier_char(ch) || ch == "\\") || /^[\+\-\/]$/.test(ch) && ch == prev) { - OUTPUT += " "; - current_col++; - current_pos++; - } - might_need_space = false; - } - var a = str.split(/\r?\n/), n = a.length - 1; - current_line += n; - if (n == 0) { - current_col += a[n].length; - } else { - current_col = a[n].length; - } - current_pos += str.length; - last = str; - OUTPUT += str; - } - var space = options.beautify ? function() { - print(" "); - } : function() { - might_need_space = true; - }; - var indent = options.beautify ? function(half) { - if (options.beautify) { - print(make_indent(half ? .5 : 0)); - } - } : noop; - var with_indent = options.beautify ? function(col, cont) { - if (col === true) col = next_indent(); - var save_indentation = indentation; - indentation = col; - var ret = cont(); - indentation = save_indentation; - return ret; - } : function(col, cont) { - return cont(); - }; - var newline = options.beautify ? function() { - print("\n"); - } : noop; - var semicolon = options.beautify ? function() { - print(";"); - } : function() { - might_need_semicolon = true; - }; - function force_semicolon() { - might_need_semicolon = false; - print(";"); - } - function next_indent() { - return indentation + options.indent_level; - } - function with_block(cont) { - var ret; - print("{"); - newline(); - with_indent(next_indent(), function() { - ret = cont(); - }); - indent(); - print("}"); - return ret; - } - function with_parens(cont) { - print("("); - var ret = cont(); - print(")"); - return ret; - } - function with_square(cont) { - print("["); - var ret = cont(); - print("]"); - return ret; - } - function comma() { - print(","); - space(); - } - function colon() { - print(":"); - if (options.space_colon) space(); - } - var add_mapping = options.source_map ? function(token, name) { - try { - if (token) options.source_map.add(token.file || "?", current_line, current_col, token.line, token.col, !name && token.type == "name" ? token.value : name); - } catch (ex) { - AST_Node.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]", { - file: token.file, - line: token.line, - col: token.col, - cline: current_line, - ccol: current_col, - name: name || "" - }); - } - } : noop; - function get() { - return OUTPUT; - } - var stack = []; - return { - get: get, - toString: get, - indent: indent, - indentation: function() { - return indentation; - }, - current_width: function() { - return current_col - indentation; - }, - should_break: function() { - return options.width && this.current_width() >= options.width; - }, - newline: newline, - print: print, - space: space, - comma: comma, - colon: colon, - last: function() { - return last; - }, - semicolon: semicolon, - force_semicolon: force_semicolon, - to_ascii: to_ascii, - print_name: function(name) { - print(make_name(name)); - }, - print_string: function(str) { - print(encode_string(str)); - }, - next_indent: next_indent, - with_indent: with_indent, - with_block: with_block, - with_parens: with_parens, - with_square: with_square, - add_mapping: add_mapping, - option: function(opt) { - return options[opt]; - }, - line: function() { - return current_line; - }, - col: function() { - return current_col; - }, - pos: function() { - return current_pos; - }, - push_node: function(node) { - stack.push(node); - }, - pop_node: function() { - return stack.pop(); - }, - stack: function() { - return stack; - }, - parent: function(n) { - return stack[stack.length - 2 - (n || 0)]; - } - }; - } - (function() { - function DEFPRINT(nodetype, generator) { - nodetype.DEFMETHOD("print", function(stream) { - var self = this; - stream.push_node(self); - if (self.needs_parens(stream)) { - stream.with_parens(function() { - self.add_comments(stream); - self.add_source_map(stream); - generator(self, stream); - }); - } else { - self.add_comments(stream); - self.add_source_map(stream); - generator(self, stream); - } - stream.pop_node(); - }); - } - AST_Node.DEFMETHOD("print_to_string", function(options) { - var s = OutputStream(options); - this.print(s); - return s.get(); - }); - AST_Node.DEFMETHOD("add_comments", function(output) { - var c = output.option("comments"), self = this; - if (c) { - var start = self.start; - if (start && !start._comments_dumped) { - start._comments_dumped = true; - var comments = start.comments_before; - if (c.test) { - comments = comments.filter(function(comment) { - return c.test(comment.value); - }); - } else if (typeof c == "function") { - comments = comments.filter(function(comment) { - return c(self, comment); - }); - } - comments.forEach(function(c) { - if (c.type == "comment1") { - output.print("//" + c.value + "\n"); - output.indent(); - } else if (c.type == "comment2") { - output.print("/*" + c.value + "*/"); - if (start.nlb) { - output.print("\n"); - output.indent(); - } else { - output.space(); - } - } - }); - } - } - }); - function PARENS(nodetype, func) { - nodetype.DEFMETHOD("needs_parens", func); - } - PARENS(AST_Node, function() { - return false; - }); - PARENS(AST_Function, function(output) { - return first_in_statement(output); - }); - PARENS(AST_Object, function(output) { - return first_in_statement(output); - }); - PARENS(AST_Unary, function(output) { - var p = output.parent(); - return p instanceof AST_PropAccess && p.expression === this; - }); - PARENS(AST_Seq, function(output) { - var p = output.parent(); - return p instanceof AST_Call || p instanceof AST_Unary || p instanceof AST_Binary || p instanceof AST_VarDef || p instanceof AST_Dot || p instanceof AST_Array || p instanceof AST_ObjectProperty || p instanceof AST_Conditional; - }); - PARENS(AST_Binary, function(output) { - var p = output.parent(); - if (p instanceof AST_Call && p.expression === this) return true; - if (p instanceof AST_Unary) return true; - if (p instanceof AST_PropAccess && p.expression === this) return true; - if (p instanceof AST_Binary) { - var po = p.operator, pp = PRECEDENCE[po]; - var so = this.operator, sp = PRECEDENCE[so]; - if (pp > sp || pp == sp && this === p.right && !(so == po && (so == "*" || so == "&&" || so == "||"))) { - return true; - } - } - if (this.operator == "in") { - if ((p instanceof AST_For || p instanceof AST_ForIn) && p.init === this) return true; - if (p instanceof AST_VarDef) { - var v = output.parent(1), p2 = output.parent(2); - if ((p2 instanceof AST_For || p2 instanceof AST_ForIn) && p2.init === v) return true; - } - } - }); - PARENS(AST_PropAccess, function(output) { - var p = output.parent(); - if (p instanceof AST_New && p.expression === this) { - try { - this.walk(new TreeWalker(function(node) { - if (node instanceof AST_Call) throw p; - })); - } catch (ex) { - if (ex !== p) throw ex; - return true; - } - } - }); - PARENS(AST_Call, function(output) { - var p = output.parent(); - return p instanceof AST_New && p.expression === this; - }); - PARENS(AST_New, function(output) { - var p = output.parent(); - if (no_constructor_parens(this, output) && (p instanceof AST_Dot || p instanceof AST_Call && p.expression === this)) return true; - }); - function assign_and_conditional_paren_rules(output) { - var p = output.parent(); - if (p instanceof AST_Unary) return true; - if (p instanceof AST_Binary && !(p instanceof AST_Assign)) return true; - if (p instanceof AST_Call && p.expression === this) return true; - if (p instanceof AST_Conditional && p.condition === this) return true; - if (p instanceof AST_PropAccess && p.expression === this) return true; - } - PARENS(AST_Assign, assign_and_conditional_paren_rules); - PARENS(AST_Conditional, assign_and_conditional_paren_rules); - DEFPRINT(AST_Directive, function(self, output) { - output.print_string(self.value); - output.semicolon(); - }); - DEFPRINT(AST_Debugger, function(self, output) { - output.print("debugger"); - output.semicolon(); - }); - function display_body(body, is_toplevel, output) { - var last = body.length - 1; - body.forEach(function(stmt, i) { - if (!(stmt instanceof AST_EmptyStatement)) { - output.indent(); - stmt.print(output); - if (!(i == last && is_toplevel)) { - output.newline(); - if (is_toplevel) output.newline(); - } - } - }); - } - AST_StatementWithBody.DEFMETHOD("_do_print_body", function(output) { - force_statement(this.body, output); - }); - DEFPRINT(AST_Statement, function(self, output) { - self.body.print(output); - output.semicolon(); - }); - DEFPRINT(AST_Toplevel, function(self, output) { - display_body(self.body, true, output); - output.print(""); - }); - DEFPRINT(AST_LabeledStatement, function(self, output) { - self.label.print(output); - output.colon(); - self.body.print(output); - }); - DEFPRINT(AST_SimpleStatement, function(self, output) { - self.body.print(output); - output.semicolon(); - }); - function print_bracketed(body, output) { - if (body.length > 0) output.with_block(function() { - display_body(body, false, output); - }); else output.print("{}"); - } - DEFPRINT(AST_BlockStatement, function(self, output) { - print_bracketed(self.body, output); - }); - DEFPRINT(AST_EmptyStatement, function(self, output) { - output.semicolon(); - }); - DEFPRINT(AST_Do, function(self, output) { - output.print("do"); - output.space(); - self._do_print_body(output); - output.space(); - output.print("while"); - output.space(); - output.with_parens(function() { - self.condition.print(output); - }); - output.semicolon(); - }); - DEFPRINT(AST_While, function(self, output) { - output.print("while"); - output.space(); - output.with_parens(function() { - self.condition.print(output); - }); - output.space(); - self._do_print_body(output); - }); - DEFPRINT(AST_For, function(self, output) { - output.print("for"); - output.space(); - output.with_parens(function() { - if (self.init) { - self.init.print(output); - output.print(";"); - output.space(); - } else { - output.print(";"); - } - if (self.condition) { - self.condition.print(output); - output.print(";"); - output.space(); - } else { - output.print(";"); - } - if (self.step) { - self.step.print(output); - } - }); - output.space(); - self._do_print_body(output); - }); - DEFPRINT(AST_ForIn, function(self, output) { - output.print("for"); - output.space(); - output.with_parens(function() { - self.init.print(output); - output.space(); - output.print("in"); - output.space(); - self.object.print(output); - }); - output.space(); - self._do_print_body(output); - }); - DEFPRINT(AST_With, function(self, output) { - output.print("with"); - output.space(); - output.with_parens(function() { - self.expression.print(output); - }); - output.space(); - self._do_print_body(output); - }); - AST_Lambda.DEFMETHOD("_do_print", function(output, nokeyword) { - var self = this; - if (!nokeyword) { - output.print("function"); - } - if (self.name) { - output.space(); - self.name.print(output); - } - output.with_parens(function() { - self.argnames.forEach(function(arg, i) { - if (i) output.comma(); - arg.print(output); - }); - }); - output.space(); - print_bracketed(self.body, output); - }); - DEFPRINT(AST_Lambda, function(self, output) { - self._do_print(output); - }); - AST_Exit.DEFMETHOD("_do_print", function(output, kind) { - output.print(kind); - if (this.value) { - output.space(); - this.value.print(output); - } - output.semicolon(); - }); - DEFPRINT(AST_Return, function(self, output) { - self._do_print(output, "return"); - }); - DEFPRINT(AST_Throw, function(self, output) { - self._do_print(output, "throw"); - }); - AST_LoopControl.DEFMETHOD("_do_print", function(output, kind) { - output.print(kind); - if (this.label) { - output.space(); - this.label.print(output); - } - output.semicolon(); - }); - DEFPRINT(AST_Break, function(self, output) { - self._do_print(output, "break"); - }); - DEFPRINT(AST_Continue, function(self, output) { - self._do_print(output, "continue"); - }); - function make_then(self, output) { - if (output.option("bracketize")) { - make_block(self.body, output); - return; - } - if (!self.body) return output.semicolon(); - if (self.body instanceof AST_Do && output.option("ie_proof")) { - make_block(self.body, output); - return; - } - var b = self.body; - while (true) { - if (b instanceof AST_If) { - if (!b.alternative) { - make_block(self.body, output); - return; - } - b = b.alternative; - } else if (b instanceof AST_StatementWithBody) { - b = b.body; - } else break; - } - self.body.print(output); - } - DEFPRINT(AST_If, function(self, output) { - output.print("if"); - output.space(); - output.with_parens(function() { - self.condition.print(output); - }); - output.space(); - if (self.alternative) { - make_then(self, output); - output.space(); - output.print("else"); - output.space(); - force_statement(self.alternative, output); - } else { - self._do_print_body(output); - } - }); - DEFPRINT(AST_Switch, function(self, output) { - output.print("switch"); - output.space(); - output.with_parens(function() { - self.expression.print(output); - }); - output.space(); - if (self.body.length > 0) output.with_block(function() { - self.body.forEach(function(stmt, i) { - if (i) output.newline(); - output.indent(true); - stmt.print(output); - }); - }); else output.print("{}"); - }); - AST_SwitchBranch.DEFMETHOD("_do_print_body", function(output) { - if (this.body.length > 0) { - output.newline(); - this.body.forEach(function(stmt) { - output.indent(); - stmt.print(output); - output.newline(); - }); - } - }); - DEFPRINT(AST_Default, function(self, output) { - output.print("default:"); - self._do_print_body(output); - }); - DEFPRINT(AST_Case, function(self, output) { - output.print("case"); - output.space(); - self.expression.print(output); - output.print(":"); - self._do_print_body(output); - }); - DEFPRINT(AST_Try, function(self, output) { - output.print("try"); - output.space(); - print_bracketed(self.body, output); - if (self.bcatch) { - output.space(); - self.bcatch.print(output); - } - if (self.bfinally) { - output.space(); - self.bfinally.print(output); - } - }); - DEFPRINT(AST_Catch, function(self, output) { - output.print("catch"); - output.space(); - output.with_parens(function() { - self.argname.print(output); - }); - output.space(); - print_bracketed(self.body, output); - }); - DEFPRINT(AST_Finally, function(self, output) { - output.print("finally"); - output.space(); - print_bracketed(self.body, output); - }); - AST_Definitions.DEFMETHOD("_do_print", function(output, kind) { - output.print(kind); - output.space(); - this.definitions.forEach(function(def, i) { - if (i) output.comma(); - def.print(output); - }); - var p = output.parent(); - var in_for = p instanceof AST_For || p instanceof AST_ForIn; - var avoid_semicolon = in_for && p.init === this; - if (!avoid_semicolon) output.semicolon(); - }); - DEFPRINT(AST_Var, function(self, output) { - self._do_print(output, "var"); - }); - DEFPRINT(AST_Const, function(self, output) { - self._do_print(output, "const"); - }); - DEFPRINT(AST_VarDef, function(self, output) { - self.name.print(output); - if (self.value) { - output.space(); - output.print("="); - output.space(); - self.value.print(output); - } - }); - DEFPRINT(AST_Call, function(self, output) { - self.expression.print(output); - if (self instanceof AST_New && no_constructor_parens(self, output)) return; - output.with_parens(function() { - self.args.forEach(function(expr, i) { - if (i) output.comma(); - expr.print(output); - }); - }); - }); - DEFPRINT(AST_New, function(self, output) { - output.print("new"); - output.space(); - AST_Call.prototype.print.call(self, output); - }); - AST_Seq.DEFMETHOD("_do_print", function(output) { - this.car.print(output); - if (this.cdr) { - output.comma(); - if (output.should_break()) { - output.newline(); - output.indent(); - } - this.cdr.print(output); - } - }); - DEFPRINT(AST_Seq, function(self, output) { - self._do_print(output); - }); - DEFPRINT(AST_Dot, function(self, output) { - var expr = self.expression; - expr.print(output); - if (expr instanceof AST_Number) { - if (!/[xa-f.]/i.test(output.last())) { - output.print("."); - } - } - output.print("."); - output.add_mapping(self.end); - output.print_name(self.property); - }); - DEFPRINT(AST_Sub, function(self, output) { - self.expression.print(output); - output.print("["); - self.property.print(output); - output.print("]"); - }); - DEFPRINT(AST_UnaryPrefix, function(self, output) { - var op = self.operator; - output.print(op); - if (/^[a-z]/i.test(op)) output.space(); - self.expression.print(output); - }); - DEFPRINT(AST_UnaryPostfix, function(self, output) { - self.expression.print(output); - output.print(self.operator); - }); - DEFPRINT(AST_Binary, function(self, output) { - self.left.print(output); - output.space(); - output.print(self.operator); - output.space(); - self.right.print(output); - }); - DEFPRINT(AST_Conditional, function(self, output) { - self.condition.print(output); - output.space(); - output.print("?"); - output.space(); - self.consequent.print(output); - output.space(); - output.colon(); - self.alternative.print(output); - }); - DEFPRINT(AST_Array, function(self, output) { - output.with_square(function() { - var a = self.elements, len = a.length; - if (len > 0) output.space(); - a.forEach(function(exp, i) { - if (i) output.comma(); - if (!(exp instanceof AST_Undefined)) exp.print(output); - }); - if (len > 0) output.space(); - }); - }); - DEFPRINT(AST_Object, function(self, output) { - if (self.properties.length > 0) output.with_block(function() { - self.properties.forEach(function(prop, i) { - if (i) { - output.print(","); - output.newline(); - } - output.indent(); - prop.print(output); - }); - output.newline(); - }); else output.print("{}"); - }); - DEFPRINT(AST_ObjectKeyVal, function(self, output) { - var key = self.key; - if (output.option("quote_keys")) { - output.print_string(key); - } else if ((typeof key == "number" || !output.option("beautify") && +key + "" == key) && parseFloat(key) >= 0) { - output.print(make_num(key)); - } else if (!is_identifier(key)) { - output.print_string(key); - } else { - output.print_name(key); - } - output.colon(); - self.value.print(output); - }); - DEFPRINT(AST_ObjectSetter, function(self, output) { - output.print("set"); - self.value._do_print(output, true); - }); - DEFPRINT(AST_ObjectGetter, function(self, output) { - output.print("get"); - self.value._do_print(output, true); - }); - DEFPRINT(AST_Symbol, function(self, output) { - var def = self.definition(); - output.print_name(def ? def.mangled_name || def.name : self.name); - }); - DEFPRINT(AST_Undefined, function(self, output) { - output.print("void 0"); - }); - DEFPRINT(AST_Infinity, function(self, output) { - output.print("1/0"); - }); - DEFPRINT(AST_NaN, function(self, output) { - output.print("0/0"); - }); - DEFPRINT(AST_This, function(self, output) { - output.print("this"); - }); - DEFPRINT(AST_Constant, function(self, output) { - output.print(self.getValue()); - }); - DEFPRINT(AST_String, function(self, output) { - output.print_string(self.getValue()); - }); - DEFPRINT(AST_Number, function(self, output) { - output.print(make_num(self.getValue())); - }); - DEFPRINT(AST_RegExp, function(self, output) { - var str = self.getValue().toString(); - if (output.option("ascii_only")) str = output.to_ascii(str); - output.print(str); - }); - function force_statement(stat, output) { - if (output.option("bracketize")) { - if (!stat || stat instanceof AST_EmptyStatement) output.print("{}"); else if (stat instanceof AST_BlockStatement) stat.print(output); else output.with_block(function() { - output.indent(); - stat.print(output); - output.newline(); - }); - } else { - if (!stat || stat instanceof AST_EmptyStatement) output.force_semicolon(); else stat.print(output); - } - } - function first_in_statement(output) { - var a = output.stack(), i = a.length, node = a[--i], p = a[--i]; - while (i > 0) { - if (p instanceof AST_Statement && p.body === node) return true; - if (p instanceof AST_Seq && p.car === node || p instanceof AST_Call && p.expression === node || p instanceof AST_Dot && p.expression === node || p instanceof AST_Sub && p.expression === node || p instanceof AST_Conditional && p.condition === node || p instanceof AST_Binary && p.left === node || p instanceof AST_UnaryPostfix && p.expression === node) { - node = p; - p = a[--i]; - } else { - return false; - } - } - } - function no_constructor_parens(self, output) { - return self.args.length == 0 && !output.option("beautify"); - } - function best_of(a) { - var best = a[0], len = best.length; - for (var i = 1; i < a.length; ++i) { - if (a[i].length < len) { - best = a[i]; - len = best.length; - } - } - return best; - } - function make_num(num) { - var str = num.toString(10), a = [ str.replace(/^0\./, ".").replace("e+", "e") ], m; - if (Math.floor(num) === num) { - if (num >= 0) { - a.push("0x" + num.toString(16).toLowerCase(), "0" + num.toString(8)); - } else { - a.push("-0x" + (-num).toString(16).toLowerCase(), "-0" + (-num).toString(8)); - } - if (m = /^(.*?)(0+)$/.exec(num)) { - a.push(m[1] + "e" + m[2].length); - } - } else if (m = /^0?\.(0+)(.*)$/.exec(num)) { - a.push(m[2] + "e-" + (m[1].length + m[2].length), str.substr(str.indexOf("."))); - } - return best_of(a); - } - function make_block(stmt, output) { - if (stmt instanceof AST_BlockStatement) { - stmt.print(output); - return; - } - output.with_block(function() { - output.indent(); - stmt.print(output); - output.newline(); - }); - } - function DEFMAP(nodetype, generator) { - nodetype.DEFMETHOD("add_source_map", function(stream) { - generator(this, stream); - }); - } - DEFMAP(AST_Node, noop); - function basic_sourcemap_gen(self, output) { - output.add_mapping(self.start); - } - DEFMAP(AST_Directive, basic_sourcemap_gen); - DEFMAP(AST_Debugger, basic_sourcemap_gen); - DEFMAP(AST_Symbol, basic_sourcemap_gen); - DEFMAP(AST_Jump, basic_sourcemap_gen); - DEFMAP(AST_StatementWithBody, basic_sourcemap_gen); - DEFMAP(AST_LabeledStatement, noop); - DEFMAP(AST_Lambda, basic_sourcemap_gen); - DEFMAP(AST_Switch, basic_sourcemap_gen); - DEFMAP(AST_SwitchBranch, basic_sourcemap_gen); - DEFMAP(AST_BlockStatement, basic_sourcemap_gen); - DEFMAP(AST_Toplevel, noop); - DEFMAP(AST_New, basic_sourcemap_gen); - DEFMAP(AST_Try, basic_sourcemap_gen); - DEFMAP(AST_Catch, basic_sourcemap_gen); - DEFMAP(AST_Finally, basic_sourcemap_gen); - DEFMAP(AST_Definitions, basic_sourcemap_gen); - DEFMAP(AST_Constant, basic_sourcemap_gen); - DEFMAP(AST_ObjectProperty, function(self, output) { - output.add_mapping(self.start, self.key); - }); - })(); - "use strict"; - function Compressor(options, false_by_default) { - if (!(this instanceof Compressor)) return new Compressor(options, false_by_default); - TreeTransformer.call(this, this.before, this.after); - this.options = defaults(options, { - sequences: !false_by_default, - properties: !false_by_default, - dead_code: !false_by_default, - drop_debugger: !false_by_default, - unsafe: !false_by_default, - unsafe_comps: false, - conditionals: !false_by_default, - comparisons: !false_by_default, - evaluate: !false_by_default, - booleans: !false_by_default, - loops: !false_by_default, - unused: !false_by_default, - hoist_funs: !false_by_default, - hoist_vars: false, - if_return: !false_by_default, - join_vars: !false_by_default, - cascade: !false_by_default, - side_effects: !false_by_default, - warnings: true, - global_defs: {} - }, true); - } - Compressor.prototype = new TreeTransformer(); - merge(Compressor.prototype, { - option: function(key) { - return this.options[key]; - }, - warn: function() { - if (this.options.warnings) AST_Node.warn.apply(AST_Node, arguments); - }, - before: function(node, descend, in_list) { - if (node._squeezed) return node; - if (node instanceof AST_Scope) { - node.drop_unused(this); - node = node.hoist_declarations(this); - } - descend(node, this); - node = node.optimize(this); - if (node instanceof AST_Scope) { - var save_warnings = this.options.warnings; - this.options.warnings = false; - node.drop_unused(this); - this.options.warnings = save_warnings; - } - node._squeezed = true; - return node; - } - }); - (function() { - function OPT(node, optimizer) { - node.DEFMETHOD("optimize", function(compressor) { - var self = this; - if (self._optimized) return self; - var opt = optimizer(self, compressor); - opt._optimized = true; - if (opt === self) return opt; - return opt.transform(compressor); - }); - } - OPT(AST_Node, function(self, compressor) { - return self; - }); - AST_Node.DEFMETHOD("equivalent_to", function(node) { - return this.print_to_string() == node.print_to_string(); - }); - function make_node(ctor, orig, props) { - if (!props) props = {}; - if (orig) { - if (!props.start) props.start = orig.start; - if (!props.end) props.end = orig.end; - } - return new ctor(props); - } - function make_node_from_constant(compressor, val, orig) { - if (val instanceof AST_Node) return val.transform(compressor); - switch (typeof val) { - case "string": - return make_node(AST_String, orig, { - value: val - }).optimize(compressor); - - case "number": - return make_node(isNaN(val) ? AST_NaN : AST_Number, orig, { - value: val - }).optimize(compressor); - - case "boolean": - return make_node(val ? AST_True : AST_False, orig); - - case "undefined": - return make_node(AST_Undefined, orig).optimize(compressor); - - default: - if (val === null) { - return make_node(AST_Null, orig).optimize(compressor); - } - if (val instanceof RegExp) { - return make_node(AST_RegExp, orig).optimize(compressor); - } - throw new Error(string_template("Can't handle constant of type: {type}", { - type: typeof val - })); - } - } - function as_statement_array(thing) { - if (thing === null) return []; - if (thing instanceof AST_BlockStatement) return thing.body; - if (thing instanceof AST_EmptyStatement) return []; - if (thing instanceof AST_Statement) return [ thing ]; - throw new Error("Can't convert thing to statement array"); - } - function is_empty(thing) { - if (thing === null) return true; - if (thing instanceof AST_EmptyStatement) return true; - if (thing instanceof AST_BlockStatement) return thing.body.length == 0; - return false; - } - function loop_body(x) { - if (x instanceof AST_Switch) return x; - if (x instanceof AST_For || x instanceof AST_ForIn || x instanceof AST_DWLoop) { - return x.body instanceof AST_BlockStatement ? x.body : x; - } - return x; - } - function tighten_body(statements, compressor) { - var CHANGED; - do { - CHANGED = false; - statements = eliminate_spurious_blocks(statements); - if (compressor.option("dead_code")) { - statements = eliminate_dead_code(statements, compressor); - } - if (compressor.option("if_return")) { - statements = handle_if_return(statements, compressor); - } - if (compressor.option("sequences")) { - statements = sequencesize(statements, compressor); - } - if (compressor.option("join_vars")) { - statements = join_consecutive_vars(statements, compressor); - } - } while (CHANGED); - return statements; - function eliminate_spurious_blocks(statements) { - var seen_dirs = []; - return statements.reduce(function(a, stat) { - if (stat instanceof AST_BlockStatement) { - CHANGED = true; - a.push.apply(a, eliminate_spurious_blocks(stat.body)); - } else if (stat instanceof AST_EmptyStatement) { - CHANGED = true; - } else if (stat instanceof AST_Directive) { - if (seen_dirs.indexOf(stat.value) < 0) { - a.push(stat); - seen_dirs.push(stat.value); - } else { - CHANGED = true; - } - } else { - a.push(stat); - } - return a; - }, []); - } - function handle_if_return(statements, compressor) { - var self = compressor.self(); - var in_lambda = self instanceof AST_Lambda; - var ret = []; - loop: for (var i = statements.length; --i >= 0; ) { - var stat = statements[i]; - switch (true) { - case in_lambda && stat instanceof AST_Return && !stat.value && ret.length == 0: - CHANGED = true; - continue loop; - - case stat instanceof AST_If: - if (stat.body instanceof AST_Return) { - if ((in_lambda && ret.length == 0 || ret[0] instanceof AST_Return && !ret[0].value) && !stat.body.value && !stat.alternative) { - CHANGED = true; - var cond = make_node(AST_SimpleStatement, stat.condition, { - body: stat.condition - }); - ret.unshift(cond); - continue loop; - } - if (ret[0] instanceof AST_Return && stat.body.value && ret[0].value && !stat.alternative) { - CHANGED = true; - stat = stat.clone(); - stat.alternative = ret[0]; - ret[0] = stat.transform(compressor); - continue loop; - } - if ((ret.length == 0 || ret[0] instanceof AST_Return) && stat.body.value && !stat.alternative && in_lambda) { - CHANGED = true; - stat = stat.clone(); - stat.alternative = ret[0] || make_node(AST_Return, stat, { - value: make_node(AST_Undefined, stat) - }); - ret[0] = stat.transform(compressor); - continue loop; - } - if (!stat.body.value && in_lambda) { - CHANGED = true; - stat = stat.clone(); - stat.condition = stat.condition.negate(compressor); - stat.body = make_node(AST_BlockStatement, stat, { - body: as_statement_array(stat.alternative).concat(ret) - }); - stat.alternative = null; - ret = [ stat.transform(compressor) ]; - continue loop; - } - if (ret.length == 1 && in_lambda && ret[0] instanceof AST_SimpleStatement && (!stat.alternative || stat.alternative instanceof AST_SimpleStatement)) { - CHANGED = true; - ret.push(make_node(AST_Return, ret[0], { - value: make_node(AST_Undefined, ret[0]) - }).transform(compressor)); - ret = as_statement_array(stat.alternative).concat(ret); - ret.unshift(stat); - continue loop; - } - } - var ab = aborts(stat.body); - var lct = ab instanceof AST_LoopControl ? compressor.loopcontrol_target(ab.label) : null; - if (ab && (ab instanceof AST_Return && !ab.value && in_lambda || ab instanceof AST_Continue && self === loop_body(lct) || ab instanceof AST_Break && lct instanceof AST_BlockStatement && self === lct)) { - if (ab.label) { - remove(ab.label.thedef.references, ab.label); - } - CHANGED = true; - var body = as_statement_array(stat.body).slice(0, -1); - stat = stat.clone(); - stat.condition = stat.condition.negate(compressor); - stat.body = make_node(AST_BlockStatement, stat, { - body: ret - }); - stat.alternative = make_node(AST_BlockStatement, stat, { - body: body - }); - ret = [ stat.transform(compressor) ]; - continue loop; - } - var ab = aborts(stat.alternative); - var lct = ab instanceof AST_LoopControl ? compressor.loopcontrol_target(ab.label) : null; - if (ab && (ab instanceof AST_Return && !ab.value && in_lambda || ab instanceof AST_Continue && self === loop_body(lct) || ab instanceof AST_Break && lct instanceof AST_BlockStatement && self === lct)) { - if (ab.label) { - remove(ab.label.thedef.references, ab.label); - } - CHANGED = true; - stat = stat.clone(); - stat.body = make_node(AST_BlockStatement, stat.body, { - body: as_statement_array(stat.body).concat(ret) - }); - stat.alternative = make_node(AST_BlockStatement, stat.alternative, { - body: as_statement_array(stat.alternative).slice(0, -1) - }); - ret = [ stat.transform(compressor) ]; - continue loop; - } - ret.unshift(stat); - break; - - default: - ret.unshift(stat); - break; - } - } - return ret; - } - function eliminate_dead_code(statements, compressor) { - var has_quit = false; - var orig = statements.length; - var self = compressor.self(); - statements = statements.reduce(function(a, stat) { - if (has_quit) { - extract_declarations_from_unreachable_code(compressor, stat, a); - } else { - if (stat instanceof AST_LoopControl) { - var lct = compressor.loopcontrol_target(stat.label); - if (stat instanceof AST_Break && lct instanceof AST_BlockStatement && loop_body(lct) === self || stat instanceof AST_Continue && loop_body(lct) === self) { - if (stat.label) { - remove(stat.label.thedef.references, stat.label); - } - } else { - a.push(stat); - } - } else { - a.push(stat); - } - if (aborts(stat)) has_quit = true; - } - return a; - }, []); - CHANGED = statements.length != orig; - return statements; - } - function sequencesize(statements, compressor) { - if (statements.length < 2) return statements; - var seq = [], ret = []; - function push_seq() { - seq = AST_Seq.from_array(seq); - if (seq) ret.push(make_node(AST_SimpleStatement, seq, { - body: seq - })); - seq = []; - } - statements.forEach(function(stat) { - if (stat instanceof AST_SimpleStatement) seq.push(stat.body); else push_seq(), ret.push(stat); - }); - push_seq(); - ret = sequencesize_2(ret, compressor); - CHANGED = ret.length != statements.length; - return ret; - } - function sequencesize_2(statements, compressor) { - function cons_seq(right) { - ret.pop(); - var left = prev.body; - if (left instanceof AST_Seq) { - left.add(right); - } else { - left = AST_Seq.cons(left, right); - } - return left.transform(compressor); - } - var ret = [], prev = null; - statements.forEach(function(stat) { - if (prev) { - if (stat instanceof AST_For) { - var opera = {}; - try { - prev.body.walk(new TreeWalker(function(node) { - if (node instanceof AST_Binary && node.operator == "in") throw opera; - })); - if (stat.init && !(stat.init instanceof AST_Definitions)) { - stat.init = cons_seq(stat.init); - } else if (!stat.init) { - stat.init = prev.body; - ret.pop(); - } - } catch (ex) { - if (ex !== opera) throw ex; - } - } else if (stat instanceof AST_If) { - stat.condition = cons_seq(stat.condition); - } else if (stat instanceof AST_With) { - stat.expression = cons_seq(stat.expression); - } else if (stat instanceof AST_Exit && stat.value) { - stat.value = cons_seq(stat.value); - } else if (stat instanceof AST_Exit) { - stat.value = cons_seq(make_node(AST_Undefined, stat)); - } else if (stat instanceof AST_Switch) { - stat.expression = cons_seq(stat.expression); - } - } - ret.push(stat); - prev = stat instanceof AST_SimpleStatement ? stat : null; - }); - return ret; - } - function join_consecutive_vars(statements, compressor) { - var prev = null; - return statements.reduce(function(a, stat) { - if (stat instanceof AST_Definitions && prev && prev.TYPE == stat.TYPE) { - prev.definitions = prev.definitions.concat(stat.definitions); - CHANGED = true; - } else if (stat instanceof AST_For && prev instanceof AST_Definitions && (!stat.init || stat.init.TYPE == prev.TYPE)) { - CHANGED = true; - a.pop(); - if (stat.init) { - stat.init.definitions = prev.definitions.concat(stat.init.definitions); - } else { - stat.init = prev; - } - a.push(stat); - prev = stat; - } else { - prev = stat; - a.push(stat); - } - return a; - }, []); - } - } - function extract_declarations_from_unreachable_code(compressor, stat, target) { - compressor.warn("Dropping unreachable code [{file}:{line},{col}]", stat.start); - stat.walk(new TreeWalker(function(node) { - if (node instanceof AST_Definitions) { - compressor.warn("Declarations in unreachable code! [{file}:{line},{col}]", node.start); - node.remove_initializers(); - target.push(node); - return true; - } - if (node instanceof AST_Defun) { - target.push(node); - return true; - } - if (node instanceof AST_Scope) { - return true; - } - })); - } - (function(def) { - var unary_bool = [ "!", "delete" ]; - var binary_bool = [ "in", "instanceof", "==", "!=", "===", "!==", "<", "<=", ">=", ">" ]; - def(AST_Node, function() { - return false; - }); - def(AST_UnaryPrefix, function() { - return member(this.operator, unary_bool); - }); - def(AST_Binary, function() { - return member(this.operator, binary_bool) || (this.operator == "&&" || this.operator == "||") && this.left.is_boolean() && this.right.is_boolean(); - }); - def(AST_Conditional, function() { - return this.consequent.is_boolean() && this.alternative.is_boolean(); - }); - def(AST_Assign, function() { - return this.operator == "=" && this.right.is_boolean(); - }); - def(AST_Seq, function() { - return this.cdr.is_boolean(); - }); - def(AST_True, function() { - return true; - }); - def(AST_False, function() { - return true; - }); - })(function(node, func) { - node.DEFMETHOD("is_boolean", func); - }); - (function(def) { - def(AST_Node, function() { - return false; - }); - def(AST_String, function() { - return true; - }); - def(AST_UnaryPrefix, function() { - return this.operator == "typeof"; - }); - def(AST_Binary, function() { - return this.operator == "+" && (this.left.is_string() || this.right.is_string()); - }); - def(AST_Assign, function() { - return this.operator == "=" && this.right.is_string(); - }); - })(function(node, func) { - node.DEFMETHOD("is_string", func); - }); - function best_of(ast1, ast2) { - return ast1.print_to_string().length > ast2.print_to_string().length ? ast2 : ast1; - } - (function(def) { - AST_Node.DEFMETHOD("evaluate", function(compressor) { - if (!compressor.option("evaluate")) return [ this ]; - try { - var val = this._eval(), ast = make_node_from_constant(compressor, val, this); - return [ best_of(ast, this), val ]; - } catch (ex) { - if (ex !== def) throw ex; - return [ this ]; - } - }); - def(AST_Statement, function() { - throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]", this.start)); - }); - def(AST_Function, function() { - return [ this ]; - }); - function ev(node) { - return node._eval(); - } - def(AST_Node, function() { - throw def; - }); - def(AST_Constant, function() { - return this.getValue(); - }); - def(AST_UnaryPrefix, function() { - var e = this.expression; - switch (this.operator) { - case "!": - return !ev(e); - - case "typeof": - return typeof ev(e); - - case "void": - return void ev(e); - - case "~": - return ~ev(e); - - case "-": - return -ev(e); - - case "+": - return +ev(e); - } - throw def; - }); - def(AST_Binary, function() { - var left = this.left, right = this.right; - switch (this.operator) { - case "&&": - return ev(left) && ev(right); - - case "||": - return ev(left) || ev(right); - - case "|": - return ev(left) | ev(right); - - case "&": - return ev(left) & ev(right); - - case "^": - return ev(left) ^ ev(right); - - case "+": - return ev(left) + ev(right); - - case "*": - return ev(left) * ev(right); - - case "/": - return ev(left) / ev(right); - - case "%": - return ev(left) % ev(right); - - case "-": - return ev(left) - ev(right); - - case "<<": - return ev(left) << ev(right); - - case ">>": - return ev(left) >> ev(right); - - case ">>>": - return ev(left) >>> ev(right); - - case "==": - return ev(left) == ev(right); - - case "===": - return ev(left) === ev(right); - - case "!=": - return ev(left) != ev(right); - - case "!==": - return ev(left) !== ev(right); - - case "<": - return ev(left) < ev(right); - - case "<=": - return ev(left) <= ev(right); - - case ">": - return ev(left) > ev(right); - - case ">=": - return ev(left) >= ev(right); - - case "in": - return ev(left) in ev(right); - - case "instanceof": - return ev(left) instanceof ev(right); - } - throw def; - }); - def(AST_Conditional, function() { - return ev(this.condition) ? ev(this.consequent) : ev(this.alternative); - }); - def(AST_SymbolRef, function() { - var d = this.definition(); - if (d && d.constant) { - var orig = d.orig[0]; - if (orig) orig = orig.init[0]; - orig = orig && orig.value; - if (orig) return ev(orig); - } - throw def; - }); - })(function(node, func) { - node.DEFMETHOD("_eval", func); - }); - (function(def) { - function basic_negation(exp) { - return make_node(AST_UnaryPrefix, exp, { - operator: "!", - expression: exp - }); - } - def(AST_Node, function() { - return basic_negation(this); - }); - def(AST_Statement, function() { - throw new Error("Cannot negate a statement"); - }); - def(AST_Function, function() { - return basic_negation(this); - }); - def(AST_UnaryPrefix, function() { - if (this.operator == "!") return this.expression; - return basic_negation(this); - }); - def(AST_Seq, function(compressor) { - var self = this.clone(); - self.cdr = self.cdr.negate(compressor); - return self; - }); - def(AST_Conditional, function(compressor) { - var self = this.clone(); - self.consequent = self.consequent.negate(compressor); - self.alternative = self.alternative.negate(compressor); - return best_of(basic_negation(this), self); - }); - def(AST_Binary, function(compressor) { - var self = this.clone(), op = this.operator; - if (compressor.option("unsafe_comps")) { - switch (op) { - case "<=": - self.operator = ">"; - return self; - - case "<": - self.operator = ">="; - return self; - - case ">=": - self.operator = "<"; - return self; - - case ">": - self.operator = "<="; - return self; - } - } - switch (op) { - case "==": - self.operator = "!="; - return self; - - case "!=": - self.operator = "=="; - return self; - - case "===": - self.operator = "!=="; - return self; - - case "!==": - self.operator = "==="; - return self; - - case "&&": - self.operator = "||"; - self.left = self.left.negate(compressor); - self.right = self.right.negate(compressor); - return best_of(basic_negation(this), self); - - case "||": - self.operator = "&&"; - self.left = self.left.negate(compressor); - self.right = self.right.negate(compressor); - return best_of(basic_negation(this), self); - } - return basic_negation(this); - }); - })(function(node, func) { - node.DEFMETHOD("negate", function(compressor) { - return func.call(this, compressor); - }); - }); - (function(def) { - def(AST_Node, function() { - return true; - }); - def(AST_EmptyStatement, function() { - return false; - }); - def(AST_Constant, function() { - return false; - }); - def(AST_This, function() { - return false; - }); - def(AST_Block, function() { - for (var i = this.body.length; --i >= 0; ) { - if (this.body[i].has_side_effects()) return true; - } - return false; - }); - def(AST_SimpleStatement, function() { - return this.body.has_side_effects(); - }); - def(AST_Defun, function() { - return true; - }); - def(AST_Function, function() { - return false; - }); - def(AST_Binary, function() { - return this.left.has_side_effects() || this.right.has_side_effects(); - }); - def(AST_Assign, function() { - return true; - }); - def(AST_Conditional, function() { - return this.condition.has_side_effects() || this.consequent.has_side_effects() || this.alternative.has_side_effects(); - }); - def(AST_Unary, function() { - return this.operator == "delete" || this.operator == "++" || this.operator == "--" || this.expression.has_side_effects(); - }); - def(AST_SymbolRef, function() { - return false; - }); - def(AST_Object, function() { - for (var i = this.properties.length; --i >= 0; ) if (this.properties[i].has_side_effects()) return true; - return false; - }); - def(AST_ObjectProperty, function() { - return this.value.has_side_effects(); - }); - def(AST_Array, function() { - for (var i = this.elements.length; --i >= 0; ) if (this.elements[i].has_side_effects()) return true; - return false; - }); - def(AST_PropAccess, function() { - return true; - }); - def(AST_Seq, function() { - return this.car.has_side_effects() || this.cdr.has_side_effects(); - }); - })(function(node, func) { - node.DEFMETHOD("has_side_effects", func); - }); - function aborts(thing) { - return thing && thing.aborts(); - } - (function(def) { - def(AST_Statement, function() { - return null; - }); - def(AST_Jump, function() { - return this; - }); - def(AST_BlockStatement, function() { - var n = this.body.length; - return n > 0 && aborts(this.body[n - 1]); - }); - def(AST_If, function() { - return this.alternative && aborts(this.body) && aborts(this.alternative); - }); - })(function(node, func) { - node.DEFMETHOD("aborts", func); - }); - OPT(AST_Directive, function(self, compressor) { - if (self.scope.has_directive(self.value) !== self.scope) { - return make_node(AST_EmptyStatement, self); - } - return self; - }); - OPT(AST_Debugger, function(self, compressor) { - if (compressor.option("drop_debugger")) return make_node(AST_EmptyStatement, self); - return self; - }); - OPT(AST_LabeledStatement, function(self, compressor) { - if (self.body instanceof AST_Break && compressor.loopcontrol_target(self.body.label) === self.body) { - return make_node(AST_EmptyStatement, self); - } - return self.label.references.length == 0 ? self.body : self; - }); - OPT(AST_Block, function(self, compressor) { - self.body = tighten_body(self.body, compressor); - return self; - }); - OPT(AST_BlockStatement, function(self, compressor) { - self.body = tighten_body(self.body, compressor); - switch (self.body.length) { - case 1: - return self.body[0]; - - case 0: - return make_node(AST_EmptyStatement, self); - } - return self; - }); - AST_Scope.DEFMETHOD("drop_unused", function(compressor) { - var self = this; - if (compressor.option("unused") && !(self instanceof AST_Toplevel) && !self.uses_eval) { - var in_use = []; - var scope = this; - var tw = new TreeWalker(function(node, descend) { - if (node !== self) { - if (node instanceof AST_Defun) { - return true; - } - if (node instanceof AST_Definitions && scope === self) { - node.definitions.forEach(function(def) { - if (def.value && def.value.has_side_effects()) { - def.value.walk(tw); - } - }); - return true; - } - if (node instanceof AST_SymbolRef) { - push_uniq(in_use, node.definition()); - return true; - } - if (node instanceof AST_Scope) { - var save_scope = scope; - scope = node; - descend(); - scope = save_scope; - return true; - } - } - }); - self.walk(tw); - for (var i = 0; i < in_use.length; ++i) { - in_use[i].orig.forEach(function(decl) { - if (decl instanceof AST_SymbolDeclaration) { - decl.init.forEach(function(init) { - var tw = new TreeWalker(function(node) { - if (node instanceof AST_SymbolRef) { - push_uniq(in_use, node.definition()); - } - }); - init.walk(tw); - }); - } - }); - } - var tt = new TreeTransformer(function before(node, descend, in_list) { - if (node instanceof AST_Lambda) { - for (var a = node.argnames, i = a.length; --i >= 0; ) { - var sym = a[i]; - if (sym.unreferenced()) { - a.pop(); - compressor.warn("Dropping unused function argument {name} [{file}:{line},{col}]", { - name: sym.name, - file: sym.start.file, - line: sym.start.line, - col: sym.start.col - }); - } else break; - } - } - if (node instanceof AST_Defun && node !== self) { - if (!member(node.name.definition(), in_use)) { - compressor.warn("Dropping unused function {name} [{file}:{line},{col}]", { - name: node.name.name, - file: node.name.start.file, - line: node.name.start.line, - col: node.name.start.col - }); - return make_node(AST_EmptyStatement, node); - } - return node; - } - if (node instanceof AST_Definitions && !(tt.parent() instanceof AST_ForIn)) { - var def = node.definitions.filter(function(def) { - if (member(def.name.definition(), in_use)) return true; - var w = { - name: def.name.name, - file: def.name.start.file, - line: def.name.start.line, - col: def.name.start.col - }; - if (def.value && def.value.has_side_effects()) { - def._unused_side_effects = true; - compressor.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", w); - return true; - } - compressor.warn("Dropping unused variable {name} [{file}:{line},{col}]", w); - return false; - }); - def = mergeSort(def, function(a, b) { - if (!a.value && b.value) return -1; - if (!b.value && a.value) return 1; - return 0; - }); - var side_effects = []; - for (var i = 0; i < def.length; ) { - var x = def[i]; - if (x._unused_side_effects) { - side_effects.push(x.value); - def.splice(i, 1); - } else { - if (side_effects.length > 0) { - side_effects.push(x.value); - x.value = AST_Seq.from_array(side_effects); - side_effects = []; - } - ++i; - } - } - if (side_effects.length > 0) { - side_effects = make_node(AST_BlockStatement, node, { - body: [ make_node(AST_SimpleStatement, node, { - body: AST_Seq.from_array(side_effects) - }) ] - }); - } else { - side_effects = null; - } - if (def.length == 0 && !side_effects) { - return make_node(AST_EmptyStatement, node); - } - if (def.length == 0) { - return side_effects; - } - node.definitions = def; - if (side_effects) { - side_effects.body.unshift(node); - node = side_effects; - } - return node; - } - if (node instanceof AST_For && node.init instanceof AST_BlockStatement) { - descend(node, this); - var body = node.init.body.slice(0, -1); - node.init = node.init.body.slice(-1)[0].body; - body.push(node); - return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, { - body: body - }); - } - if (node instanceof AST_Scope && node !== self) return node; - }); - self.transform(tt); - } - }); - AST_Scope.DEFMETHOD("hoist_declarations", function(compressor) { - var hoist_funs = compressor.option("hoist_funs"); - var hoist_vars = compressor.option("hoist_vars"); - var self = this; - if (hoist_funs || hoist_vars) { - var dirs = []; - var hoisted = []; - var vars = new Dictionary(), vars_found = 0, var_decl = 0; - self.walk(new TreeWalker(function(node) { - if (node instanceof AST_Scope && node !== self) return true; - if (node instanceof AST_Var) { - ++var_decl; - return true; - } - })); - hoist_vars = hoist_vars && var_decl > 1; - var tt = new TreeTransformer(function before(node) { - if (node !== self) { - if (node instanceof AST_Directive) { - dirs.push(node); - return make_node(AST_EmptyStatement, node); - } - if (node instanceof AST_Defun && hoist_funs) { - hoisted.push(node); - return make_node(AST_EmptyStatement, node); - } - if (node instanceof AST_Var && hoist_vars) { - node.definitions.forEach(function(def) { - vars.set(def.name.name, def); - ++vars_found; - }); - var seq = node.to_assignments(); - var p = tt.parent(); - if (p instanceof AST_ForIn && p.init === node) { - if (seq == null) return node.definitions[0].name; - return seq; - } - if (p instanceof AST_For && p.init === node) { - return seq; - } - if (!seq) return make_node(AST_EmptyStatement, node); - return make_node(AST_SimpleStatement, node, { - body: seq - }); - } - if (node instanceof AST_Scope) return node; - } - }); - self = self.transform(tt); - if (vars_found > 0) hoisted.unshift(make_node(AST_Var, self, { - definitions: vars.map(function(def) { - def = def.clone(); - def.value = null; - return def; - }) - })); - self.body = dirs.concat(hoisted, self.body); - } - return self; - }); - OPT(AST_SimpleStatement, function(self, compressor) { - if (compressor.option("side_effects")) { - if (!self.body.has_side_effects()) { - compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start); - return make_node(AST_EmptyStatement, self); - } - } - return self; - }); - OPT(AST_DWLoop, function(self, compressor) { - var cond = self.condition.evaluate(compressor); - self.condition = cond[0]; - if (!compressor.option("loops")) return self; - if (cond.length > 1) { - if (cond[1]) { - return make_node(AST_For, self, { - body: self.body - }); - } else if (self instanceof AST_While) { - if (compressor.option("dead_code")) { - var a = []; - extract_declarations_from_unreachable_code(compressor, self.body, a); - return make_node(AST_BlockStatement, self, { - body: a - }); - } - } else { - return self.body; - } - } - return self; - }); - function if_break_in_loop(self, compressor) { - function drop_it(rest) { - rest = as_statement_array(rest); - if (self.body instanceof AST_BlockStatement) { - self.body = self.body.clone(); - self.body.body = rest.concat(self.body.body.slice(1)); - self.body = self.body.transform(compressor); - } else { - self.body = make_node(AST_BlockStatement, self.body, { - body: rest - }).transform(compressor); - } - if_break_in_loop(self, compressor); - } - var first = self.body instanceof AST_BlockStatement ? self.body.body[0] : self.body; - if (first instanceof AST_If) { - if (first.body instanceof AST_Break && compressor.loopcontrol_target(first.body.label) === self) { - if (self.condition) { - self.condition = make_node(AST_Binary, self.condition, { - left: self.condition, - operator: "&&", - right: first.condition.negate(compressor) - }); - } else { - self.condition = first.condition.negate(compressor); - } - drop_it(first.alternative); - } else if (first.alternative instanceof AST_Break && compressor.loopcontrol_target(first.alternative.label) === self) { - if (self.condition) { - self.condition = make_node(AST_Binary, self.condition, { - left: self.condition, - operator: "&&", - right: first.condition - }); - } else { - self.condition = first.condition; - } - drop_it(first.body); - } - } - } - OPT(AST_While, function(self, compressor) { - if (!compressor.option("loops")) return self; - self = AST_DWLoop.prototype.optimize.call(self, compressor); - if (self instanceof AST_While) { - if_break_in_loop(self, compressor); - self = make_node(AST_For, self, self).transform(compressor); - } - return self; - }); - OPT(AST_For, function(self, compressor) { - var cond = self.condition; - if (cond) { - cond = cond.evaluate(compressor); - self.condition = cond[0]; - } - if (!compressor.option("loops")) return self; - if (cond) { - if (cond.length > 1 && !cond[1]) { - if (compressor.option("dead_code")) { - var a = []; - if (self.init instanceof AST_Statement) { - a.push(self.init); - } else if (self.init) { - a.push(make_node(AST_SimpleStatement, self.init, { - body: self.init - })); - } - extract_declarations_from_unreachable_code(compressor, self.body, a); - return make_node(AST_BlockStatement, self, { - body: a - }); - } - } - } - if_break_in_loop(self, compressor); - return self; - }); - OPT(AST_If, function(self, compressor) { - if (!compressor.option("conditionals")) return self; - var cond = self.condition.evaluate(compressor); - self.condition = cond[0]; - if (cond.length > 1) { - if (cond[1]) { - compressor.warn("Condition always true [{file}:{line},{col}]", self.condition.start); - if (compressor.option("dead_code")) { - var a = []; - if (self.alternative) { - extract_declarations_from_unreachable_code(compressor, self.alternative, a); - } - a.push(self.body); - return make_node(AST_BlockStatement, self, { - body: a - }).transform(compressor); - } - } else { - compressor.warn("Condition always false [{file}:{line},{col}]", self.condition.start); - if (compressor.option("dead_code")) { - var a = []; - extract_declarations_from_unreachable_code(compressor, self.body, a); - if (self.alternative) a.push(self.alternative); - return make_node(AST_BlockStatement, self, { - body: a - }).transform(compressor); - } - } - } - if (is_empty(self.alternative)) self.alternative = null; - var negated = self.condition.negate(compressor); - var negated_is_best = best_of(self.condition, negated) === negated; - if (self.alternative && negated_is_best) { - negated_is_best = false; - self.condition = negated; - var tmp = self.body; - self.body = self.alternative || make_node(AST_EmptyStatement); - self.alternative = tmp; - } - if (is_empty(self.body) && is_empty(self.alternative)) { - return make_node(AST_SimpleStatement, self.condition, { - body: self.condition - }).transform(compressor); - } - if (self.body instanceof AST_SimpleStatement && self.alternative instanceof AST_SimpleStatement) { - return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Conditional, self, { - condition: self.condition, - consequent: self.body.body, - alternative: self.alternative.body - }) - }).transform(compressor); - } - if (is_empty(self.alternative) && self.body instanceof AST_SimpleStatement) { - if (negated_is_best) return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Binary, self, { - operator: "||", - left: negated, - right: self.body.body - }) - }).transform(compressor); - return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Binary, self, { - operator: "&&", - left: self.condition, - right: self.body.body - }) - }).transform(compressor); - } - if (self.body instanceof AST_EmptyStatement && self.alternative && self.alternative instanceof AST_SimpleStatement) { - return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Binary, self, { - operator: "||", - left: self.condition, - right: self.alternative.body - }) - }).transform(compressor); - } - if (self.body instanceof AST_Exit && self.alternative instanceof AST_Exit && self.body.TYPE == self.alternative.TYPE) { - return make_node(self.body.CTOR, self, { - value: make_node(AST_Conditional, self, { - condition: self.condition, - consequent: self.body.value || make_node(AST_Undefined, self.body).optimize(compressor), - alternative: self.alternative.value || make_node(AST_Undefined, self.alternative).optimize(compressor) - }) - }).transform(compressor); - } - if (self.body instanceof AST_If && !self.body.alternative && !self.alternative) { - self.condition = make_node(AST_Binary, self.condition, { - operator: "&&", - left: self.condition, - right: self.body.condition - }).transform(compressor); - self.body = self.body.body; - } - if (aborts(self.body)) { - if (self.alternative) { - var alt = self.alternative; - self.alternative = null; - return make_node(AST_BlockStatement, self, { - body: [ self, alt ] - }).transform(compressor); - } - } - if (aborts(self.alternative)) { - var body = self.body; - self.body = self.alternative; - self.condition = negated_is_best ? negated : self.condition.negate(compressor); - self.alternative = null; - return make_node(AST_BlockStatement, self, { - body: [ self, body ] - }).transform(compressor); - } - return self; - }); - OPT(AST_Switch, function(self, compressor) { - if (self.body.length == 0 && compressor.option("conditionals")) { - return make_node(AST_SimpleStatement, self, { - body: self.expression - }).transform(compressor); - } - var last_branch = self.body[self.body.length - 1]; - if (last_branch) { - var stat = last_branch.body[last_branch.body.length - 1]; - if (stat instanceof AST_Break && loop_body(compressor.loopcontrol_target(stat.label)) === self) last_branch.body.pop(); - } - return self; - }); - OPT(AST_Case, function(self, compressor) { - self.body = tighten_body(self.body, compressor); - return self; - }); - OPT(AST_Try, function(self, compressor) { - self.body = tighten_body(self.body, compressor); - return self; - }); - AST_Definitions.DEFMETHOD("remove_initializers", function() { - this.definitions.forEach(function(def) { - def.value = null; - }); - }); - AST_Definitions.DEFMETHOD("to_assignments", function() { - var assignments = this.definitions.reduce(function(a, def) { - if (def.value) { - var name = make_node(AST_SymbolRef, def.name, def.name); - a.push(make_node(AST_Assign, def, { - operator: "=", - left: name, - right: def.value - })); - } - return a; - }, []); - if (assignments.length == 0) return null; - return AST_Seq.from_array(assignments); - }); - OPT(AST_Definitions, function(self, compressor) { - if (self.definitions.length == 0) return make_node(AST_EmptyStatement, self); - return self; - }); - OPT(AST_Function, function(self, compressor) { - self = AST_Lambda.prototype.optimize.call(self, compressor); - if (compressor.option("unused")) { - if (self.name && self.name.unreferenced()) { - self.name = null; - } - } - return self; - }); - OPT(AST_Call, function(self, compressor) { - if (compressor.option("unsafe")) { - var exp = self.expression; - if (exp instanceof AST_SymbolRef && exp.undeclared()) { - switch (exp.name) { - case "Array": - if (self.args.length != 1) { - return make_node(AST_Array, self, { - elements: self.args - }); - } - break; - - case "Object": - if (self.args.length == 0) { - return make_node(AST_Object, self, { - properties: [] - }); - } - break; - - case "String": - return make_node(AST_Binary, self, { - left: self.args[0], - operator: "+", - right: make_node(AST_String, self, { - value: "" - }) - }); - } - } else if (exp instanceof AST_Dot && exp.property == "toString" && self.args.length == 0) { - return make_node(AST_Binary, self, { - left: make_node(AST_String, self, { - value: "" - }), - operator: "+", - right: exp.expression - }).transform(compressor); - } - } - if (compressor.option("side_effects")) { - if (self.expression instanceof AST_Function && self.args.length == 0 && !AST_Block.prototype.has_side_effects.call(self.expression)) { - return make_node(AST_Undefined, self).transform(compressor); - } - } - return self; - }); - OPT(AST_New, function(self, compressor) { - if (compressor.option("unsafe")) { - var exp = self.expression; - if (exp instanceof AST_SymbolRef && exp.undeclared()) { - switch (exp.name) { - case "Object": - case "RegExp": - case "Function": - case "Error": - case "Array": - return make_node(AST_Call, self, self); - } - } - } - return self; - }); - OPT(AST_Seq, function(self, compressor) { - if (!compressor.option("side_effects")) return self; - if (!self.car.has_side_effects()) return self.cdr; - if (compressor.option("cascade")) { - if (self.car instanceof AST_Assign && !self.car.left.has_side_effects() && self.car.left.equivalent_to(self.cdr)) { - return self.car; - } - if (!self.car.has_side_effects() && !self.cdr.has_side_effects() && self.car.equivalent_to(self.cdr)) { - return self.car; - } - } - return self; - }); - AST_Unary.DEFMETHOD("lift_sequences", function(compressor) { - if (compressor.option("sequences")) { - if (this.expression instanceof AST_Seq) { - var seq = this.expression; - var x = seq.to_array(); - this.expression = x.pop(); - x.push(this); - seq = AST_Seq.from_array(x).transform(compressor); - return seq; - } - } - return this; - }); - OPT(AST_UnaryPostfix, function(self, compressor) { - return self.lift_sequences(compressor); - }); - OPT(AST_UnaryPrefix, function(self, compressor) { - self = self.lift_sequences(compressor); - var e = self.expression; - if (compressor.option("booleans") && compressor.in_boolean_context()) { - switch (self.operator) { - case "!": - if (e instanceof AST_UnaryPrefix && e.operator == "!") { - return e.expression; - } - break; - - case "typeof": - compressor.warn("Boolean expression always true [{file}:{line},{col}]", self.start); - return make_node(AST_True, self); - } - if (e instanceof AST_Binary && self.operator == "!") { - self = best_of(self, e.negate(compressor)); - } - } - return self.evaluate(compressor)[0]; - }); - AST_Binary.DEFMETHOD("lift_sequences", function(compressor) { - if (compressor.option("sequences")) { - if (this.left instanceof AST_Seq) { - var seq = this.left; - var x = seq.to_array(); - this.left = x.pop(); - x.push(this); - seq = AST_Seq.from_array(x).transform(compressor); - return seq; - } - if (this.right instanceof AST_Seq && !(this.operator == "||" || this.operator == "&&") && !this.left.has_side_effects()) { - var seq = this.right; - var x = seq.to_array(); - this.right = x.pop(); - x.push(this); - seq = AST_Seq.from_array(x).transform(compressor); - return seq; - } - } - return this; - }); - var commutativeOperators = makePredicate("== === != !== * & | ^"); - OPT(AST_Binary, function(self, compressor) { - function reverse(op) { - if (op) self.operator = op; - var tmp = self.left; - self.left = self.right; - self.right = tmp; - } - if (commutativeOperators(self.operator)) { - if (self.right instanceof AST_Constant && !(self.left instanceof AST_Constant)) { - reverse(); - } - } - self = self.lift_sequences(compressor); - if (compressor.option("comparisons")) switch (self.operator) { - case "===": - case "!==": - if (self.left.is_string() && self.right.is_string() || self.left.is_boolean() && self.right.is_boolean()) { - self.operator = self.operator.substr(0, 2); - } - - case "==": - case "!=": - if (self.left instanceof AST_String && self.left.value == "undefined" && self.right instanceof AST_UnaryPrefix && self.right.operator == "typeof") { - if (!(self.right.expression instanceof AST_SymbolRef) || !self.right.expression.undeclared()) { - self.left = self.right.expression; - self.right = make_node(AST_Undefined, self.left).optimize(compressor); - if (self.operator.length == 2) self.operator += "="; - } - } - break; - } - if (compressor.option("booleans") && compressor.in_boolean_context()) switch (self.operator) { - case "&&": - var ll = self.left.evaluate(compressor); - var rr = self.right.evaluate(compressor); - if (ll.length > 1 && !ll[1] || rr.length > 1 && !rr[1]) { - compressor.warn("Boolean && always false [{file}:{line},{col}]", self.start); - return make_node(AST_False, self); - } - if (ll.length > 1 && ll[1]) { - return rr[0]; - } - if (rr.length > 1 && rr[1]) { - return ll[0]; - } - break; - - case "||": - var ll = self.left.evaluate(compressor); - var rr = self.right.evaluate(compressor); - if (ll.length > 1 && ll[1] || rr.length > 1 && rr[1]) { - compressor.warn("Boolean || always true [{file}:{line},{col}]", self.start); - return make_node(AST_True, self); - } - if (ll.length > 1 && !ll[1]) { - return rr[0]; - } - if (rr.length > 1 && !rr[1]) { - return ll[0]; - } - break; - - case "+": - var ll = self.left.evaluate(compressor); - var rr = self.right.evaluate(compressor); - if (ll.length > 1 && ll[0] instanceof AST_String && ll[1] || rr.length > 1 && rr[0] instanceof AST_String && rr[1]) { - compressor.warn("+ in boolean context always true [{file}:{line},{col}]", self.start); - return make_node(AST_True, self); - } - break; - } - var exp = self.evaluate(compressor); - if (exp.length > 1) { - if (best_of(exp[0], self) !== self) return exp[0]; - } - if (compressor.option("comparisons")) { - if (!(compressor.parent() instanceof AST_Binary) || compressor.parent() instanceof AST_Assign) { - var negated = make_node(AST_UnaryPrefix, self, { - operator: "!", - expression: self.negate(compressor) - }); - self = best_of(self, negated); - } - switch (self.operator) { - case "<": - reverse(">"); - break; - - case "<=": - reverse(">="); - break; - } - } - return self; - }); - OPT(AST_SymbolRef, function(self, compressor) { - if (self.undeclared()) { - var defines = compressor.option("global_defs"); - if (defines && defines.hasOwnProperty(self.name)) { - return make_node_from_constant(compressor, defines[self.name], self); - } - switch (self.name) { - case "undefined": - return make_node(AST_Undefined, self); - - case "NaN": - return make_node(AST_NaN, self); - - case "Infinity": - return make_node(AST_Infinity, self); - } - } - return self; - }); - OPT(AST_Undefined, function(self, compressor) { - if (compressor.option("unsafe")) { - var scope = compressor.find_parent(AST_Scope); - var undef = scope.find_variable("undefined"); - if (undef) { - var ref = make_node(AST_SymbolRef, self, { - name: "undefined", - scope: scope, - thedef: undef - }); - ref.reference(); - return ref; - } - } - return self; - }); - var ASSIGN_OPS = [ "+", "-", "/", "*", "%", ">>", "<<", ">>>", "|", "^", "&" ]; - OPT(AST_Assign, function(self, compressor) { - self = self.lift_sequences(compressor); - if (self.operator == "=" && self.left instanceof AST_SymbolRef && self.right instanceof AST_Binary && self.right.left instanceof AST_SymbolRef && self.right.left.name == self.left.name && member(self.right.operator, ASSIGN_OPS)) { - self.operator = self.right.operator + "="; - self.right = self.right.right; - } - return self; - }); - OPT(AST_Conditional, function(self, compressor) { - if (!compressor.option("conditionals")) return self; - if (self.condition instanceof AST_Seq) { - var car = self.condition.car; - self.condition = self.condition.cdr; - return AST_Seq.cons(car, self); - } - var cond = self.condition.evaluate(compressor); - if (cond.length > 1) { - if (cond[1]) { - compressor.warn("Condition always true [{file}:{line},{col}]", self.start); - return self.consequent; - } else { - compressor.warn("Condition always false [{file}:{line},{col}]", self.start); - return self.alternative; - } - } - var negated = cond[0].negate(compressor); - if (best_of(cond[0], negated) === negated) { - self = make_node(AST_Conditional, self, { - condition: negated, - consequent: self.alternative, - alternative: self.consequent - }); - } - var consequent = self.consequent; - var alternative = self.alternative; - if (consequent instanceof AST_Assign && alternative instanceof AST_Assign && consequent.operator == alternative.operator && consequent.left.equivalent_to(alternative.left)) { - self = make_node(AST_Assign, self, { - operator: consequent.operator, - left: consequent.left, - right: make_node(AST_Conditional, self, { - condition: self.condition, - consequent: consequent.right, - alternative: alternative.right - }) - }); - } - return self; - }); - OPT(AST_Boolean, function(self, compressor) { - if (compressor.option("booleans")) { - var p = compressor.parent(); - if (p instanceof AST_Binary && (p.operator == "==" || p.operator == "!=")) { - compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]", { - operator: p.operator, - value: self.value, - file: p.start.file, - line: p.start.line, - col: p.start.col - }); - return make_node(AST_Number, self, { - value: +self.value - }); - } - return make_node(AST_UnaryPrefix, self, { - operator: "!", - expression: make_node(AST_Number, self, { - value: 1 - self.value - }) - }); - } - return self; - }); - OPT(AST_Sub, function(self, compressor) { - var prop = self.property; - if (prop instanceof AST_String && compressor.option("properties")) { - prop = prop.getValue(); - if (is_identifier(prop)) { - return make_node(AST_Dot, self, { - expression: self.expression, - property: prop - }); - } - } - return self; - }); - function literals_in_boolean_context(self, compressor) { - if (compressor.option("booleans") && compressor.in_boolean_context()) { - return make_node(AST_True, self); - } - return self; - } - OPT(AST_Array, literals_in_boolean_context); - OPT(AST_Object, literals_in_boolean_context); - OPT(AST_RegExp, literals_in_boolean_context); - })(); - "use strict"; - function SourceMap(options) { - options = defaults(options, { - file: null, - root: null, - orig: null - }); - var generator = new MOZ_SourceMap.SourceMapGenerator({ - file: options.file, - sourceRoot: options.root - }); - var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig); - function add(source, gen_line, gen_col, orig_line, orig_col, name) { - if (orig_map) { - var info = orig_map.originalPositionFor({ - line: orig_line, - column: orig_col - }); - source = info.source; - orig_line = info.line; - orig_col = info.column; - name = info.name; - } - generator.addMapping({ - generated: { - line: gen_line, - column: gen_col - }, - original: { - line: orig_line, - column: orig_col - }, - source: source, - name: name - }); - } - return { - add: add, - get: function() { - return generator; - }, - toString: function() { - return generator.toString(); - } - }; - } - "use strict"; - (function() { - var MOZ_TO_ME = { - TryStatement: function(M) { - return new AST_Try({ - start: my_start_token(M), - end: my_end_token(M), - body: from_moz(M.block).body, - bcatch: from_moz(M.handlers[0]), - bfinally: M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null - }); - }, - CatchClause: function(M) { - return new AST_Catch({ - start: my_start_token(M), - end: my_end_token(M), - argname: from_moz(M.param), - body: from_moz(M.body).body - }); - }, - ObjectExpression: function(M) { - return new AST_Object({ - start: my_start_token(M), - end: my_end_token(M), - properties: M.properties.map(function(prop) { - var key = prop.key; - var name = key.type == "Identifier" ? key.name : key.value; - var args = { - start: my_start_token(key), - end: my_end_token(prop.value), - key: name, - value: from_moz(prop.value) - }; - switch (prop.kind) { - case "init": - return new AST_ObjectKeyVal(args); - - case "set": - args.value.name = from_moz(key); - return new AST_ObjectSetter(args); - - case "get": - args.value.name = from_moz(key); - return new AST_ObjectGetter(args); - } - }) - }); - }, - SequenceExpression: function(M) { - return AST_Seq.from_array(M.expressions.map(from_moz)); - }, - MemberExpression: function(M) { - return new (M.computed ? AST_Sub : AST_Dot)({ - start: my_start_token(M), - end: my_end_token(M), - property: M.computed ? from_moz(M.property) : M.property.name, - expression: from_moz(M.object) - }); - }, - SwitchCase: function(M) { - return new (M.test ? AST_Case : AST_Default)({ - start: my_start_token(M), - end: my_end_token(M), - expression: from_moz(M.test), - body: M.consequent.map(from_moz) - }); - }, - Literal: function(M) { - var val = M.value, args = { - start: my_start_token(M), - end: my_end_token(M) - }; - if (val === null) return new AST_Null(args); - switch (typeof val) { - case "string": - args.value = val; - return new AST_String(args); - - case "number": - args.value = val; - return new AST_Number(args); - - case "boolean": - return new (val ? AST_True : AST_False)(args); - - default: - args.value = val; - return new AST_RegExp(args); - } - }, - UnaryExpression: From_Moz_Unary, - UpdateExpression: From_Moz_Unary, - Identifier: function(M) { - var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2]; - return new (M.name == "this" ? AST_This : p.type == "LabeledStatement" ? AST_Label : p.type == "VariableDeclarator" && p.id === M ? p.kind == "const" ? AST_SymbolConst : AST_SymbolVar : p.type == "FunctionExpression" ? p.id === M ? AST_SymbolLambda : AST_SymbolFunarg : p.type == "FunctionDeclaration" ? p.id === M ? AST_SymbolDefun : AST_SymbolFunarg : p.type == "CatchClause" ? AST_SymbolCatch : p.type == "BreakStatement" || p.type == "ContinueStatement" ? AST_LabelRef : AST_SymbolRef)({ - start: my_start_token(M), - end: my_end_token(M), - name: M.name - }); - } - }; - function From_Moz_Unary(M) { - return new (M.prefix ? AST_UnaryPrefix : AST_UnaryPostfix)({ - start: my_start_token(M), - end: my_end_token(M), - operator: M.operator, - expression: from_moz(M.argument) - }); - } - var ME_TO_MOZ = {}; - map("Node", AST_Node); - map("Program", AST_Toplevel, "body@body"); - map("Function", AST_Function, "id>name, params@argnames, body%body"); - map("EmptyStatement", AST_EmptyStatement); - map("BlockStatement", AST_BlockStatement, "body@body"); - map("ExpressionStatement", AST_SimpleStatement, "expression>body"); - map("IfStatement", AST_If, "test>condition, consequent>body, alternate>alternative"); - map("LabeledStatement", AST_LabeledStatement, "label>label, body>body"); - map("BreakStatement", AST_Break, "label>label"); - map("ContinueStatement", AST_Continue, "label>label"); - map("WithStatement", AST_With, "object>expression, body>body"); - map("SwitchStatement", AST_Switch, "discriminant>expression, cases@body"); - map("ReturnStatement", AST_Return, "argument>value"); - map("ThrowStatement", AST_Throw, "argument>value"); - map("WhileStatement", AST_While, "test>condition, body>body"); - map("DoWhileStatement", AST_Do, "test>condition, body>body"); - map("ForStatement", AST_For, "init>init, test>condition, update>step, body>body"); - map("ForInStatement", AST_ForIn, "left>init, right>object, body>body"); - map("DebuggerStatement", AST_Debugger); - map("FunctionDeclaration", AST_Defun, "id>name, params@argnames, body%body"); - map("VariableDeclaration", AST_Var, "declarations@definitions"); - map("VariableDeclarator", AST_VarDef, "id>name, init>value"); - map("ThisExpression", AST_This); - map("ArrayExpression", AST_Array, "elements@elements"); - map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body"); - map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right"); - map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right"); - map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right"); - map("ConditionalExpression", AST_Conditional, "test>condition, consequent>consequent, alternate>alternative"); - map("NewExpression", AST_New, "callee>expression, arguments@args"); - map("CallExpression", AST_Call, "callee>expression, arguments@args"); - function my_start_token(moznode) { - return new AST_Token({ - file: moznode.loc && moznode.loc.source, - line: moznode.loc && moznode.loc.start.line, - col: moznode.loc && moznode.loc.start.column, - pos: moznode.start, - endpos: moznode.start - }); - } - function my_end_token(moznode) { - return new AST_Token({ - file: moznode.loc && moznode.loc.source, - line: moznode.loc && moznode.loc.end.line, - col: moznode.loc && moznode.loc.end.column, - pos: moznode.end, - endpos: moznode.end - }); - } - function map(moztype, mytype, propmap) { - var moz_to_me = "function From_Moz_" + moztype + "(M){\n"; - moz_to_me += "return new mytype({\n" + "start: my_start_token(M),\n" + "end: my_end_token(M)"; - if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop) { - var m = /([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(prop); - if (!m) throw new Error("Can't understand property map: " + prop); - var moz = "M." + m[1], how = m[2], my = m[3]; - moz_to_me += ",\n" + my + ": "; - if (how == "@") { - moz_to_me += moz + ".map(from_moz)"; - } else if (how == ">") { - moz_to_me += "from_moz(" + moz + ")"; - } else if (how == "=") { - moz_to_me += moz; - } else if (how == "%") { - moz_to_me += "from_moz(" + moz + ").body"; - } else throw new Error("Can't understand operator in propmap: " + prop); - }); - moz_to_me += "\n})}"; - moz_to_me = new Function("mytype", "my_start_token", "my_end_token", "from_moz", "return(" + moz_to_me + ")")(mytype, my_start_token, my_end_token, from_moz); - return MOZ_TO_ME[moztype] = moz_to_me; - } - var FROM_MOZ_STACK = null; - function from_moz(node) { - FROM_MOZ_STACK.push(node); - var ret = node != null ? MOZ_TO_ME[node.type](node) : null; - FROM_MOZ_STACK.pop(); - return ret; - } - AST_Node.from_mozilla_ast = function(node) { - var save_stack = FROM_MOZ_STACK; - FROM_MOZ_STACK = []; - var ast = from_moz(node); - FROM_MOZ_STACK = save_stack; - return ast; - }; - })(); - exports["array_to_hash"] = array_to_hash; - exports["slice"] = slice; - exports["characters"] = characters; - exports["member"] = member; - exports["find_if"] = find_if; - exports["repeat_string"] = repeat_string; - exports["DefaultsError"] = DefaultsError; - exports["defaults"] = defaults; - exports["merge"] = merge; - exports["noop"] = noop; - exports["MAP"] = MAP; - exports["push_uniq"] = push_uniq; - exports["string_template"] = string_template; - exports["remove"] = remove; - exports["mergeSort"] = mergeSort; - exports["set_difference"] = set_difference; - exports["set_intersection"] = set_intersection; - exports["makePredicate"] = makePredicate; - exports["Dictionary"] = Dictionary; - exports["DEFNODE"] = DEFNODE; - exports["AST_Token"] = AST_Token; - exports["AST_Node"] = AST_Node; - exports["AST_Statement"] = AST_Statement; - exports["AST_Debugger"] = AST_Debugger; - exports["AST_Directive"] = AST_Directive; - exports["AST_SimpleStatement"] = AST_SimpleStatement; - exports["walk_body"] = walk_body; - exports["AST_Block"] = AST_Block; - exports["AST_BlockStatement"] = AST_BlockStatement; - exports["AST_EmptyStatement"] = AST_EmptyStatement; - exports["AST_StatementWithBody"] = AST_StatementWithBody; - exports["AST_LabeledStatement"] = AST_LabeledStatement; - exports["AST_DWLoop"] = AST_DWLoop; - exports["AST_Do"] = AST_Do; - exports["AST_While"] = AST_While; - exports["AST_For"] = AST_For; - exports["AST_ForIn"] = AST_ForIn; - exports["AST_With"] = AST_With; - exports["AST_Scope"] = AST_Scope; - exports["AST_Toplevel"] = AST_Toplevel; - exports["AST_Lambda"] = AST_Lambda; - exports["AST_Accessor"] = AST_Accessor; - exports["AST_Function"] = AST_Function; - exports["AST_Defun"] = AST_Defun; - exports["AST_Jump"] = AST_Jump; - exports["AST_Exit"] = AST_Exit; - exports["AST_Return"] = AST_Return; - exports["AST_Throw"] = AST_Throw; - exports["AST_LoopControl"] = AST_LoopControl; - exports["AST_Break"] = AST_Break; - exports["AST_Continue"] = AST_Continue; - exports["AST_If"] = AST_If; - exports["AST_Switch"] = AST_Switch; - exports["AST_SwitchBranch"] = AST_SwitchBranch; - exports["AST_Default"] = AST_Default; - exports["AST_Case"] = AST_Case; - exports["AST_Try"] = AST_Try; - exports["AST_Catch"] = AST_Catch; - exports["AST_Finally"] = AST_Finally; - exports["AST_Definitions"] = AST_Definitions; - exports["AST_Var"] = AST_Var; - exports["AST_Const"] = AST_Const; - exports["AST_VarDef"] = AST_VarDef; - exports["AST_Call"] = AST_Call; - exports["AST_New"] = AST_New; - exports["AST_Seq"] = AST_Seq; - exports["AST_PropAccess"] = AST_PropAccess; - exports["AST_Dot"] = AST_Dot; - exports["AST_Sub"] = AST_Sub; - exports["AST_Unary"] = AST_Unary; - exports["AST_UnaryPrefix"] = AST_UnaryPrefix; - exports["AST_UnaryPostfix"] = AST_UnaryPostfix; - exports["AST_Binary"] = AST_Binary; - exports["AST_Conditional"] = AST_Conditional; - exports["AST_Assign"] = AST_Assign; - exports["AST_Array"] = AST_Array; - exports["AST_Object"] = AST_Object; - exports["AST_ObjectProperty"] = AST_ObjectProperty; - exports["AST_ObjectKeyVal"] = AST_ObjectKeyVal; - exports["AST_ObjectSetter"] = AST_ObjectSetter; - exports["AST_ObjectGetter"] = AST_ObjectGetter; - exports["AST_Symbol"] = AST_Symbol; - exports["AST_SymbolAccessor"] = AST_SymbolAccessor; - exports["AST_SymbolDeclaration"] = AST_SymbolDeclaration; - exports["AST_SymbolVar"] = AST_SymbolVar; - exports["AST_SymbolConst"] = AST_SymbolConst; - exports["AST_SymbolFunarg"] = AST_SymbolFunarg; - exports["AST_SymbolDefun"] = AST_SymbolDefun; - exports["AST_SymbolLambda"] = AST_SymbolLambda; - exports["AST_SymbolCatch"] = AST_SymbolCatch; - exports["AST_Label"] = AST_Label; - exports["AST_SymbolRef"] = AST_SymbolRef; - exports["AST_LabelRef"] = AST_LabelRef; - exports["AST_This"] = AST_This; - exports["AST_Constant"] = AST_Constant; - exports["AST_String"] = AST_String; - exports["AST_Number"] = AST_Number; - exports["AST_RegExp"] = AST_RegExp; - exports["AST_Atom"] = AST_Atom; - exports["AST_Null"] = AST_Null; - exports["AST_NaN"] = AST_NaN; - exports["AST_Undefined"] = AST_Undefined; - exports["AST_Infinity"] = AST_Infinity; - exports["AST_Boolean"] = AST_Boolean; - exports["AST_False"] = AST_False; - exports["AST_True"] = AST_True; - exports["TreeWalker"] = TreeWalker; - exports["KEYWORDS"] = KEYWORDS; - exports["KEYWORDS_ATOM"] = KEYWORDS_ATOM; - exports["RESERVED_WORDS"] = RESERVED_WORDS; - exports["KEYWORDS_BEFORE_EXPRESSION"] = KEYWORDS_BEFORE_EXPRESSION; - exports["OPERATOR_CHARS"] = OPERATOR_CHARS; - exports["RE_HEX_NUMBER"] = RE_HEX_NUMBER; - exports["RE_OCT_NUMBER"] = RE_OCT_NUMBER; - exports["RE_DEC_NUMBER"] = RE_DEC_NUMBER; - exports["OPERATORS"] = OPERATORS; - exports["WHITESPACE_CHARS"] = WHITESPACE_CHARS; - exports["PUNC_BEFORE_EXPRESSION"] = PUNC_BEFORE_EXPRESSION; - exports["PUNC_CHARS"] = PUNC_CHARS; - exports["REGEXP_MODIFIERS"] = REGEXP_MODIFIERS; - exports["UNICODE"] = UNICODE; - exports["is_letter"] = is_letter; - exports["is_digit"] = is_digit; - exports["is_alphanumeric_char"] = is_alphanumeric_char; - exports["is_unicode_combining_mark"] = is_unicode_combining_mark; - exports["is_unicode_connector_punctuation"] = is_unicode_connector_punctuation; - exports["is_identifier"] = is_identifier; - exports["is_identifier_start"] = is_identifier_start; - exports["is_identifier_char"] = is_identifier_char; - exports["parse_js_number"] = parse_js_number; - exports["JS_Parse_Error"] = JS_Parse_Error; - exports["js_error"] = js_error; - exports["is_token"] = is_token; - exports["EX_EOF"] = EX_EOF; - exports["tokenizer"] = tokenizer; - exports["UNARY_PREFIX"] = UNARY_PREFIX; - exports["UNARY_POSTFIX"] = UNARY_POSTFIX; - exports["ASSIGNMENT"] = ASSIGNMENT; - exports["PRECEDENCE"] = PRECEDENCE; - exports["STATEMENTS_WITH_LABELS"] = STATEMENTS_WITH_LABELS; - exports["ATOMIC_START_TOKEN"] = ATOMIC_START_TOKEN; - exports["parse"] = parse; - exports["TreeTransformer"] = TreeTransformer; - exports["SymbolDef"] = SymbolDef; - exports["base54"] = base54; - exports["OutputStream"] = OutputStream; - exports["Compressor"] = Compressor; - exports["SourceMap"] = SourceMap; -})({}, function() { - return exports; -}()); - -var UglifyJS = exports.UglifyJS; - -UglifyJS.AST_Node.warn_function = function(txt) { - logger.error("uglifyjs2 WARN: " + txt); -}; - -//JRB: MODIFIED FROM UGLIFY SOURCE -//to take a name for the file, and then set toplevel.filename to be that name. -exports.minify = function(files, options, name) { - options = UglifyJS.defaults(options, { - outSourceMap : null, - sourceRoot : null, - inSourceMap : null, - fromString : false, - warnings : false, - }); - if (typeof files == "string") - files = [ files ]; - - // 1. parse - var toplevel = null; - files.forEach(function(file){ - var code = options.fromString - ? file - : fs.readFileSync(file, "utf8"); - toplevel = UglifyJS.parse(code, { - filename: options.fromString ? name : file, - toplevel: toplevel - }); - }); - - // 2. compress - toplevel.figure_out_scope(); - var sq = UglifyJS.Compressor({ - warnings: options.warnings, - }); - toplevel = toplevel.transform(sq); - - // 3. mangle - toplevel.figure_out_scope(); - toplevel.compute_char_frequency(); - toplevel.mangle_names(); - - // 4. output - var map = null; - var inMap = null; - if (options.inSourceMap) { - inMap = fs.readFileSync(options.inSourceMap, "utf8"); - } - if (options.outSourceMap) map = UglifyJS.SourceMap({ - file: options.outSourceMap, - orig: inMap, - root: options.sourceRoot - }); - var stream = UglifyJS.OutputStream({ source_map: map }); - toplevel.print(stream); - return { - code : stream + "", - map : map + "" - }; -}; - -// exports.describe_ast = function() { -// function doitem(ctor) { -// var sub = {}; -// ctor.SUBCLASSES.forEach(function(ctor){ -// sub[ctor.TYPE] = doitem(ctor); -// }); -// var ret = {}; -// if (ctor.SELF_PROPS.length > 0) ret.props = ctor.SELF_PROPS; -// if (ctor.SUBCLASSES.length > 0) ret.sub = sub; -// return ret; -// } -// return doitem(UglifyJS.AST_Node).sub; -// } - -exports.describe_ast = function() { - var out = UglifyJS.OutputStream({ beautify: true }); - function doitem(ctor) { - out.print("AST_" + ctor.TYPE); - var props = ctor.SELF_PROPS.filter(function(prop){ - return !/^\$/.test(prop); - }); - if (props.length > 0) { - out.space(); - out.with_parens(function(){ - props.forEach(function(prop, i){ - if (i) out.space(); - out.print(prop); - }); - }); - } - if (ctor.documentation) { - out.space(); - out.print_string(ctor.documentation); - } - if (ctor.SUBCLASSES.length > 0) { - out.space(); - out.with_block(function(){ - ctor.SUBCLASSES.forEach(function(ctor, i){ - out.indent(); - doitem(ctor); - out.newline(); - }); - }); - } - }; - doitem(UglifyJS.AST_Node); - return out + ""; -}; - -}); -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: true */ -/*global define: false */ - -define('parse', ['./esprima'], function (esprima) { - 'use strict'; - - var ostring = Object.prototype.toString, - //This string is saved off because JSLint complains - //about obj.arguments use, as 'reserved word' - argPropName = 'arguments'; - - //From an esprima example for traversing its ast. - function traverse(object, visitor) { - var key, child; - - if (!object) { - return; - } - - if (visitor.call(null, object) === false) { - return false; - } - for (key in object) { - if (object.hasOwnProperty(key)) { - child = object[key]; - if (typeof child === 'object' && child !== null) { - if (traverse(child, visitor) === false) { - return false; - } - } - } - } - } - - - /** - * Pulls out dependencies from an array literal with just string members. - * If string literals, will just return those string values in an array, - * skipping other items in the array. - * - * @param {Node} node an AST node. - * - * @returns {Array} an array of strings. - * If null is returned, then it means the input node was not a valid - * dependency. - */ - function getValidDeps(node) { - if (!node || node.type !== 'ArrayExpression' || !node.elements) { - return; - } - - var deps = []; - - node.elements.some(function (elem) { - if (elem.type === 'Literal') { - deps.push(elem.value); - } - }); - - return deps.length ? deps : undefined; - } - - /** - * Main parse function. Returns a string of any valid require or - * define/require.def calls as part of one JavaScript source string. - * @param {String} moduleName the module name that represents this file. - * It is used to create a default define if there is not one already for the - * file. This allows properly tracing dependencies for builds. Otherwise, if - * the file just has a require() call, the file dependencies will not be - * properly reflected: the file will come before its dependencies. - * @param {String} moduleName - * @param {String} fileName - * @param {String} fileContents - * @param {Object} options optional options. insertNeedsDefine: true will - * add calls to require.needsDefine() if appropriate. - * @returns {String} JS source string or null, if no require or - * define/require.def calls are found. - */ - function parse(moduleName, fileName, fileContents, options) { - options = options || {}; - - //Set up source input - var i, moduleCall, depString, - moduleDeps = [], - result = '', - moduleList = [], - needsDefine = true, - astRoot = esprima.parse(fileContents); - - parse.recurse(astRoot, function (callName, config, name, deps) { - if (!deps) { - deps = []; - } - - if (callName === 'define' && (!name || name === moduleName)) { - needsDefine = false; - } - - if (!name) { - //If there is no module name, the dependencies are for - //this file/default module name. - moduleDeps = moduleDeps.concat(deps); - } else { - moduleList.push({ - name: name, - deps: deps - }); - } - - //If define was found, no need to dive deeper, unless - //the config explicitly wants to dig deeper. - return !!options.findNestedDependencies; - }, options); - - if (options.insertNeedsDefine && needsDefine) { - result += 'require.needsDefine("' + moduleName + '");'; - } - - if (moduleDeps.length || moduleList.length) { - for (i = 0; i < moduleList.length; i++) { - moduleCall = moduleList[i]; - if (result) { - result += '\n'; - } - - //If this is the main module for this file, combine any - //"anonymous" dependencies (could come from a nested require - //call) with this module. - if (moduleCall.name === moduleName) { - moduleCall.deps = moduleCall.deps.concat(moduleDeps); - moduleDeps = []; - } - - depString = moduleCall.deps.length ? '["' + - moduleCall.deps.join('","') + '"]' : '[]'; - result += 'define("' + moduleCall.name + '",' + - depString + ');'; - } - if (moduleDeps.length) { - if (result) { - result += '\n'; - } - depString = moduleDeps.length ? '["' + moduleDeps.join('","') + - '"]' : '[]'; - result += 'define("' + moduleName + '",' + depString + ');'; - } - } - - return result || null; - } - - /** - * Handles parsing a file recursively for require calls. - * @param {Array} parentNode the AST node to start with. - * @param {Function} onMatch function to call on a parse match. - * @param {Object} [options] This is normally the build config options if - * it is passed. - */ - parse.recurse = function (object, onMatch, options) { - //Like traverse, but skips if branches that would not be processed - //after has application that results in tests of true or false boolean - //literal values. - var key, child, - hasHas = options && options.has; - - if (!object) { - return; - } - - //If has replacement has resulted in if(true){} or if(false){}, take - //the appropriate branch and skip the other one. - if (hasHas && object.type === 'IfStatement' && object.test.type && - object.test.type === 'Literal') { - if (object.test.value) { - //Take the if branch - this.recurse(object.consequent, onMatch, options); - } else { - //Take the else branch - this.recurse(object.alternate, onMatch, options); - } - } else { - if (this.parseNode(object, onMatch) === false) { - return; - } - for (key in object) { - if (object.hasOwnProperty(key)) { - child = object[key]; - if (typeof child === 'object' && child !== null) { - this.recurse(child, onMatch, options); - } - } - } - } - }; - - /** - * Determines if the file defines the require/define module API. - * Specifically, it looks for the `define.amd = ` expression. - * @param {String} fileName - * @param {String} fileContents - * @returns {Boolean} - */ - parse.definesRequire = function (fileName, fileContents) { - var found = false; - - traverse(esprima.parse(fileContents), function (node) { - if (parse.hasDefineAmd(node)) { - found = true; - - //Stop traversal - return false; - } - }); - - return found; - }; - - /** - * Finds require("") calls inside a CommonJS anonymous module wrapped in a - * define(function(require, exports, module){}) wrapper. These dependencies - * will be added to a modified define() call that lists the dependencies - * on the outside of the function. - * @param {String} fileName - * @param {String} fileContents - * @returns {Array} an array of module names that are dependencies. Always - * returns an array, but could be of length zero. - */ - parse.getAnonDeps = function (fileName, fileContents) { - var astRoot = esprima.parse(fileContents), - defFunc = this.findAnonDefineFactory(astRoot); - - return parse.getAnonDepsFromNode(defFunc); - }; - - /** - * Finds require("") calls inside a CommonJS anonymous module wrapped - * in a define function, given an AST node for the definition function. - * @param {Node} node the AST node for the definition function. - * @returns {Array} and array of dependency names. Can be of zero length. - */ - parse.getAnonDepsFromNode = function (node) { - var deps = [], - funcArgLength; - - if (node) { - this.findRequireDepNames(node, deps); - - //If no deps, still add the standard CommonJS require, exports, - //module, in that order, to the deps, but only if specified as - //function args. In particular, if exports is used, it is favored - //over the return value of the function, so only add it if asked. - funcArgLength = node.params && node.params.length; - if (funcArgLength) { - deps = (funcArgLength > 1 ? ["require", "exports", "module"] : - ["require"]).concat(deps); - } - } - return deps; - }; - - /** - * Finds the function in define(function (require, exports, module){}); - * @param {Array} node - * @returns {Boolean} - */ - parse.findAnonDefineFactory = function (node) { - var match; - - traverse(node, function (node) { - var arg0, arg1; - - if (node && node.type === 'CallExpression' && - node.callee && node.callee.type === 'Identifier' && - node.callee.name === 'define' && node[argPropName]) { - - //Just the factory function passed to define - arg0 = node[argPropName][0]; - if (arg0 && arg0.type === 'FunctionExpression') { - match = arg0; - return false; - } - - //A string literal module ID followed by the factory function. - arg1 = node[argPropName][1]; - if (arg0.type === 'Literal' && - arg1 && arg1.type === 'FunctionExpression') { - match = arg1; - return false; - } - } - }); - - return match; - }; - - /** - * Finds any config that is passed to requirejs. That includes calls to - * require/requirejs.config(), as well as require({}, ...) and - * requirejs({}, ...) - * @param {String} fileName - * @param {String} fileContents - * - * @returns {Object} a config object. Will be null if no config. - * Can throw an error if the config in the file cannot be evaluated in - * a build context to valid JavaScript. - */ - parse.findConfig = function (fileName, fileContents) { - /*jslint evil: true */ - var jsConfig, - foundConfig = null, - astRoot = esprima.parse(fileContents, { - range: true - }); - - traverse(astRoot, function (node) { - var arg, - c = node && node.callee, - requireType = parse.hasRequire(node); - - if (requireType && (requireType === 'require' || - requireType === 'requirejs' || - requireType === 'requireConfig' || - requireType === 'requirejsConfig')) { - - arg = node[argPropName] && node[argPropName][0]; - - if (arg && arg.type === 'ObjectExpression') { - jsConfig = parse.nodeToString(fileContents, arg); - return false; - } - } else { - arg = parse.getRequireObjectLiteral(node); - if (arg) { - jsConfig = parse.nodeToString(fileContents, arg); - return false; - } - } - }); - - if (jsConfig) { - foundConfig = eval('(' + jsConfig + ')'); - } - - return foundConfig; - }; - - /** Returns the node for the object literal assigned to require/requirejs, - * for holding a declarative config. - */ - parse.getRequireObjectLiteral = function (node) { - if (node.id && node.id.type === 'Identifier' && - (node.id.name === 'require' || node.id.name === 'requirejs') && - node.init && node.init.type === 'ObjectExpression') { - return node.init; - } - }; - - /** - * Finds all dependencies specified in dependency arrays and inside - * simplified commonjs wrappers. - * @param {String} fileName - * @param {String} fileContents - * - * @returns {Array} an array of dependency strings. The dependencies - * have not been normalized, they may be relative IDs. - */ - parse.findDependencies = function (fileName, fileContents, options) { - var dependencies = [], - astRoot = esprima.parse(fileContents); - - parse.recurse(astRoot, function (callName, config, name, deps) { - if (deps) { - dependencies = dependencies.concat(deps); - } - }, options); - - return dependencies; - }; - - /** - * Finds only CJS dependencies, ones that are the form - * require('stringLiteral') - */ - parse.findCjsDependencies = function (fileName, fileContents, options) { - var dependencies = []; - - traverse(esprima.parse(fileContents), function (node) { - var arg; - - if (node && node.type === 'CallExpression' && node.callee && - node.callee.type === 'Identifier' && - node.callee.name === 'require' && node[argPropName] && - node[argPropName].length === 1) { - arg = node[argPropName][0]; - if (arg.type === 'Literal') { - dependencies.push(arg.value); - } - } - }); - - return dependencies; - }; - - //function define() {} - parse.hasDefDefine = function (node) { - return node.type === 'FunctionDeclaration' && node.id && - node.id.type === 'Identifier' && node.id.name === 'define'; - }; - - //define.amd = ... - parse.hasDefineAmd = function (node) { - return node && node.type === 'AssignmentExpression' && - node.left && node.left.type === 'MemberExpression' && - node.left.object && node.left.object.name === 'define' && - node.left.property && node.left.property.name === 'amd'; - }; - - //require(), requirejs(), require.config() and requirejs.config() - parse.hasRequire = function (node) { - var callName, - c = node && node.callee; - - if (node && node.type === 'CallExpression' && c) { - if (c.type === 'Identifier' && - (c.name === 'require' || - c.name === 'requirejs')) { - //A require/requirejs({}, ...) call - callName = c.name; - } else if (c.type === 'MemberExpression' && - c.object && - c.object.type === 'Identifier' && - (c.object.name === 'require' || - c.object.name === 'requirejs') && - c.property && c.property.name === 'config') { - // require/requirejs.config({}) call - callName = c.object.name + 'Config'; - } - } - - return callName; - }; - - //define() - parse.hasDefine = function (node) { - return node && node.type === 'CallExpression' && node.callee && - node.callee.type === 'Identifier' && - node.callee.name === 'define'; - }; - - /** - * Determines if define(), require({}|[]) or requirejs was called in the - * file. Also finds out if define() is declared and if define.amd is called. - */ - parse.usesAmdOrRequireJs = function (fileName, fileContents, options) { - var uses; - - traverse(esprima.parse(fileContents), function (node) { - var type, callName, arg; - - if (parse.hasDefDefine(node)) { - //function define() {} - type = 'declaresDefine'; - } else if (parse.hasDefineAmd(node)) { - type = 'defineAmd'; - } else { - callName = parse.hasRequire(node); - if (callName) { - arg = node[argPropName] && node[argPropName][0]; - if (arg && (arg.type === 'ObjectExpression' || - arg.type === 'ArrayExpression')) { - type = callName; - } - } else if (parse.hasDefine(node)) { - type = 'define'; - } - } - - if (type) { - if (!uses) { - uses = {}; - } - uses[type] = true; - } - }); - - return uses; - }; - - /** - * Determines if require(''), exports.x =, module.exports =, - * __dirname, __filename are used. So, not strictly traditional CommonJS, - * also checks for Node variants. - */ - parse.usesCommonJs = function (fileName, fileContents, options) { - var uses = null, - assignsExports = false; - - - traverse(esprima.parse(fileContents), function (node) { - var type, - exp = node.expression; - - if (node.type === 'Identifier' && - (node.name === '__dirname' || node.name === '__filename')) { - type = node.name.substring(2); - } else if (node.type === 'VariableDeclarator' && node.id && - node.id.type === 'Identifier' && - node.id.name === 'exports') { - //Hmm, a variable assignment for exports, so does not use cjs - //exports. - type = 'varExports'; - } else if (exp && exp.type === 'AssignmentExpression' && exp.left && - exp.left.type === 'MemberExpression' && exp.left.object) { - if (exp.left.object.name === 'module' && exp.left.property && - exp.left.property.name === 'exports') { - type = 'moduleExports'; - } else if (exp.left.object.name === 'exports' && - exp.left.property) { - type = 'exports'; - } - - } else if (node && node.type === 'CallExpression' && node.callee && - node.callee.type === 'Identifier' && - node.callee.name === 'require' && node[argPropName] && - node[argPropName].length === 1 && - node[argPropName][0].type === 'Literal') { - type = 'require'; - } - - if (type) { - if (type === 'varExports') { - assignsExports = true; - } else if (type !== 'exports' || !assignsExports) { - if (!uses) { - uses = {}; - } - uses[type] = true; - } - } - }); - - return uses; - }; - - - parse.findRequireDepNames = function (node, deps) { - var moduleName, i, n, call, args; - - traverse(node, function (node) { - var arg; - - if (node && node.type === 'CallExpression' && node.callee && - node.callee.type === 'Identifier' && - node.callee.name === 'require' && - node[argPropName] && node[argPropName].length === 1) { - - arg = node[argPropName][0]; - if (arg.type === 'Literal') { - deps.push(arg.value); - } - } - }); - }; - - /** - * Determines if a specific node is a valid require or define/require.def - * call. - * @param {Array} node - * @param {Function} onMatch a function to call when a match is found. - * It is passed the match name, and the config, name, deps possible args. - * The config, name and deps args are not normalized. - * - * @returns {String} a JS source string with the valid require/define call. - * Otherwise null. - */ - parse.parseNode = function (node, onMatch) { - var name, deps, cjsDeps, arg, factory, - args = node && node[argPropName], - callName = parse.hasRequire(node); - - if (callName === 'require' || callName === 'requirejs') { - //A plain require/requirejs call - arg = node[argPropName] && node[argPropName][0]; - if (arg.type !== 'ArrayExpression') { - if (arg.type === 'ObjectExpression') { - //A config call, try the second arg. - arg = node[argPropName][1]; - } - } - - deps = getValidDeps(arg); - if (!deps) { - return; - } - - return onMatch("require", null, null, deps); - } else if (parse.hasDefine(node) && args && args.length) { - name = args[0]; - deps = args[1]; - factory = args[2]; - - if (name.type === 'ArrayExpression') { - //No name, adjust args - factory = deps; - deps = name; - name = null; - } else if (name.type === 'FunctionExpression') { - //Just the factory, no name or deps - factory = name; - name = deps = null; - } else if (name.type !== 'Literal') { - //An object literal, just null out - name = deps = factory = null; - } - - if (name && name.type === 'Literal' && deps) { - if (deps.type === 'FunctionExpression') { - //deps is the factory - factory = deps; - deps = null; - } else if (deps.type === 'ObjectExpression') { - //deps is object literal, null out - deps = factory = null; - } - } - - if (deps && deps.type === 'ArrayExpression') { - deps = getValidDeps(deps); - } else if (factory && factory.type === 'FunctionExpression') { - //If no deps and a factory function, could be a commonjs sugar - //wrapper, scan the function for dependencies. - cjsDeps = parse.getAnonDepsFromNode(factory); - if (cjsDeps.length) { - deps = cjsDeps; - } - } else if (deps || factory) { - //Does not match the shape of an AMD call. - return; - } - - //Just save off the name as a string instead of an AST object. - if (name && name.type === 'Literal') { - name = name.value; - } - - return onMatch("define", null, name, deps); - } - }; - - /** - * Converts an AST node into a JS source string by extracting - * the node's location from the given contents string. Assumes - * esprima.parse() with ranges was done. - * @param {String} contents - * @param {Object} node - * @returns {String} a JS source string. - */ - parse.nodeToString = function (contents, node) { - var range = node.range; - return contents.substring(range[0], range[1]); - }; - - /** - * Extracts license comments from JS text. - * @param {String} fileName - * @param {String} contents - * @returns {String} a string of license comments. - */ - parse.getLicenseComments = function (fileName, contents) { - var commentNode, refNode, subNode, value, i, j, - ast = esprima.parse(contents, { - comment: true - }), - result = '', - existsMap = {}, - lineEnd = contents.indexOf('\r') === -1 ? '\n' : '\r\n'; - - if (ast.comments) { - for (i = 0; i < ast.comments.length; i++) { - commentNode = ast.comments[i]; - - if (commentNode.type === 'Line') { - value = '//' + commentNode.value + lineEnd; - refNode = commentNode; - - if (i + 1 >= ast.comments.length) { - value += lineEnd; - } else { - //Look for immediately adjacent single line comments - //since it could from a multiple line comment made out - //of single line comments. Like this comment. - for (j = i + 1; j < ast.comments.length; j++) { - subNode = ast.comments[j]; - if (subNode.type === 'Line' && - subNode.range[0] === refNode.range[1]) { - //Adjacent single line comment. Collect it. - value += '//' + subNode.value + lineEnd; - refNode = subNode; - } else { - //No more single line comment blocks. Break out - //and continue outer looping. - break; - } - } - value += lineEnd; - i = j - 1; - } - } else { - value = '/*' + commentNode.value + '*/' + lineEnd + lineEnd; - } - - if (!existsMap[value] && (value.indexOf('license') !== -1 || - (commentNode.type === 'Block' && - value.indexOf('/*!') === 0) || - value.indexOf('opyright') !== -1 || - value.indexOf('(c)') !== -1)) { - - result += value; - existsMap[value] = true; - } - - } - } - - return result; - }; - - return parse; -}); -/** - * @license Copyright (c) 2012, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint */ -/*global define */ - -define('transform', [ './esprima', './parse', 'logger', 'lang'], function (esprima, parse, logger, lang) { - 'use strict'; - var transform; - - return (transform = { - toTransport: function (namespace, moduleName, path, contents, onFound, options) { - options = options || {}; - - var tokens, foundAnon, deps, lastRange, parenCount, inDefine, - scanCount = 0, - scanReset = false, - defineRanges = [], - contentInsertion = '', - depString = ''; - - try { - tokens = esprima.parse(contents, { - tokens: true, - range: true - }).tokens; - } catch (e) { - logger.trace('toTransport skipping ' + path + ': ' + - e.toString()); - return contents; - } - - //Find the define calls and their position in the files. - tokens.forEach(function (token, i) { - var prev, prev2, next, next2, next3, next4, next5, - needsId, depAction, nameCommaRange, foundId, - sourceUrlData, range, - namespaceExists = false; - - if (inDefine && token.type === 'Punctuator') { - //Looking for the end of the define call. - if (token.value === '(') { - parenCount += 1; - } else if (token.value === ')') { - parenCount -= 1; - } - - if (parenCount === 0) { - inDefine = false; - - //Found the end of the define call. Hold onto - //it. - lastRange = defineRanges.length && - defineRanges[defineRanges.length - 1]; - if (lastRange) { - lastRange.defineEndRange = token.range; - } - } - } - - if (token.type === 'Identifier' && token.value === 'define') { - //Possible match. Do not want something.define calls - //though, and only defines follow by a paren - prev = tokens[i - 1]; - next = tokens[i + 1]; - - if (prev && prev.type === 'Punctuator' && - prev.value === '.') { - //a define on a sub-object, not a top level - //define() call. If the sub object is the - //namespace, then it is ok. - prev2 = tokens[i - 2]; - if (!prev2) { - return; - } - - //If the prev2 does not match namespace, then bail. - if (!namespace || prev2.type !== 'Identifier' || - prev2.value !== namespace) { - return; - } else if (namespace) { - namespaceExists = true; - } - } - - if (!next || next.type !== 'Punctuator' || - next.value !== '(') { - //Not a define() function call. Bail. - return; - } - - next2 = tokens[i + 2]; - if (!next2) { - return; - } - - //Figure out if this needs a named define call. - if (next2.type === 'Punctuator' && next2.value === '[') { - //Dependency array - needsId = true; - depAction = 'skip'; - } else if (next2.type === 'Punctuator' && - next2.value === '{') { - //Object literal - needsId = true; - depAction = 'skip'; - } else if (next2.type === 'Keyword' && - next2.value === 'function') { - //function - needsId = true; - depAction = 'scan'; - } else if (next2.type === 'String') { - //Named module - needsId = false; - - //The value includes the quotes around the string, - //so remove them. - foundId = next2.value.substring(1, - next2.value.length - 1); - - //assumed it does not need dependencies injected - - //If next argument is a function it means we need - //dependency scanning. - next3 = tokens[i + 3]; - next4 = tokens[i + 4]; - if (!next3 || !next4) { - return; - } - - if (next3.type === 'Punctuator' && - next3.value === ',' && - next4.type === 'Keyword' && - next4.value === 'function') { - depAction = 'scan'; - nameCommaRange = next3.range; - } else { - depAction = 'skip'; - } - } else if (next2.type === 'Identifier') { - //May be the define(factory); type. - next3 = tokens[i + 3]; - if (!next3) { - return; - } - if (next3.type === 'Punctuator' && - next3.value === ')') { - needsId = true; - depAction = 'empty'; - } else { - return; - } - } else if (next2.type === 'Numeric') { - //May be the define(12345); type. - next3 = tokens[i + 3]; - if (!next3) { - return; - } - if (next3.type === 'Punctuator' && - next3.value === ')') { - needsId = true; - depAction = 'skip'; - } else { - return; - } - } else if (next2.type === 'Punctuator' && - next2.value === '-') { - //May be the define(-12345); type. - next3 = tokens[i + 3]; - if (!next3) { - return; - } - if (next3.type === 'Numeric') { - next4 = tokens[i + 4]; - if (!next4) { - return; - } - if (next4.type === 'Punctuator' && - next4.value === ')') { - needsId = true; - depAction = 'skip'; - } else { - return; - } - } else { - return; - } - } else if (next2.type === 'Keyword' && next2.value === 'this') { - //May be the define(this.key); type - next3 = tokens[i + 3]; - next4 = tokens[i + 4]; - next5 = tokens[i + 5]; - if (!next3 || !next4 || !next5) { - return; - } - - if (next3.type === 'Punctuator' && next3.value === '.' && - next4.type === 'Identifier' && - next5.type === 'Punctuator' && next5.value === ')') { - needsId = true; - depAction = 'empty'; - } else { - return; - } - } else { - //Not a match, skip it. - return; - } - - //A valid define call. Need to find the end, start counting - //parentheses. - inDefine = true; - parenCount = 0; - - range = { - foundId: foundId, - needsId: needsId, - depAction: depAction, - namespaceExists: namespaceExists, - defineRange: token.range, - parenRange: next.range, - nameCommaRange: nameCommaRange, - sourceUrlData: sourceUrlData - }; - - //Only transform ones that do not have IDs. If it has an - //ID but no dependency array, assume it is something like - //a phonegap implementation, that has its own internal - //define that cannot handle dependency array constructs, - //and if it is a named module, then it means it has been - //set for transport form. - if (range.needsId) { - if (foundAnon) { - throw new Error(path + - ' has two many anonymous modules in it.'); - } else { - foundAnon = range; - defineRanges.push(range); - } - } else if (depAction === 'scan') { - scanCount += 1; - if (scanCount > 1) { - //Just go back to an array that just has the - //anon one, since this is an already optimized - //file like the phonegap one. - if (!scanReset) { - defineRanges = foundAnon ? [foundAnon] : []; - scanReset = true; - } - } else { - defineRanges.push(range); - } - } - } - }); - - if (!defineRanges.length) { - return contents; - } - - //Reverse the matches, need to start from the bottom of - //the file to modify it, so that the ranges are still true - //further up. - defineRanges.reverse(); - - defineRanges.forEach(function (info) { - //Do the modifications "backwards", in other words, start with the - //one that is farthest down and work up, so that the ranges in the - //defineRanges still apply. So that means deps, id, then namespace. - - if (info.needsId && moduleName) { - contentInsertion += "'" + moduleName + "',"; - } - - if (info.depAction === 'scan') { - deps = parse.getAnonDeps(path, contents.substring(info.defineRange[0], info.defineEndRange[1])); - - if (deps.length) { - depString = '[' + deps.map(function (dep) { - return "'" + dep + "'"; - }) + ']'; - } else { - depString = '[]'; - } - depString += ','; - - if (info.nameCommaRange) { - //Already have a named module, need to insert the - //dependencies after the name. - contents = contents.substring(0, info.nameCommaRange[1]) + - depString + - contents.substring(info.nameCommaRange[1], - contents.length); - } else { - contentInsertion += depString; - } - } - - if (contentInsertion) { - contents = contents.substring(0, info.parenRange[1]) + - contentInsertion + - contents.substring(info.parenRange[1], - contents.length); - } - - //Do namespace last so that ui does not mess upthe parenRange - //used above. - if (namespace && !info.namespaceExists) { - contents = contents.substring(0, info.defineRange[0]) + - namespace + '.' + - contents.substring(info.defineRange[0], - contents.length); - } - - //Notify any listener for the found info - if (onFound) { - onFound(info); - } - }); - - if (options.useSourceUrl) { - contents = 'eval("' + lang.jsEscape(contents) + - '\\n//@ sourceURL=' + (path.indexOf('/') === 0 ? '' : '/') + - path + - '");\n'; - } - - return contents; - } - }); -});/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint regexp: true, plusplus: true */ -/*global define: false */ - -define('pragma', ['parse', 'logger'], function (parse, logger) { - 'use strict'; - function Temp() {} - - function create(obj, mixin) { - Temp.prototype = obj; - var temp = new Temp(), prop; - - //Avoid any extra memory hanging around - Temp.prototype = null; - - if (mixin) { - for (prop in mixin) { - if (mixin.hasOwnProperty(prop) && !temp.hasOwnProperty(prop)) { - temp[prop] = mixin[prop]; - } - } - } - - return temp; // Object - } - - var pragma = { - conditionalRegExp: /(exclude|include)Start\s*\(\s*["'](\w+)["']\s*,(.*)\)/, - useStrictRegExp: /['"]use strict['"];/g, - hasRegExp: /has\s*\(\s*['"]([^'"]+)['"]\s*\)/g, - nsRegExp: /(^|[^\.])(requirejs|require|define)(\.config)?\s*\(/g, - nsWrapRegExp: /\/\*requirejs namespace: true \*\//, - apiDefRegExp: /var requirejs, require, define;/, - defineCheckRegExp: /typeof\s+define\s*===\s*["']function["']\s*&&\s*define\s*\.\s*amd/g, - defineTypeFirstCheckRegExp: /\s*["']function["']\s*===\s*typeof\s+define\s*&&\s*define\s*\.\s*amd/g, - defineJQueryRegExp: /typeof\s+define\s*===\s*["']function["']\s*&&\s*define\s*\.\s*amd\s*&&\s*define\s*\.\s*amd\s*\.\s*jQuery/g, - defineHasRegExp: /typeof\s+define\s*==(=)?\s*['"]function['"]\s*&&\s*typeof\s+define\.amd\s*==(=)?\s*['"]object['"]\s*&&\s*define\.amd/g, - defineTernaryRegExp: /typeof\s+define\s*===\s*['"]function["']\s*&&\s*define\s*\.\s*amd\s*\?\s*define/, - amdefineRegExp: /if\s*\(\s*typeof define\s*\!==\s*'function'\s*\)\s*\{\s*[^\{\}]+amdefine[^\{\}]+\}/g, - - removeStrict: function (contents, config) { - return config.useStrict ? contents : contents.replace(pragma.useStrictRegExp, ''); - }, - - namespace: function (fileContents, ns, onLifecycleName) { - if (ns) { - //Namespace require/define calls - fileContents = fileContents.replace(pragma.nsRegExp, '$1' + ns + '.$2$3('); - - //Namespace define ternary use: - fileContents = fileContents.replace(pragma.defineTernaryRegExp, - "typeof " + ns + ".define === 'function' && " + ns + ".define.amd ? " + ns + ".define"); - - //Namespace define jquery use: - fileContents = fileContents.replace(pragma.defineJQueryRegExp, - "typeof " + ns + ".define === 'function' && " + ns + ".define.amd && " + ns + ".define.amd.jQuery"); - - //Namespace has.js define use: - fileContents = fileContents.replace(pragma.defineHasRegExp, - "typeof " + ns + ".define === 'function' && typeof " + ns + ".define.amd === 'object' && " + ns + ".define.amd"); - - //Namespace define checks. - //Do these ones last, since they are a subset of the more specific - //checks above. - fileContents = fileContents.replace(pragma.defineCheckRegExp, - "typeof " + ns + ".define === 'function' && " + ns + ".define.amd"); - fileContents = fileContents.replace(pragma.defineTypeFirstCheckRegExp, - "'function' === typeof " + ns + ".define && " + ns + ".define.amd"); - - //Check for require.js with the require/define definitions - if (pragma.apiDefRegExp.test(fileContents) && - fileContents.indexOf("if (typeof " + ns + " === 'undefined')") === -1) { - //Wrap the file contents in a typeof check, and a function - //to contain the API globals. - fileContents = "var " + ns + ";(function () { if (typeof " + - ns + " === 'undefined') {\n" + - ns + ' = {};\n' + - fileContents + - "\n" + - ns + ".requirejs = requirejs;" + - ns + ".require = require;" + - ns + ".define = define;\n" + - "}\n}());"; - } - - //Finally, if the file wants a special wrapper because it ties - //in to the requirejs internals in a way that would not fit - //the above matches, do that. Look for /*requirejs namespace: true*/ - if (pragma.nsWrapRegExp.test(fileContents)) { - //Remove the pragma. - fileContents = fileContents.replace(pragma.nsWrapRegExp, ''); - - //Alter the contents. - fileContents = '(function () {\n' + - 'var require = ' + ns + '.require,' + - 'requirejs = ' + ns + '.requirejs,' + - 'define = ' + ns + '.define;\n' + - fileContents + - '\n}());'; - } - } - - return fileContents; - }, - - /** - * processes the fileContents for some //>> conditional statements - */ - process: function (fileName, fileContents, config, onLifecycleName, pluginCollector) { - /*jslint evil: true */ - var foundIndex = -1, startIndex = 0, lineEndIndex, conditionLine, - matches, type, marker, condition, isTrue, endRegExp, endMatches, - endMarkerIndex, shouldInclude, startLength, lifecycleHas, deps, - i, dep, moduleName, collectorMod, - lifecyclePragmas, pragmas = config.pragmas, hasConfig = config.has, - //Legacy arg defined to help in dojo conversion script. Remove later - //when dojo no longer needs conversion: - kwArgs = pragmas; - - //Mix in a specific lifecycle scoped object, to allow targeting - //some pragmas/has tests to only when files are saved, or at different - //lifecycle events. Do not bother with kwArgs in this section, since - //the old dojo kwArgs were for all points in the build lifecycle. - if (onLifecycleName) { - lifecyclePragmas = config['pragmas' + onLifecycleName]; - lifecycleHas = config['has' + onLifecycleName]; - - if (lifecyclePragmas) { - pragmas = create(pragmas || {}, lifecyclePragmas); - } - - if (lifecycleHas) { - hasConfig = create(hasConfig || {}, lifecycleHas); - } - } - - //Replace has references if desired - if (hasConfig) { - fileContents = fileContents.replace(pragma.hasRegExp, function (match, test) { - if (hasConfig.hasOwnProperty(test)) { - return !!hasConfig[test]; - } - return match; - }); - } - - if (!config.skipPragmas) { - - while ((foundIndex = fileContents.indexOf("//>>", startIndex)) !== -1) { - //Found a conditional. Get the conditional line. - lineEndIndex = fileContents.indexOf("\n", foundIndex); - if (lineEndIndex === -1) { - lineEndIndex = fileContents.length - 1; - } - - //Increment startIndex past the line so the next conditional search can be done. - startIndex = lineEndIndex + 1; - - //Break apart the conditional. - conditionLine = fileContents.substring(foundIndex, lineEndIndex + 1); - matches = conditionLine.match(pragma.conditionalRegExp); - if (matches) { - type = matches[1]; - marker = matches[2]; - condition = matches[3]; - isTrue = false; - //See if the condition is true. - try { - isTrue = !!eval("(" + condition + ")"); - } catch (e) { - throw "Error in file: " + - fileName + - ". Conditional comment: " + - conditionLine + - " failed with this error: " + e; - } - - //Find the endpoint marker. - endRegExp = new RegExp('\\/\\/\\>\\>\\s*' + type + 'End\\(\\s*[\'"]' + marker + '[\'"]\\s*\\)', "g"); - endMatches = endRegExp.exec(fileContents.substring(startIndex, fileContents.length)); - if (endMatches) { - endMarkerIndex = startIndex + endRegExp.lastIndex - endMatches[0].length; - - //Find the next line return based on the match position. - lineEndIndex = fileContents.indexOf("\n", endMarkerIndex); - if (lineEndIndex === -1) { - lineEndIndex = fileContents.length - 1; - } - - //Should we include the segment? - shouldInclude = ((type === "exclude" && !isTrue) || (type === "include" && isTrue)); - - //Remove the conditional comments, and optionally remove the content inside - //the conditional comments. - startLength = startIndex - foundIndex; - fileContents = fileContents.substring(0, foundIndex) + - (shouldInclude ? fileContents.substring(startIndex, endMarkerIndex) : "") + - fileContents.substring(lineEndIndex + 1, fileContents.length); - - //Move startIndex to foundIndex, since that is the new position in the file - //where we need to look for more conditionals in the next while loop pass. - startIndex = foundIndex; - } else { - throw "Error in file: " + - fileName + - ". Cannot find end marker for conditional comment: " + - conditionLine; - - } - } - } - } - - //If need to find all plugin resources to optimize, do that now, - //before namespacing, since the namespacing will change the API - //names. - //If there is a plugin collector, scan the file for plugin resources. - if (config.optimizeAllPluginResources && pluginCollector) { - try { - deps = parse.findDependencies(fileName, fileContents); - if (deps.length) { - for (i = 0; i < deps.length; i++) { - dep = deps[i]; - if (dep.indexOf('!') !== -1) { - moduleName = dep.split('!')[0]; - collectorMod = pluginCollector[moduleName]; - if (!collectorMod) { - collectorMod = pluginCollector[moduleName] = []; - } - collectorMod.push(dep); - } - } - } - } catch (eDep) { - logger.error('Parse error looking for plugin resources in ' + - fileName + ', skipping.'); - } - } - - //Strip amdefine use for node-shared modules. - fileContents = fileContents.replace(pragma.amdefineRegExp, ''); - - //Do namespacing - if (onLifecycleName === 'OnSave' && config.namespace) { - fileContents = pragma.namespace(fileContents, config.namespace, onLifecycleName); - } - - - return pragma.removeStrict(fileContents, config); - } - }; - - return pragma; -}); -if(env === 'browser') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false */ - -define('browser/optimize', {}); - -} - -if(env === 'node') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint strict: false */ -/*global define: false */ - -define('node/optimize', {}); - -} - -if(env === 'rhino') { -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint sloppy: true, plusplus: true */ -/*global define, java, Packages, com */ - -define('rhino/optimize', ['logger', 'env!env/file'], function (logger, file) { - - //Add .reduce to Rhino so UglifyJS can run in Rhino, - //inspired by https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce - //but rewritten for brevity, and to be good enough for use by UglifyJS. - if (!Array.prototype.reduce) { - Array.prototype.reduce = function (fn /*, initialValue */) { - var i = 0, - length = this.length, - accumulator; - - if (arguments.length >= 2) { - accumulator = arguments[1]; - } else { - if (length) { - while (!(i in this)) { - i++; - } - accumulator = this[i++]; - } - } - - for (; i < length; i++) { - if (i in this) { - accumulator = fn.call(undefined, accumulator, this[i], i, this); - } - } - - return accumulator; - }; - } - - var JSSourceFilefromCode, optimize, - mapRegExp = /"file":"[^"]+"/; - - //Bind to Closure compiler, but if it is not available, do not sweat it. - try { - JSSourceFilefromCode = java.lang.Class.forName('com.google.javascript.jscomp.JSSourceFile').getMethod('fromCode', [java.lang.String, java.lang.String]); - } catch (e) {} - - //Helper for closure compiler, because of weird Java-JavaScript interactions. - function closurefromCode(filename, content) { - return JSSourceFilefromCode.invoke(null, [filename, content]); - } - - - function getFileWriter(fileName, encoding) { - var outFile = new java.io.File(fileName), outWriter, parentDir; - - parentDir = outFile.getAbsoluteFile().getParentFile(); - if (!parentDir.exists()) { - if (!parentDir.mkdirs()) { - throw "Could not create directory: " + parentDir.getAbsolutePath(); - } - } - - if (encoding) { - outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), encoding); - } else { - outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile)); - } - - return new java.io.BufferedWriter(outWriter); - } - - optimize = { - closure: function (fileName, fileContents, outFileName, keepLines, config) { - config = config || {}; - var result, mappings, optimized, compressed, baseName, writer, - outBaseName, outFileNameMap, outFileNameMapContent, - jscomp = Packages.com.google.javascript.jscomp, - flags = Packages.com.google.common.flags, - //Fake extern - externSourceFile = closurefromCode("fakeextern.js", " "), - //Set up source input - jsSourceFile = closurefromCode(String(fileName), String(fileContents)), - options, option, FLAG_compilation_level, compiler, - Compiler = Packages.com.google.javascript.jscomp.Compiler; - - logger.trace("Minifying file: " + fileName); - - baseName = (new java.io.File(fileName)).getName(); - - //Set up options - options = new jscomp.CompilerOptions(); - for (option in config.CompilerOptions) { - // options are false by default and jslint wanted an if statement in this for loop - if (config.CompilerOptions[option]) { - options[option] = config.CompilerOptions[option]; - } - - } - options.prettyPrint = keepLines || options.prettyPrint; - - FLAG_compilation_level = jscomp.CompilationLevel[config.CompilationLevel || 'SIMPLE_OPTIMIZATIONS']; - FLAG_compilation_level.setOptionsForCompilationLevel(options); - - if (config.generateSourceMaps) { - mappings = new java.util.ArrayList(); - - mappings.add(new com.google.javascript.jscomp.SourceMap.LocationMapping(fileName, baseName + ".src")); - options.setSourceMapLocationMappings(mappings); - options.setSourceMapOutputPath(fileName + ".map"); - } - - //Trigger the compiler - Compiler.setLoggingLevel(Packages.java.util.logging.Level[config.loggingLevel || 'WARNING']); - compiler = new Compiler(); - - result = compiler.compile(externSourceFile, jsSourceFile, options); - if (result.success) { - optimized = String(compiler.toSource()); - - if (config.generateSourceMaps && result.sourceMap && outFileName) { - outBaseName = (new java.io.File(outFileName)).getName(); - - file.saveUtf8File(outFileName + ".src", fileContents); - - outFileNameMap = outFileName + ".map"; - writer = getFileWriter(outFileNameMap, "utf-8"); - result.sourceMap.appendTo(writer, outFileName); - writer.close(); - - //Not sure how better to do this, but right now the .map file - //leaks the full OS path in the "file" property. Manually - //modify it to not do that. - file.saveFile(outFileNameMap, - file.readFile(outFileNameMap).replace(mapRegExp, '"file":"' + baseName + '"')); - - fileContents = optimized + "\n//@ sourceMappingURL=" + outBaseName + ".map"; - } else { - fileContents = optimized; - } - return fileContents; - } else { - logger.error('Cannot closure compile file: ' + fileName + '. Skipping it.'); - } - - return fileContents; - } - }; - - return optimize; -}); -} -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: true, nomen: true, regexp: true */ -/*global define: false */ - -define('optimize', [ 'lang', 'logger', 'env!env/optimize', 'env!env/file', 'parse', - 'pragma', 'uglifyjs/index', 'uglifyjs2'], -function (lang, logger, envOptimize, file, parse, - pragma, uglify, uglify2) { - 'use strict'; - - var optimize, - cssImportRegExp = /\@import\s+(url\()?\s*([^);]+)\s*(\))?([\w, ]*)(;)?/g, - cssCommentImportRegExp = /\/\*[^\*]*@import[^\*]*\*\//g, - cssUrlRegExp = /\url\(\s*([^\)]+)\s*\)?/g, - endSemicolonRegExp = /;\s*$/; - - /** - * If an URL from a CSS url value contains start/end quotes, remove them. - * This is not done in the regexp, since my regexp fu is not that strong, - * and the CSS spec allows for ' and " in the URL if they are backslash escaped. - * @param {String} url - */ - function cleanCssUrlQuotes(url) { - //Make sure we are not ending in whitespace. - //Not very confident of the css regexps above that there will not be ending - //whitespace. - url = url.replace(/\s+$/, ""); - - if (url.charAt(0) === "'" || url.charAt(0) === "\"") { - url = url.substring(1, url.length - 1); - } - - return url; - } - - /** - * Inlines nested stylesheets that have @import calls in them. - * @param {String} fileName the file name - * @param {String} fileContents the file contents - * @param {String} cssImportIgnore comma delimited string of files to ignore - * @param {Object} included an object used to track the files already imported - */ - function flattenCss(fileName, fileContents, cssImportIgnore, included) { - //Find the last slash in the name. - fileName = fileName.replace(lang.backSlashRegExp, "/"); - var endIndex = fileName.lastIndexOf("/"), - //Make a file path based on the last slash. - //If no slash, so must be just a file name. Use empty string then. - filePath = (endIndex !== -1) ? fileName.substring(0, endIndex + 1) : "", - //store a list of merged files - importList = [], - skippedList = []; - - //First make a pass by removing an commented out @import calls. - fileContents = fileContents.replace(cssCommentImportRegExp, ''); - - //Make sure we have a delimited ignore list to make matching faster - if (cssImportIgnore && cssImportIgnore.charAt(cssImportIgnore.length - 1) !== ",") { - cssImportIgnore += ","; - } - - fileContents = fileContents.replace(cssImportRegExp, function (fullMatch, urlStart, importFileName, urlEnd, mediaTypes) { - //Only process media type "all" or empty media type rules. - if (mediaTypes && ((mediaTypes.replace(/^\s\s*/, '').replace(/\s\s*$/, '')) !== "all")) { - skippedList.push(fileName); - return fullMatch; - } - - importFileName = cleanCssUrlQuotes(importFileName); - - //Ignore the file import if it is part of an ignore list. - if (cssImportIgnore && cssImportIgnore.indexOf(importFileName + ",") !== -1) { - return fullMatch; - } - - //Make sure we have a unix path for the rest of the operation. - importFileName = importFileName.replace(lang.backSlashRegExp, "/"); - - try { - //if a relative path, then tack on the filePath. - //If it is not a relative path, then the readFile below will fail, - //and we will just skip that import. - var fullImportFileName = importFileName.charAt(0) === "/" ? importFileName : filePath + importFileName, - importContents = file.readFile(fullImportFileName), i, - importEndIndex, importPath, fixedUrlMatch, colonIndex, parts, flat; - - //Skip the file if it has already been included. - if (included[fullImportFileName]) { - return ''; - } - included[fullImportFileName] = true; - - //Make sure to flatten any nested imports. - flat = flattenCss(fullImportFileName, importContents, cssImportIgnore, included); - importContents = flat.fileContents; - - if (flat.importList.length) { - importList.push.apply(importList, flat.importList); - } - if (flat.skippedList.length) { - skippedList.push.apply(skippedList, flat.skippedList); - } - - //Make the full import path - importEndIndex = importFileName.lastIndexOf("/"); - - //Make a file path based on the last slash. - //If no slash, so must be just a file name. Use empty string then. - importPath = (importEndIndex !== -1) ? importFileName.substring(0, importEndIndex + 1) : ""; - - //fix url() on relative import (#5) - importPath = importPath.replace(/^\.\//, ''); - - //Modify URL paths to match the path represented by this file. - importContents = importContents.replace(cssUrlRegExp, function (fullMatch, urlMatch) { - fixedUrlMatch = cleanCssUrlQuotes(urlMatch); - fixedUrlMatch = fixedUrlMatch.replace(lang.backSlashRegExp, "/"); - - //Only do the work for relative URLs. Skip things that start with / or have - //a protocol. - colonIndex = fixedUrlMatch.indexOf(":"); - if (fixedUrlMatch.charAt(0) !== "/" && (colonIndex === -1 || colonIndex > fixedUrlMatch.indexOf("/"))) { - //It is a relative URL, tack on the path prefix - urlMatch = importPath + fixedUrlMatch; - } else { - logger.trace(importFileName + "\n URL not a relative URL, skipping: " + urlMatch); - } - - //Collapse .. and . - parts = urlMatch.split("/"); - for (i = parts.length - 1; i > 0; i--) { - if (parts[i] === ".") { - parts.splice(i, 1); - } else if (parts[i] === "..") { - if (i !== 0 && parts[i - 1] !== "..") { - parts.splice(i - 1, 2); - i -= 1; - } - } - } - - return "url(" + parts.join("/") + ")"; - }); - - importList.push(fullImportFileName); - return importContents; - } catch (e) { - logger.warn(fileName + "\n Cannot inline css import, skipping: " + importFileName); - return fullMatch; - } - }); - - return { - importList : importList, - skippedList: skippedList, - fileContents : fileContents - }; - } - - optimize = { - /** - * Optimizes a file that contains JavaScript content. Optionally collects - * plugin resources mentioned in a file, and then passes the content - * through an minifier if one is specified via config.optimize. - * - * @param {String} fileName the name of the file to optimize - * @param {String} fileContents the contents to optimize. If this is - * a null value, then fileName will be used to read the fileContents. - * @param {String} outFileName the name of the file to use for the - * saved optimized content. - * @param {Object} config the build config object. - * @param {Array} [pluginCollector] storage for any plugin resources - * found. - */ - jsFile: function (fileName, fileContents, outFileName, config, pluginCollector) { - if (!fileContents) { - fileContents = file.readFile(fileName); - } - - fileContents = optimize.js(fileName, fileContents, outFileName, config, pluginCollector); - - file.saveUtf8File(outFileName, fileContents); - }, - - /** - * Optimizes a file that contains JavaScript content. Optionally collects - * plugin resources mentioned in a file, and then passes the content - * through an minifier if one is specified via config.optimize. - * - * @param {String} fileName the name of the file that matches the - * fileContents. - * @param {String} fileContents the string of JS to optimize. - * @param {Object} [config] the build config object. - * @param {Array} [pluginCollector] storage for any plugin resources - * found. - */ - js: function (fileName, fileContents, outFileName, config, pluginCollector) { - var optFunc, optConfig, - parts = (String(config.optimize)).split('.'), - optimizerName = parts[0], - keepLines = parts[1] === 'keepLines', - licenseContents = ''; - - config = config || {}; - - //Apply pragmas/namespace renaming - fileContents = pragma.process(fileName, fileContents, config, 'OnSave', pluginCollector); - - //Optimize the JS files if asked. - if (optimizerName && optimizerName !== 'none') { - optFunc = envOptimize[optimizerName] || optimize.optimizers[optimizerName]; - if (!optFunc) { - throw new Error('optimizer with name of "' + - optimizerName + - '" not found for this environment'); - } - - optConfig = config[optimizerName] || {} - if (config.generateSourceMaps) { - optConfig.generateSourceMaps = !!config.generateSourceMaps; - } - - if (config.preserveLicenseComments) { - //Pull out any license comments for prepending after optimization. - try { - licenseContents = parse.getLicenseComments(fileName, fileContents); - } catch (e) { - logger.error('Cannot parse file: ' + fileName + ' for comments. Skipping it. Error is:\n' + e.toString()); - } - } - - fileContents = licenseContents + optFunc(fileName, - fileContents, - outFileName, - keepLines, - optConfig); - } - - return fileContents; - }, - - /** - * Optimizes one CSS file, inlining @import calls, stripping comments, and - * optionally removes line returns. - * @param {String} fileName the path to the CSS file to optimize - * @param {String} outFileName the path to save the optimized file. - * @param {Object} config the config object with the optimizeCss and - * cssImportIgnore options. - */ - cssFile: function (fileName, outFileName, config) { - - //Read in the file. Make sure we have a JS string. - var originalFileContents = file.readFile(fileName), - flat = flattenCss(fileName, originalFileContents, config.cssImportIgnore, {}), - //Do not use the flattened CSS if there was one that was skipped. - fileContents = flat.skippedList.length ? originalFileContents : flat.fileContents, - startIndex, endIndex, buildText, comment; - - if (flat.skippedList.length) { - logger.warn('Cannot inline @imports for ' + fileName + - ',\nthe following files had media queries in them:\n' + - flat.skippedList.join('\n')); - } - - //Do comment removal. - try { - if (config.optimizeCss.indexOf(".keepComments") === -1) { - startIndex = 0; - //Get rid of comments. - while ((startIndex = fileContents.indexOf("/*", startIndex)) !== -1) { - endIndex = fileContents.indexOf("*/", startIndex + 2); - if (endIndex === -1) { - throw "Improper comment in CSS file: " + fileName; - } - comment = fileContents.substring(startIndex, endIndex); - - if (config.preserveLicenseComments && - (comment.indexOf('license') !== -1 || - comment.indexOf('opyright') !== -1 || - comment.indexOf('(c)') !== -1)) { - //Keep the comment, just increment the startIndex - startIndex = endIndex; - } else { - fileContents = fileContents.substring(0, startIndex) + fileContents.substring(endIndex + 2, fileContents.length); - startIndex = 0; - } - } - } - //Get rid of newlines. - if (config.optimizeCss.indexOf(".keepLines") === -1) { - fileContents = fileContents.replace(/[\r\n]/g, ""); - fileContents = fileContents.replace(/\s+/g, " "); - fileContents = fileContents.replace(/\{\s/g, "{"); - fileContents = fileContents.replace(/\s\}/g, "}"); - } else { - //Remove multiple empty lines. - fileContents = fileContents.replace(/(\r\n)+/g, "\r\n"); - fileContents = fileContents.replace(/(\n)+/g, "\n"); - } - } catch (e) { - fileContents = originalFileContents; - logger.error("Could not optimized CSS file: " + fileName + ", error: " + e); - } - - file.saveUtf8File(outFileName, fileContents); - - //text output to stdout and/or written to build.txt file - buildText = "\n"+ outFileName.replace(config.dir, "") +"\n----------------\n"; - flat.importList.push(fileName); - buildText += flat.importList.map(function(path){ - return path.replace(config.dir, ""); - }).join("\n"); - - return { - importList: flat.importList, - buildText: buildText +"\n" - }; - }, - - /** - * Optimizes CSS files, inlining @import calls, stripping comments, and - * optionally removes line returns. - * @param {String} startDir the path to the top level directory - * @param {Object} config the config object with the optimizeCss and - * cssImportIgnore options. - */ - css: function (startDir, config) { - var buildText = "", - importList = [], - shouldRemove = config.dir && config.removeCombined, - i, fileName, result, fileList; - if (config.optimizeCss.indexOf("standard") !== -1) { - fileList = file.getFilteredFileList(startDir, /\.css$/, true); - if (fileList) { - for (i = 0; i < fileList.length; i++) { - fileName = fileList[i]; - logger.trace("Optimizing (" + config.optimizeCss + ") CSS file: " + fileName); - result = optimize.cssFile(fileName, fileName, config); - buildText += result.buildText; - if (shouldRemove) { - result.importList.pop(); - importList = importList.concat(result.importList); - } - } - } - - if (shouldRemove) { - importList.forEach(function (path) { - if (file.exists(path)) { - file.deleteFile(path); - } - }); - } - } - return buildText; - }, - - optimizers: { - uglify: function (fileName, fileContents, outFileName, keepLines, config) { - var parser = uglify.parser, - processor = uglify.uglify, - ast, errMessage, errMatch; - - config = config || {}; - - logger.trace("Uglifying file: " + fileName); - - try { - ast = parser.parse(fileContents, config.strict_semicolons); - if (config.no_mangle !== true) { - ast = processor.ast_mangle(ast, config); - } - ast = processor.ast_squeeze(ast, config); - - fileContents = processor.gen_code(ast, config); - - if (config.max_line_length) { - fileContents = processor.split_lines(fileContents, config.max_line_length); - } - - //Add trailing semicolon to match uglifyjs command line version - fileContents += ';'; - } catch (e) { - errMessage = e.toString(); - errMatch = /\nError(\r)?\n/.exec(errMessage); - if (errMatch) { - errMessage = errMessage.substring(0, errMatch.index); - } - logger.error('Cannot uglify file: ' + fileName + '. Skipping it. Error is:\n' + errMessage); - } - return fileContents; - }, - uglify2: function (fileName, fileContents, outFileName, keepLines, config) { - var result, - uconfig = {}, - baseName = fileName && fileName.split('/').pop(); - - config = config || {}; - - lang.mixin(uconfig, config, true); - - uconfig.fromString = true; - - if (config.generateSourceMaps && outFileName) { - uconfig.outSourceMap = baseName; - } - - logger.trace("Uglify2 file: " + fileName); - - try { - result = uglify2.minify(fileContents, uconfig, baseName + '.src'); - - if (uconfig.outSourceMap && result.map) { - file.saveFile(outFileName + '.src', fileContents); - file.saveFile(outFileName + '.map', result.map); - fileContents = result.code + "\n//@ sourceMappingURL=" + baseName + ".map"; - } else { - fileContents = result.code; - } - } catch (e) { - logger.error('Cannot uglify2 file: ' + fileName + '. Skipping it. Error is:\n' + e.toString()); - } - return fileContents; - } - } - }; - - return optimize; -}); -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/* - * This file patches require.js to communicate with the build system. - */ - -//Using sloppy since this uses eval for some code like plugins, -//which may not be strict mode compliant. So if use strict is used -//below they will have strict rules applied and may cause an error. -/*jslint sloppy: true, nomen: true, plusplus: true, regexp: true */ -/*global require, define: true */ - -//NOT asking for require as a dependency since the goal is to modify the -//global require below -define('requirePatch', [ 'env!env/file', 'pragma', 'parse', 'lang', 'logger', 'commonJs', 'prim'], function ( - file, - pragma, - parse, - lang, - logger, - commonJs, - prim -) { - - var allowRun = true, - hasProp = lang.hasProp, - falseProp = lang.falseProp, - getOwn = lang.getOwn; - - //This method should be called when the patches to require should take hold. - return function () { - if (!allowRun) { - return; - } - allowRun = false; - - var layer, - pluginBuilderRegExp = /(["']?)pluginBuilder(["']?)\s*[=\:]\s*["']([^'"\s]+)["']/, - oldNewContext = require.s.newContext, - oldDef, - - //create local undefined values for module and exports, - //so that when files are evaled in this function they do not - //see the node values used for r.js - exports, - module; - - /** - * Reset "global" build caches that are kept around between - * build layer builds. Useful to do when there are multiple - * top level requirejs.optimize() calls. - */ - require._cacheReset = function () { - //Stored raw text caches, used by browser use. - require._cachedRawText = {}; - //Stored cached file contents for reuse in other layers. - require._cachedFileContents = {}; - //Store which cached files contain a require definition. - require._cachedDefinesRequireUrls = {}; - }; - require._cacheReset(); - - /** - * Makes sure the URL is something that can be supported by the - * optimization tool. - * @param {String} url - * @returns {Boolean} - */ - require._isSupportedBuildUrl = function (url) { - //Ignore URLs with protocols, hosts or question marks, means either network - //access is needed to fetch it or it is too dynamic. Note that - //on Windows, full paths are used for some urls, which include - //the drive, like c:/something, so need to test for something other - //than just a colon. - if (url.indexOf("://") === -1 && url.indexOf("?") === -1 && - url.indexOf('empty:') !== 0 && url.indexOf('//') !== 0) { - return true; - } else { - if (!layer.ignoredUrls[url]) { - if (url.indexOf('empty:') === -1) { - logger.info('Cannot optimize network URL, skipping: ' + url); - } - layer.ignoredUrls[url] = true; - } - return false; - } - }; - - function normalizeUrlWithBase(context, moduleName, url) { - //Adjust the URL if it was not transformed to use baseUrl. - if (require.jsExtRegExp.test(moduleName)) { - url = (context.config.dir || context.config.dirBaseUrl) + url; - } - return url; - } - - //Overrides the new context call to add existing tracking features. - require.s.newContext = function (name) { - var context = oldNewContext(name), - oldEnable = context.enable, - moduleProto = context.Module.prototype, - oldInit = moduleProto.init, - oldCallPlugin = moduleProto.callPlugin; - - //Only do this for the context used for building. - if (name === '_') { - //For build contexts, do everything sync - context.nextTick = function (fn) { - fn(); - }; - - context.needFullExec = {}; - context.fullExec = {}; - context.plugins = {}; - context.buildShimExports = {}; - - //Override the shim exports function generator to just - //spit out strings that can be used in the stringified - //build output. - context.makeShimExports = function (value) { - function fn() { - return '(function (global) {\n' + - ' return function () {\n' + - ' var ret, fn;\n' + - (value.init ? - (' fn = ' + value.init.toString() + ';\n' + - ' ret = fn.apply(global, arguments);\n') : '') + - (value.exports ? - ' return ret || global.' + value.exports + ';\n' : - ' return ret;\n') + - ' };\n' + - '}(this))'; - } - - return fn; - }; - - context.enable = function (depMap, parent) { - var id = depMap.id, - parentId = parent && parent.map.id, - needFullExec = context.needFullExec, - fullExec = context.fullExec, - mod = getOwn(context.registry, id); - - if (mod && !mod.defined) { - if (parentId && getOwn(needFullExec, parentId)) { - needFullExec[id] = true; - } - - } else if ((getOwn(needFullExec, id) && falseProp(fullExec, id)) || - (parentId && getOwn(needFullExec, parentId) && - falseProp(fullExec, id))) { - context.require.undef(id); - } - - return oldEnable.apply(context, arguments); - }; - - //Override load so that the file paths can be collected. - context.load = function (moduleName, url) { - /*jslint evil: true */ - var contents, pluginBuilderMatch, builderName, - shim, shimExports; - - //Do not mark the url as fetched if it is - //not an empty: URL, used by the optimizer. - //In that case we need to be sure to call - //load() for each module that is mapped to - //empty: so that dependencies are satisfied - //correctly. - if (url.indexOf('empty:') === 0) { - delete context.urlFetched[url]; - } - - //Only handle urls that can be inlined, so that means avoiding some - //URLs like ones that require network access or may be too dynamic, - //like JSONP - if (require._isSupportedBuildUrl(url)) { - //Adjust the URL if it was not transformed to use baseUrl. - url = normalizeUrlWithBase(context, moduleName, url); - - //Save the module name to path and path to module name mappings. - layer.buildPathMap[moduleName] = url; - layer.buildFileToModule[url] = moduleName; - - if (hasProp(context.plugins, moduleName)) { - //plugins need to have their source evaled as-is. - context.needFullExec[moduleName] = true; - } - - prim().start(function () { - if (hasProp(require._cachedFileContents, url) && - (falseProp(context.needFullExec, moduleName) || - getOwn(context.fullExec, moduleName))) { - contents = require._cachedFileContents[url]; - - //If it defines require, mark it so it can be hoisted. - //Done here and in the else below, before the - //else block removes code from the contents. - //Related to #263 - if (!layer.existingRequireUrl && require._cachedDefinesRequireUrls[url]) { - layer.existingRequireUrl = url; - } - } else { - //Load the file contents, process for conditionals, then - //evaluate it. - return require._cacheReadAsync(url).then(function (text) { - contents = text; - - if (context.config.cjsTranslate) { - contents = commonJs.convert(url, contents); - } - - //If there is a read filter, run it now. - if (context.config.onBuildRead) { - contents = context.config.onBuildRead(moduleName, url, contents); - } - - contents = pragma.process(url, contents, context.config, 'OnExecute'); - - //Find out if the file contains a require() definition. Need to know - //this so we can inject plugins right after it, but before they are needed, - //and to make sure this file is first, so that define calls work. - try { - if (!layer.existingRequireUrl && parse.definesRequire(url, contents)) { - layer.existingRequireUrl = url; - require._cachedDefinesRequireUrls[url] = true; - } - } catch (e1) { - throw new Error('Parse error using esprima ' + - 'for file: ' + url + '\n' + e1); - } - }).then(function () { - if (hasProp(context.plugins, moduleName)) { - //This is a loader plugin, check to see if it has a build extension, - //otherwise the plugin will act as the plugin builder too. - pluginBuilderMatch = pluginBuilderRegExp.exec(contents); - if (pluginBuilderMatch) { - //Load the plugin builder for the plugin contents. - builderName = context.makeModuleMap(pluginBuilderMatch[3], - context.makeModuleMap(moduleName), - null, - true).id; - return require._cacheReadAsync(context.nameToUrl(builderName)); - } - } - return contents; - }).then(function (text) { - contents = text; - - //Parse out the require and define calls. - //Do this even for plugins in case they have their own - //dependencies that may be separate to how the pluginBuilder works. - try { - if (falseProp(context.needFullExec, moduleName)) { - contents = parse(moduleName, url, contents, { - insertNeedsDefine: true, - has: context.config.has, - findNestedDependencies: context.config.findNestedDependencies - }); - } - } catch (e2) { - throw new Error('Parse error using esprima ' + - 'for file: ' + url + '\n' + e2); - } - - require._cachedFileContents[url] = contents; - }); - } - }).then(function () { - if (contents) { - eval(contents); - } - - try { - //If have a string shim config, and this is - //a fully executed module, try to see if - //it created a variable in this eval scope - if (getOwn(context.needFullExec, moduleName)) { - shim = getOwn(context.config.shim, moduleName); - if (shim && shim.exports) { - shimExports = eval(shim.exports); - if (typeof shimExports !== 'undefined') { - context.buildShimExports[moduleName] = shimExports; - } - } - } - - //Need to close out completion of this module - //so that listeners will get notified that it is available. - context.completeLoad(moduleName); - } catch (e) { - //Track which module could not complete loading. - if (!e.moduleTree) { - e.moduleTree = []; - } - e.moduleTree.push(moduleName); - throw e; - } - }).then(null, function (eOuter) { - - if (!eOuter.fileName) { - eOuter.fileName = url; - } - throw eOuter; - }).end(); - } else { - //With unsupported URLs still need to call completeLoad to - //finish loading. - context.completeLoad(moduleName); - } - }; - - //Marks module has having a name, and optionally executes the - //callback, but only if it meets certain criteria. - context.execCb = function (name, cb, args, exports) { - var buildShimExports = getOwn(layer.context.buildShimExports, name); - - if (falseProp(layer.needsDefine, name) && !buildShimExports) { - layer.modulesWithNames[name] = true; - } - - if (buildShimExports) { - return buildShimExports; - } else if (cb.__requireJsBuild || getOwn(layer.context.needFullExec, name)) { - return cb.apply(exports, args); - } - return undefined; - }; - - moduleProto.init = function (depMaps) { - if (context.needFullExec[this.map.id]) { - lang.each(depMaps, lang.bind(this, function (depMap) { - if (typeof depMap === 'string') { - depMap = context.makeModuleMap(depMap, - (this.map.isDefine ? this.map : this.map.parentMap)); - } - - if (!context.fullExec[depMap.id]) { - context.require.undef(depMap.id); - } - })); - } - - return oldInit.apply(this, arguments); - }; - - moduleProto.callPlugin = function () { - var map = this.map, - pluginMap = context.makeModuleMap(map.prefix), - pluginId = pluginMap.id, - pluginMod = getOwn(context.registry, pluginId); - - context.plugins[pluginId] = true; - context.needFullExec[pluginId] = true; - - //If the module is not waiting to finish being defined, - //undef it and start over, to get full execution. - if (falseProp(context.fullExec, pluginId) && (!pluginMod || pluginMod.defined)) { - context.require.undef(pluginMap.id); - } - - return oldCallPlugin.apply(this, arguments); - }; - } - - return context; - }; - - //Clear up the existing context so that the newContext modifications - //above will be active. - delete require.s.contexts._; - - /** Reset state for each build layer pass. */ - require._buildReset = function () { - var oldContext = require.s.contexts._; - - //Clear up the existing context. - delete require.s.contexts._; - - //Set up new context, so the layer object can hold onto it. - require({}); - - layer = require._layer = { - buildPathMap: {}, - buildFileToModule: {}, - buildFilePaths: [], - pathAdded: {}, - modulesWithNames: {}, - needsDefine: {}, - existingRequireUrl: "", - ignoredUrls: {}, - context: require.s.contexts._ - }; - - //Return the previous context in case it is needed, like for - //the basic config object. - return oldContext; - }; - - require._buildReset(); - - //Override define() to catch modules that just define an object, so that - //a dummy define call is not put in the build file for them. They do - //not end up getting defined via context.execCb, so we need to catch them - //at the define call. - oldDef = define; - - //This function signature does not have to be exact, just match what we - //are looking for. - define = function (name) { - if (typeof name === "string" && falseProp(layer.needsDefine, name)) { - layer.modulesWithNames[name] = true; - } - return oldDef.apply(require, arguments); - }; - - define.amd = oldDef.amd; - - //Add some utilities for plugins - require._readFile = file.readFile; - require._fileExists = function (path) { - return file.exists(path); - }; - - //Called when execManager runs for a dependency. Used to figure out - //what order of execution. - require.onResourceLoad = function (context, map) { - var id = map.id, - url; - - //If build needed a full execution, indicate it - //has been done now. But only do it if the context is tracking - //that. Only valid for the context used in a build, not for - //other contexts being run, like for useLib, plain requirejs - //use in node/rhino. - if (context.needFullExec && getOwn(context.needFullExec, id)) { - context.fullExec[id] = true; - } - - //A plugin. - if (map.prefix) { - if (falseProp(layer.pathAdded, id)) { - layer.buildFilePaths.push(id); - //For plugins the real path is not knowable, use the name - //for both module to file and file to module mappings. - layer.buildPathMap[id] = id; - layer.buildFileToModule[id] = id; - layer.modulesWithNames[id] = true; - layer.pathAdded[id] = true; - } - } else if (map.url && require._isSupportedBuildUrl(map.url)) { - //If the url has not been added to the layer yet, and it - //is from an actual file that was loaded, add it now. - url = normalizeUrlWithBase(context, id, map.url); - if (!layer.pathAdded[url] && getOwn(layer.buildPathMap, id)) { - //Remember the list of dependencies for this layer. - layer.buildFilePaths.push(url); - layer.pathAdded[url] = true; - } - } - }; - - //Called by output of the parse() function, when a file does not - //explicitly call define, probably just require, but the parse() - //function normalizes on define() for dependency mapping and file - //ordering works correctly. - require.needsDefine = function (moduleName) { - layer.needsDefine[moduleName] = true; - }; - }; -}); -/** - * @license RequireJS Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint */ -/*global define: false, console: false */ - -define('commonJs', ['env!env/file', 'parse'], function (file, parse) { - 'use strict'; - var commonJs = { - //Set to false if you do not want this file to log. Useful in environments - //like node where you want the work to happen without noise. - useLog: true, - - convertDir: function (commonJsPath, savePath) { - var fileList, i, - jsFileRegExp = /\.js$/, - fileName, convertedFileName, fileContents; - - //Get list of files to convert. - fileList = file.getFilteredFileList(commonJsPath, /\w/, true); - - //Normalize on front slashes and make sure the paths do not end in a slash. - commonJsPath = commonJsPath.replace(/\\/g, "/"); - savePath = savePath.replace(/\\/g, "/"); - if (commonJsPath.charAt(commonJsPath.length - 1) === "/") { - commonJsPath = commonJsPath.substring(0, commonJsPath.length - 1); - } - if (savePath.charAt(savePath.length - 1) === "/") { - savePath = savePath.substring(0, savePath.length - 1); - } - - //Cycle through all the JS files and convert them. - if (!fileList || !fileList.length) { - if (commonJs.useLog) { - if (commonJsPath === "convert") { - //A request just to convert one file. - console.log('\n\n' + commonJs.convert(savePath, file.readFile(savePath))); - } else { - console.log("No files to convert in directory: " + commonJsPath); - } - } - } else { - for (i = 0; i < fileList.length; i++) { - fileName = fileList[i]; - convertedFileName = fileName.replace(commonJsPath, savePath); - - //Handle JS files. - if (jsFileRegExp.test(fileName)) { - fileContents = file.readFile(fileName); - fileContents = commonJs.convert(fileName, fileContents); - file.saveUtf8File(convertedFileName, fileContents); - } else { - //Just copy the file over. - file.copyFile(fileName, convertedFileName, true); - } - } - } - }, - - /** - * Does the actual file conversion. - * - * @param {String} fileName the name of the file. - * - * @param {String} fileContents the contents of a file :) - * - * @returns {String} the converted contents - */ - convert: function (fileName, fileContents) { - //Strip out comments. - try { - var preamble = '', - commonJsProps = parse.usesCommonJs(fileName, fileContents); - - //First see if the module is not already RequireJS-formatted. - if (parse.usesAmdOrRequireJs(fileName, fileContents) || !commonJsProps) { - return fileContents; - } - - if (commonJsProps.dirname || commonJsProps.filename) { - preamble = 'var __filename = module.uri || "", ' + - '__dirname = __filename.substring(0, __filename.lastIndexOf("/") + 1);\n'; - } - - //Construct the wrapper boilerplate. - fileContents = 'define(function (require, exports, module) {\n' + - preamble + - fileContents + - '\n});\n'; - - } catch (e) { - console.log("commonJs.convert: COULD NOT CONVERT: " + fileName + ", so skipping it. Error was: " + e); - return fileContents; - } - - return fileContents; - } - }; - - return commonJs; -}); -/** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: true, nomen: true, regexp: true */ -/*global define, require, requirejs */ - - -define('build', function (require) { - 'use strict'; - - var build, buildBaseConfig, - lang = require('lang'), - prim = require('prim'), - logger = require('logger'), - file = require('env!env/file'), - parse = require('parse'), - optimize = require('optimize'), - pragma = require('pragma'), - transform = require('transform'), - load = require('env!env/load'), - requirePatch = require('requirePatch'), - quit = require('env!env/quit'), - commonJs = require('commonJs'), - hasProp = lang.hasProp, - getOwn = lang.getOwn, - falseProp = lang.falseProp, - endsWithSemiColonRegExp = /;\s*$/; - - prim.nextTick = function (fn) { - fn(); - }; - - //Now map require to the outermost requirejs, now that we have - //local dependencies for this module. The rest of the require use is - //manipulating the requirejs loader. - require = requirejs; - - //Caching function for performance. Attached to - //require so it can be reused in requirePatch.js. _cachedRawText - //set up by requirePatch.js - require._cacheReadAsync = function (path, encoding) { - var d; - - if (lang.hasProp(require._cachedRawText, path)) { - d = prim(); - d.resolve(require._cachedRawText[path]); - return d.promise; - } else { - return file.readFileAsync(path, encoding).then(function (text) { - require._cachedRawText[path] = text; - return text; - }); - } - }; - - buildBaseConfig = { - appDir: "", - pragmas: {}, - paths: {}, - optimize: "uglify", - optimizeCss: "standard.keepLines", - inlineText: true, - isBuild: true, - optimizeAllPluginResources: false, - findNestedDependencies: false, - preserveLicenseComments: true, - //By default, all files/directories are copied, unless - //they match this regexp, by default just excludes .folders - dirExclusionRegExp: file.dirExclusionRegExp, - _buildPathToModuleIndex: {} - }; - - /** - * Some JS may not be valid if concatenated with other JS, in particular - * the style of omitting semicolons and rely on ASI. Add a semicolon in - * those cases. - */ - function addSemiColon(text) { - if (endsWithSemiColonRegExp.test(text)) { - return text; - } else { - return text + ";"; - } - } - - function endsWithSlash(dirName) { - if (dirName.charAt(dirName.length - 1) !== "/") { - dirName += "/"; - } - return dirName; - } - - //Method used by plugin writeFile calls, defined up here to avoid - //jslint warning about "making a function in a loop". - function makeWriteFile(namespace, layer) { - function writeFile(name, contents) { - logger.trace('Saving plugin-optimized file: ' + name); - file.saveUtf8File(name, contents); - } - - writeFile.asModule = function (moduleName, fileName, contents) { - writeFile(fileName, - build.toTransport(namespace, moduleName, fileName, contents, layer)); - }; - - return writeFile; - } - - /** - * Main API entry point into the build. The args argument can either be - * an array of arguments (like the onese passed on a command-line), - * or it can be a JavaScript object that has the format of a build profile - * file. - * - * If it is an object, then in addition to the normal properties allowed in - * a build profile file, the object should contain one other property: - * - * The object could also contain a "buildFile" property, which is a string - * that is the file path to a build profile that contains the rest - * of the build profile directives. - * - * This function does not return a status, it should throw an error if - * there is a problem completing the build. - */ - build = function (args) { - var buildFile, cmdConfig, errorMsg, errorStack, stackMatch, errorTree, - i, j, errorMod, - stackRegExp = /( {4}at[^\n]+)\n/, - standardIndent = ' '; - - return prim().start(function () { - if (!args || lang.isArray(args)) { - if (!args || args.length < 1) { - logger.error("build.js buildProfile.js\n" + - "where buildProfile.js is the name of the build file (see example.build.js for hints on how to make a build file)."); - return undefined; - } - - //Next args can include a build file path as well as other build args. - //build file path comes first. If it does not contain an = then it is - //a build file path. Otherwise, just all build args. - if (args[0].indexOf("=") === -1) { - buildFile = args[0]; - args.splice(0, 1); - } - - //Remaining args are options to the build - cmdConfig = build.convertArrayToObject(args); - cmdConfig.buildFile = buildFile; - } else { - cmdConfig = args; - } - - return build._run(cmdConfig); - }).then(null, function (e) { - errorMsg = e.toString(); - errorTree = e.moduleTree; - stackMatch = stackRegExp.exec(errorMsg); - - if (stackMatch) { - errorMsg += errorMsg.substring(0, stackMatch.index + stackMatch[0].length + 1); - } - - //If a module tree that shows what module triggered the error, - //print it out. - if (errorTree && errorTree.length > 0) { - errorMsg += '\nIn module tree:\n'; - - for (i = errorTree.length - 1; i > -1; i--) { - errorMod = errorTree[i]; - if (errorMod) { - for (j = errorTree.length - i; j > -1; j--) { - errorMsg += standardIndent; - } - errorMsg += errorMod + '\n'; - } - } - - logger.error(errorMsg); - } - - errorStack = e.stack; - - if (typeof args === 'string' && args.indexOf('stacktrace=true') !== -1) { - errorMsg += '\n' + errorStack; - } else { - if (!stackMatch && errorStack) { - //Just trim out the first "at" in the stack. - stackMatch = stackRegExp.exec(errorStack); - if (stackMatch) { - errorMsg += '\n' + stackMatch[0] || ''; - } - } - } - - if (logger.level > logger.ERROR) { - throw new Error(errorMsg); - } else { - logger.error(errorMsg); - quit(1); - } - }); - }; - - build._run = function (cmdConfig) { - var buildPaths, fileName, fileNames, - paths, i, - baseConfig, config, - modules, builtModule, srcPath, buildContext, - destPath, moduleMap, parentModuleMap, context, - resources, resource, plugin, fileContents, - pluginProcessed = {}, - buildFileContents = "", - pluginCollector = {}; - - return prim().start(function () { - var prop, moduleName; - - //Can now run the patches to require.js to allow it to be used for - //build generation. Do it here instead of at the top of the module - //because we want normal require behavior to load the build tool - //then want to switch to build mode. - requirePatch(); - - config = build.createConfig(cmdConfig); - paths = config.paths; - - if (config.logLevel) { - logger.logLevel(config.logLevel); - } - - //Remove the previous build dir, in case it contains source transforms, - //like the ones done with onBuildRead and onBuildWrite. - if (config.dir && !config.keepBuildDir && file.exists(config.dir)) { - file.deleteFile(config.dir); - } - - if (!config.out && !config.cssIn) { - //This is not just a one-off file build but a full build profile, with - //lots of files to process. - - //First copy all the baseUrl content - file.copyDir((config.appDir || config.baseUrl), config.dir, /\w/, true); - - //Adjust baseUrl if config.appDir is in play, and set up build output paths. - buildPaths = {}; - if (config.appDir) { - //All the paths should be inside the appDir, so just adjust - //the paths to use the dirBaseUrl - for (prop in paths) { - if (hasProp(paths, prop)) { - buildPaths[prop] = paths[prop].replace(config.appDir, config.dir); - } - } - } else { - //If no appDir, then make sure to copy the other paths to this directory. - for (prop in paths) { - if (hasProp(paths, prop)) { - //Set up build path for each path prefix, but only do so - //if the path falls out of the current baseUrl - if (paths[prop].indexOf(config.baseUrl) === 0) { - buildPaths[prop] = paths[prop].replace(config.baseUrl, config.dirBaseUrl); - } else { - buildPaths[prop] = paths[prop] === 'empty:' ? 'empty:' : prop.replace(/\./g, "/"); - - //Make sure source path is fully formed with baseUrl, - //if it is a relative URL. - srcPath = paths[prop]; - if (srcPath.indexOf('/') !== 0 && srcPath.indexOf(':') === -1) { - srcPath = config.baseUrl + srcPath; - } - - destPath = config.dirBaseUrl + buildPaths[prop]; - - //Skip empty: paths - if (srcPath !== 'empty:') { - //If the srcPath is a directory, copy the whole directory. - if (file.exists(srcPath) && file.isDirectory(srcPath)) { - //Copy files to build area. Copy all files (the /\w/ regexp) - file.copyDir(srcPath, destPath, /\w/, true); - } else { - //Try a .js extension - srcPath += '.js'; - destPath += '.js'; - file.copyFile(srcPath, destPath); - } - } - } - } - } - } - } - - //Figure out source file location for each module layer. Do this by seeding require - //with source area configuration. This is needed so that later the module layers - //can be manually copied over to the source area, since the build may be - //require multiple times and the above copyDir call only copies newer files. - require({ - baseUrl: config.baseUrl, - paths: paths, - packagePaths: config.packagePaths, - packages: config.packages - }); - buildContext = require.s.contexts._; - modules = config.modules; - - if (modules) { - modules.forEach(function (module) { - if (module.name) { - module._sourcePath = buildContext.nameToUrl(module.name); - //If the module does not exist, and this is not a "new" module layer, - //as indicated by a true "create" property on the module, and - //it is not a plugin-loaded resource, then throw an error. - if (!file.exists(module._sourcePath) && !module.create && - module.name.indexOf('!') === -1) { - throw new Error("ERROR: module path does not exist: " + - module._sourcePath + " for module named: " + module.name + - ". Path is relative to: " + file.absPath('.')); - } - } - }); - } - - if (config.out) { - //Just set up the _buildPath for the module layer. - require(config); - if (!config.cssIn) { - config.modules[0]._buildPath = typeof config.out === 'function' ? - 'FUNCTION' : config.out; - } - } else if (!config.cssIn) { - //Now set up the config for require to use the build area, and calculate the - //build file locations. Pass along any config info too. - baseConfig = { - baseUrl: config.dirBaseUrl, - paths: buildPaths - }; - - lang.mixin(baseConfig, config); - require(baseConfig); - - if (modules) { - modules.forEach(function (module) { - if (module.name) { - module._buildPath = buildContext.nameToUrl(module.name, null); - if (!module.create) { - file.copyFile(module._sourcePath, module._buildPath); - } - } - }); - } - } - - //Run CSS optimizations before doing JS module tracing, to allow - //things like text loader plugins loading CSS to get the optimized - //CSS. - if (config.optimizeCss && config.optimizeCss !== "none" && config.dir) { - buildFileContents += optimize.css(config.dir, config); - } - }).then(function () { - var actions = []; - - if (modules) { - actions = modules.map(function (module, i) { - return function () { - //Save off buildPath to module index in a hash for quicker - //lookup later. - config._buildPathToModuleIndex[module._buildPath] = i; - - //Call require to calculate dependencies. - return build.traceDependencies(module, config) - .then(function (layer) { - module.layer = layer; - }); - }; - }); - - return prim.serial(actions); - } - }).then(function () { - var actions; - - if (modules) { - //Now build up shadow layers for anything that should be excluded. - //Do this after tracing dependencies for each module, in case one - //of those modules end up being one of the excluded values. - actions = modules.map(function (module) { - return function () { - var actions; - if (module.exclude) { - module.excludeLayers = []; - return prim.serial(module.exclude.map(function (exclude, i) { - return function () { - //See if it is already in the list of modules. - //If not trace dependencies for it. - var found = build.findBuildModule(exclude, modules); - if (found) { - module.excludeLayers[i] = found; - } else { - return build.traceDependencies({name: exclude}, config) - .then(function (layer) { - module.excludeLayers[i] = { layer: layer }; - }); - } - }; - })); - } - }; - }); - - return prim.serial(actions); - } - }).then(function () { - if (modules) { - return prim.serial(modules.map(function (module) { - return function () { - if (module.exclude) { - //module.exclude is an array of module names. For each one, - //get the nested dependencies for it via a matching entry - //in the module.excludeLayers array. - module.exclude.forEach(function (excludeModule, i) { - var excludeLayer = module.excludeLayers[i].layer, map = excludeLayer.buildPathMap, prop; - for (prop in map) { - if (hasProp(map, prop)) { - build.removeModulePath(prop, map[prop], module.layer); - } - } - }); - } - if (module.excludeShallow) { - //module.excludeShallow is an array of module names. - //shallow exclusions are just that module itself, and not - //its nested dependencies. - module.excludeShallow.forEach(function (excludeShallowModule) { - var path = getOwn(module.layer.buildPathMap, excludeShallowModule); - if (path) { - build.removeModulePath(excludeShallowModule, path, module.layer); - } - }); - } - - //Flatten them and collect the build output for each module. - return build.flattenModule(module, module.layer, config).then(function (builtModule) { - //Save it to a temp file for now, in case there are other layers that - //contain optimized content that should not be included in later - //layer optimizations. See issue #56. - if (module._buildPath === 'FUNCTION') { - module._buildText = builtModule.text; - } else { - file.saveUtf8File(module._buildPath + '-temp', builtModule.text); - } - buildFileContents += builtModule.buildText; - }); - }; - })); - } - }).then(function () { - var moduleName; - if (modules) { - //Now move the build layers to their final position. - modules.forEach(function (module) { - var finalPath = module._buildPath; - if (finalPath !== 'FUNCTION') { - if (file.exists(finalPath)) { - file.deleteFile(finalPath); - } - file.renameFile(finalPath + '-temp', finalPath); - - //And finally, if removeCombined is specified, remove - //any of the files that were used in this layer. - //Be sure not to remove other build layers. - if (config.removeCombined) { - module.layer.buildFilePaths.forEach(function (path) { - if (file.exists(path) && !modules.some(function (mod) { - return mod._buildPath === path; - })) { - file.deleteFile(path); - } - }); - } - } - }); - } - - //If removeCombined in play, remove any empty directories that - //may now exist because of its use - if (config.removeCombined && !config.out && config.dir) { - file.deleteEmptyDirs(config.dir); - } - - //Do other optimizations. - if (config.out && !config.cssIn) { - //Just need to worry about one JS file. - fileName = config.modules[0]._buildPath; - if (fileName === 'FUNCTION') { - config.modules[0]._buildText = optimize.js(fileName, - config.modules[0]._buildText, - null, - config); - } else { - optimize.jsFile(fileName, null, fileName, config); - } - } else if (!config.cssIn) { - //Normal optimizations across modules. - - //JS optimizations. - fileNames = file.getFilteredFileList(config.dir, /\.js$/, true); - fileNames.forEach(function (fileName, i) { - var cfg, override, moduleIndex; - - //Generate the module name from the config.dir root. - moduleName = fileName.replace(config.dir, ''); - //Get rid of the extension - moduleName = moduleName.substring(0, moduleName.length - 3); - - //If there is an override for a specific layer build module, - //and this file is that module, mix in the override for use - //by optimize.jsFile. - moduleIndex = getOwn(config._buildPathToModuleIndex, fileName); - //Normalize, since getOwn could have returned undefined - moduleIndex = moduleIndex === 0 || moduleIndex > 0 ? moduleIndex : -1; - - //Try to avoid extra work if the other files do not need to - //be read. Build layers should be processed at the very - //least for optimization. - if (moduleIndex > -1 || !config.skipDirOptimize || - config.normalizeDirDefines === "all" || - config.cjsTranslate) { - //Convert the file to transport format, but without a name - //inserted (by passing null for moduleName) since the files are - //standalone, one module per file. - fileContents = file.readFile(fileName); - - //For builds, if wanting cjs translation, do it now, so that - //the individual modules can be loaded cross domain via - //plain script tags. - if (config.cjsTranslate) { - fileContents = commonJs.convert(fileName, fileContents); - } - - //Only do transport normalization if this is not a build - //layer (since it was already normalized) and if - //normalizeDirDefines indicated all should be done. - if (moduleIndex === -1 && config.normalizeDirDefines === "all") { - fileContents = build.toTransport(config.namespace, - null, - fileName, - fileContents); - } - - override = moduleIndex > -1 ? - config.modules[moduleIndex].override : null; - if (override) { - cfg = build.createOverrideConfig(config, override); - } else { - cfg = config; - } - - if (moduleIndex > -1 || !config.skipDirOptimize) { - optimize.jsFile(fileName, fileContents, fileName, cfg, pluginCollector); - } - } - }); - - //Normalize all the plugin resources. - context = require.s.contexts._; - - for (moduleName in pluginCollector) { - if (hasProp(pluginCollector, moduleName)) { - parentModuleMap = context.makeModuleMap(moduleName); - resources = pluginCollector[moduleName]; - for (i = 0; i < resources.length; i++) { - resource = resources[i]; - moduleMap = context.makeModuleMap(resource, parentModuleMap); - if (falseProp(context.plugins, moduleMap.prefix)) { - //Set the value in context.plugins so it - //will be evaluated as a full plugin. - context.plugins[moduleMap.prefix] = true; - - //Do not bother if the plugin is not available. - if (!file.exists(require.toUrl(moduleMap.prefix + '.js'))) { - continue; - } - - //Rely on the require in the build environment - //to be synchronous - context.require([moduleMap.prefix]); - - //Now that the plugin is loaded, redo the moduleMap - //since the plugin will need to normalize part of the path. - moduleMap = context.makeModuleMap(resource, parentModuleMap); - } - - //Only bother with plugin resources that can be handled - //processed by the plugin, via support of the writeFile - //method. - if (falseProp(pluginProcessed, moduleMap.id)) { - //Only do the work if the plugin was really loaded. - //Using an internal access because the file may - //not really be loaded. - plugin = getOwn(context.defined, moduleMap.prefix); - if (plugin && plugin.writeFile) { - plugin.writeFile( - moduleMap.prefix, - moduleMap.name, - require, - makeWriteFile( - config.namespace - ), - context.config - ); - } - - pluginProcessed[moduleMap.id] = true; - } - } - - } - } - - //console.log('PLUGIN COLLECTOR: ' + JSON.stringify(pluginCollector, null, " ")); - - - //All module layers are done, write out the build.txt file. - file.saveUtf8File(config.dir + "build.txt", buildFileContents); - } - - //If just have one CSS file to optimize, do that here. - if (config.cssIn) { - buildFileContents += optimize.cssFile(config.cssIn, config.out, config).buildText; - } - - if (typeof config.out === 'function') { - config.out(config.modules[0]._buildText); - } - - //Print out what was built into which layers. - if (buildFileContents) { - logger.info(buildFileContents); - return buildFileContents; - } - - return ''; - }); - }; - - /** - * Converts command line args like "paths.foo=../some/path" - * result.paths = { foo: '../some/path' } where prop = paths, - * name = paths.foo and value = ../some/path, so it assumes the - * name=value splitting has already happened. - */ - function stringDotToObj(result, name, value) { - var parts = name.split('.'), - prop = parts[0]; - - parts.forEach(function (prop, i) { - if (i === parts.length - 1) { - result[prop] = value; - } else { - if (falseProp(result, prop)) { - result[prop] = {}; - } - result = result[prop]; - } - - }); - } - - build.objProps = { - paths: true, - wrap: true, - pragmas: true, - pragmasOnSave: true, - has: true, - hasOnSave: true, - uglify: true, - closure: true, - map: true - }; - - build.hasDotPropMatch = function (prop) { - var dotProp, - index = prop.indexOf('.'); - - if (index !== -1) { - dotProp = prop.substring(0, index); - return hasProp(build.objProps, dotProp); - } - return false; - }; - - /** - * Converts an array that has String members of "name=value" - * into an object, where the properties on the object are the names in the array. - * Also converts the strings "true" and "false" to booleans for the values. - * member name/value pairs, and converts some comma-separated lists into - * arrays. - * @param {Array} ary - */ - build.convertArrayToObject = function (ary) { - var result = {}, i, separatorIndex, prop, value, - needArray = { - "include": true, - "exclude": true, - "excludeShallow": true, - "insertRequire": true - }; - - for (i = 0; i < ary.length; i++) { - separatorIndex = ary[i].indexOf("="); - if (separatorIndex === -1) { - throw "Malformed name/value pair: [" + ary[i] + "]. Format should be name=value"; - } - - value = ary[i].substring(separatorIndex + 1, ary[i].length); - if (value === "true") { - value = true; - } else if (value === "false") { - value = false; - } - - prop = ary[i].substring(0, separatorIndex); - - //Convert to array if necessary - if (getOwn(needArray, prop)) { - value = value.split(","); - } - - if (build.hasDotPropMatch(prop)) { - stringDotToObj(result, prop, value); - } else { - result[prop] = value; - } - } - return result; //Object - }; - - build.makeAbsPath = function (path, absFilePath) { - //Add abspath if necessary. If path starts with a slash or has a colon, - //then already is an abolute path. - if (path.indexOf('/') !== 0 && path.indexOf(':') === -1) { - path = absFilePath + - (absFilePath.charAt(absFilePath.length - 1) === '/' ? '' : '/') + - path; - path = file.normalize(path); - } - return path.replace(lang.backSlashRegExp, '/'); - }; - - build.makeAbsObject = function (props, obj, absFilePath) { - var i, prop; - if (obj) { - for (i = 0; i < props.length; i++) { - prop = props[i]; - if (hasProp(obj, prop) && typeof obj[prop] === 'string') { - obj[prop] = build.makeAbsPath(obj[prop], absFilePath); - } - } - } - }; - - /** - * For any path in a possible config, make it absolute relative - * to the absFilePath passed in. - */ - build.makeAbsConfig = function (config, absFilePath) { - var props, prop, i; - - props = ["appDir", "dir", "baseUrl"]; - for (i = 0; i < props.length; i++) { - prop = props[i]; - - if (getOwn(config, prop)) { - //Add abspath if necessary, make sure these paths end in - //slashes - if (prop === "baseUrl") { - config.originalBaseUrl = config.baseUrl; - if (config.appDir) { - //If baseUrl with an appDir, the baseUrl is relative to - //the appDir, *not* the absFilePath. appDir and dir are - //made absolute before baseUrl, so this will work. - config.baseUrl = build.makeAbsPath(config.originalBaseUrl, config.appDir); - } else { - //The dir output baseUrl is same as regular baseUrl, both - //relative to the absFilePath. - config.baseUrl = build.makeAbsPath(config[prop], absFilePath); - } - } else { - config[prop] = build.makeAbsPath(config[prop], absFilePath); - } - - config[prop] = endsWithSlash(config[prop]); - } - } - - build.makeAbsObject(["out", "cssIn"], config, absFilePath); - build.makeAbsObject(["startFile", "endFile"], config.wrap, absFilePath); - }; - - build.nestedMix = { - paths: true, - has: true, - hasOnSave: true, - pragmas: true, - pragmasOnSave: true - }; - - /** - * Mixes additional source config into target config, and merges some - * nested config, like paths, correctly. - */ - function mixConfig(target, source) { - var prop, value; - - for (prop in source) { - if (hasProp(source, prop)) { - //If the value of the property is a plain object, then - //allow a one-level-deep mixing of it. - value = source[prop]; - if (typeof value === 'object' && value && - !lang.isArray(value) && !lang.isFunction(value) && - !lang.isRegExp(value)) { - target[prop] = lang.mixin({}, target[prop], value, true); - } else { - target[prop] = value; - } - } - } - } - - /** - * Converts a wrap.startFile or endFile to be start/end as a string. - * the startFile/endFile values can be arrays. - */ - function flattenWrapFile(wrap, keyName, absFilePath) { - var keyFileName = keyName + 'File'; - - if (typeof wrap[keyName] !== 'string' && wrap[keyFileName]) { - wrap[keyName] = ''; - if (typeof wrap[keyFileName] === 'string') { - wrap[keyFileName] = [wrap[keyFileName]]; - } - wrap[keyFileName].forEach(function (fileName) { - wrap[keyName] += (wrap[keyName] ? '\n' : '') + - file.readFile(build.makeAbsPath(fileName, absFilePath)); - }); - } else if (typeof wrap[keyName] !== 'string') { - throw new Error('wrap.' + keyName + ' or wrap.' + keyFileName + ' malformed'); - } - } - - /** - * Creates a config object for an optimization build. - * It will also read the build profile if it is available, to create - * the configuration. - * - * @param {Object} cfg config options that take priority - * over defaults and ones in the build file. These options could - * be from a command line, for instance. - * - * @param {Object} the created config object. - */ - build.createConfig = function (cfg) { - /*jslint evil: true */ - var config = {}, buildFileContents, buildFileConfig, mainConfig, - mainConfigFile, mainConfigPath, prop, buildFile, absFilePath; - - //Make sure all paths are relative to current directory. - absFilePath = file.absPath('.'); - build.makeAbsConfig(cfg, absFilePath); - build.makeAbsConfig(buildBaseConfig, absFilePath); - - lang.mixin(config, buildBaseConfig); - lang.mixin(config, cfg, true); - - if (config.buildFile) { - //A build file exists, load it to get more config. - buildFile = file.absPath(config.buildFile); - - //Find the build file, and make sure it exists, if this is a build - //that has a build profile, and not just command line args with an in=path - if (!file.exists(buildFile)) { - throw new Error("ERROR: build file does not exist: " + buildFile); - } - - absFilePath = config.baseUrl = file.absPath(file.parent(buildFile)); - - //Load build file options. - buildFileContents = file.readFile(buildFile); - try { - buildFileConfig = eval("(" + buildFileContents + ")"); - build.makeAbsConfig(buildFileConfig, absFilePath); - - //Mix in the config now so that items in mainConfigFile can - //be resolved relative to them if necessary, like if appDir - //is set here, but the baseUrl is in mainConfigFile. Will - //re-mix in the same build config later after mainConfigFile - //is processed, since build config should take priority. - mixConfig(config, buildFileConfig); - } catch (e) { - throw new Error("Build file " + buildFile + " is malformed: " + e); - } - } - - mainConfigFile = config.mainConfigFile || (buildFileConfig && buildFileConfig.mainConfigFile); - if (mainConfigFile) { - mainConfigFile = build.makeAbsPath(mainConfigFile, absFilePath); - if (!file.exists(mainConfigFile)) { - throw new Error(mainConfigFile + ' does not exist.'); - } - try { - mainConfig = parse.findConfig(mainConfigFile, file.readFile(mainConfigFile)); - } catch (configError) { - throw new Error('The config in mainConfigFile ' + - mainConfigFile + - ' cannot be used because it cannot be evaluated' + - ' correctly while running in the optimizer. Try only' + - ' using a config that is also valid JSON, or do not use' + - ' mainConfigFile and instead copy the config values needed' + - ' into a build file or command line arguments given to the optimizer.'); - } - if (mainConfig) { - mainConfigPath = mainConfigFile.substring(0, mainConfigFile.lastIndexOf('/')); - - //Add in some existing config, like appDir, since they can be - //used inside the mainConfigFile -- paths and baseUrl are - //relative to them. - if (config.appDir && !mainConfig.appDir) { - mainConfig.appDir = config.appDir; - } - - //If no baseUrl, then use the directory holding the main config. - if (!mainConfig.baseUrl) { - mainConfig.baseUrl = mainConfigPath; - } - - build.makeAbsConfig(mainConfig, mainConfigPath); - mixConfig(config, mainConfig); - } - } - - //Mix in build file config, but only after mainConfig has been mixed in. - if (buildFileConfig) { - mixConfig(config, buildFileConfig); - } - - //Re-apply the override config values. Command line - //args should take precedence over build file values. - mixConfig(config, cfg); - - //Fix paths to full paths so that they can be adjusted consistently - //lately to be in the output area. - lang.eachProp(config.paths, function (value, prop) { - if (lang.isArray(value)) { - throw new Error('paths fallback not supported in optimizer. ' + - 'Please provide a build config path override ' + - 'for ' + prop); - } - config.paths[prop] = build.makeAbsPath(value, config.baseUrl); - }); - - //Set final output dir - if (hasProp(config, "baseUrl")) { - if (config.appDir) { - config.dirBaseUrl = build.makeAbsPath(config.originalBaseUrl, config.dir); - } else { - config.dirBaseUrl = config.dir || config.baseUrl; - } - //Make sure dirBaseUrl ends in a slash, since it is - //concatenated with other strings. - config.dirBaseUrl = endsWithSlash(config.dirBaseUrl); - } - - //Check for errors in config - if (config.main) { - throw new Error('"main" passed as an option, but the ' + - 'supported option is called "name".'); - } - if (!config.name && !config.modules && !config.include && !config.cssIn) { - throw new Error('Missing either a "name", "include" or "modules" ' + - 'option'); - } - if (config.cssIn) { - if (config.dir || config.appDir) { - throw new Error('cssIn is only for the output of single file ' + - 'CSS optimizations and is not compatible with "dir" or "appDir" configuration.'); - } - if (!config.out) { - throw new Error('"out" option missing.'); - } - } - if (!config.cssIn && !config.baseUrl) { - //Just use the current directory as the baseUrl - config.baseUrl = './'; - } - if (!config.out && !config.dir) { - throw new Error('Missing either an "out" or "dir" config value. ' + - 'If using "appDir" for a full project optimization, ' + - 'use "dir". If you want to optimize to one file, ' + - 'use "out".'); - } - if (config.appDir && config.out) { - throw new Error('"appDir" is not compatible with "out". Use "dir" ' + - 'instead. appDir is used to copy whole projects, ' + - 'where "out" is used to just optimize to one file.'); - } - if (config.out && config.dir) { - throw new Error('The "out" and "dir" options are incompatible.' + - ' Use "out" if you are targeting a single file for' + - ' for optimization, and "dir" if you want the appDir' + - ' or baseUrl directories optimized.'); - } - - if (config.insertRequire && !lang.isArray(config.insertRequire)) { - throw new Error('insertRequire should be a list of module IDs' + - ' to insert in to a require([]) call.'); - } - - if (config.generateSourceMaps) { - if (config.preserveLicenseComments) { - throw new Error('Cannot use preserveLicenseComments and ' + - 'generateSourceMaps together. Either explcitly set ' + - 'preserveLicenseComments to false (default is true) or ' + - 'turn off generateSourceMaps. If you want source maps with ' + - 'license comments, see: ' + - 'http://requirejs.org/docs/errors.html#sourcemapcomments'); - } else if (config.optimize !== 'none' && - config.optimize !== 'closure' && - config.optimize !== 'uglify2') { - //Allow optimize: none to pass, since it is useful when toggling - //minification on and off to debug something, and it implicitly - //works, since it does not need a source map. - throw new Error('optimize: "' + config.optimize + - '" does not support generateSourceMaps.'); - } - } - - if ((config.name || config.include) && !config.modules) { - //Just need to build one file, but may be part of a whole appDir/ - //baseUrl copy, but specified on the command line, so cannot do - //the modules array setup. So create a modules section in that - //case. - config.modules = [ - { - name: config.name, - out: config.out, - create: config.create, - include: config.include, - exclude: config.exclude, - excludeShallow: config.excludeShallow, - insertRequire: config.insertRequire, - stubModules: config.stubModules - } - ]; - delete config.stubModules; - } else if (config.modules && config.out) { - throw new Error('If the "modules" option is used, then there ' + - 'should be a "dir" option set and "out" should ' + - 'not be used since "out" is only for single file ' + - 'optimization output.'); - } else if (config.modules && config.name) { - throw new Error('"name" and "modules" options are incompatible. ' + - 'Either use "name" if doing a single file ' + - 'optimization, or "modules" if you want to target ' + - 'more than one file for optimization.'); - } - - if (config.out && !config.cssIn) { - //Just one file to optimize. - - //Does not have a build file, so set up some defaults. - //Optimizing CSS should not be allowed, unless explicitly - //asked for on command line. In that case the only task is - //to optimize a CSS file. - if (!cfg.optimizeCss) { - config.optimizeCss = "none"; - } - } - - //Cycle through modules and combine any local stubModules with - //global values. - if (config.modules && config.modules.length) { - config.modules.forEach(function (mod) { - if (config.stubModules) { - mod.stubModules = config.stubModules.concat(mod.stubModules || []); - } - - //Create a hash lookup for the stubModules config to make lookup - //cheaper later. - if (mod.stubModules) { - mod.stubModules._byName = {}; - mod.stubModules.forEach(function (id) { - mod.stubModules._byName[id] = true; - }); - } - }); - } - - //Get any wrap text. - try { - if (config.wrap) { - if (config.wrap === true) { - //Use default values. - config.wrap = { - start: '(function () {', - end: '}());' - }; - } else { - flattenWrapFile(config.wrap, 'start', absFilePath); - flattenWrapFile(config.wrap, 'end', absFilePath); - } - } - } catch (wrapError) { - throw new Error('Malformed wrap config: need both start/end or ' + - 'startFile/endFile: ' + wrapError.toString()); - } - - //Do final input verification - if (config.context) { - throw new Error('The build argument "context" is not supported' + - ' in a build. It should only be used in web' + - ' pages.'); - } - - //Set up normalizeDirDefines. If not explicitly set, if optimize "none", - //set to "skip" otherwise set to "all". - if (!hasProp(config, 'normalizeDirDefines')) { - if (config.optimize === 'none' || config.skipDirOptimize) { - config.normalizeDirDefines = 'skip'; - } else { - config.normalizeDirDefines = 'all'; - } - } - - //Set file.fileExclusionRegExp if desired - if (hasProp(config, 'fileExclusionRegExp')) { - if (typeof config.fileExclusionRegExp === "string") { - file.exclusionRegExp = new RegExp(config.fileExclusionRegExp); - } else { - file.exclusionRegExp = config.fileExclusionRegExp; - } - } else if (hasProp(config, 'dirExclusionRegExp')) { - //Set file.dirExclusionRegExp if desired, this is the old - //name for fileExclusionRegExp before 1.0.2. Support for backwards - //compatibility - file.exclusionRegExp = config.dirExclusionRegExp; - } - - //Remove things that may cause problems in the build. - delete config.jQuery; - delete config.enforceDefine; - delete config.urlArgs; - - return config; - }; - - /** - * finds the module being built/optimized with the given moduleName, - * or returns null. - * @param {String} moduleName - * @param {Array} modules - * @returns {Object} the module object from the build profile, or null. - */ - build.findBuildModule = function (moduleName, modules) { - var i, module; - for (i = 0; i < modules.length; i++) { - module = modules[i]; - if (module.name === moduleName) { - return module; - } - } - return null; - }; - - /** - * Removes a module name and path from a layer, if it is supposed to be - * excluded from the layer. - * @param {String} moduleName the name of the module - * @param {String} path the file path for the module - * @param {Object} layer the layer to remove the module/path from - */ - build.removeModulePath = function (module, path, layer) { - var index = layer.buildFilePaths.indexOf(path); - if (index !== -1) { - layer.buildFilePaths.splice(index, 1); - } - }; - - /** - * Uses the module build config object to trace the dependencies for the - * given module. - * - * @param {Object} module the module object from the build config info. - * @param {Object} the build config object. - * - * @returns {Object} layer information about what paths and modules should - * be in the flattened module. - */ - build.traceDependencies = function (module, config) { - var include, override, layer, context, baseConfig, oldContext, - registry, id, idParts, pluginId, mod, errUrl, - errMessage = '', - failedPluginMap = {}, - failedPluginIds = [], - errIds = [], - errUrlMap = {}, - errUrlConflicts = {}, - hasErrUrl = false, - deferred = prim(); - - //Reset some state set up in requirePatch.js, and clean up require's - //current context. - oldContext = require._buildReset(); - - //Grab the reset layer and context after the reset, but keep the - //old config to reuse in the new context. - baseConfig = oldContext.config; - layer = require._layer; - context = layer.context; - - //Put back basic config, use a fresh object for it. - //WARNING: probably not robust for paths and packages/packagePaths, - //since those property's objects can be modified. But for basic - //config clone it works out. - require(lang.mixin({}, baseConfig, true)); - - logger.trace("\nTracing dependencies for: " + (module.name || module.out)); - include = module.name && !module.create ? [module.name] : []; - if (module.include) { - include = include.concat(module.include); - } - - //If there are overrides to basic config, set that up now.; - if (module.override) { - override = lang.mixin({}, baseConfig, true); - lang.mixin(override, module.override, true); - require(override); - } - - //Figure out module layer dependencies by calling require to do the work. - //Configure the callbacks to be called. - deferred.resolve.__requireJsBuild = true; - deferred.reject.__requireJsBuild = true; - require(include, deferred.resolve, deferred.reject); - - return deferred.promise.then(function () { - var id, prop; - - //Reset config - if (module.override) { - require(baseConfig); - } - - //Check to see if it all loaded. If not, then stop, and give - //a message on what is left. - registry = context.registry; - for (id in registry) { - if (hasProp(registry, id) && id.indexOf('_@r') !== 0) { - mod = getOwn(registry, id); - if (id.indexOf('_unnormalized') === -1 && mod && mod.enabled) { - errIds.push(id); - errUrl = mod.map.url; - - if (errUrlMap[errUrl]) { - hasErrUrl = true; - //This error module has the same URL as another - //error module, could be misconfiguration. - if (!errUrlConflicts[errUrl]) { - errUrlConflicts[errUrl] = []; - //Store the original module that had the same URL. - errUrlConflicts[errUrl].push(errUrlMap[errUrl]); - } - errUrlConflicts[errUrl].push(id); - } else { - errUrlMap[errUrl] = id; - } - } - - //Look for plugins that did not call load() - idParts = id.split('!'); - pluginId = idParts[0]; - if (idParts.length > 1 && falseProp(failedPluginMap, pluginId)) { - failedPluginIds.push(pluginId); - failedPluginMap[pluginId] = true; - } - } - } - - if (errIds.length || failedPluginIds.length) { - if (failedPluginIds.length) { - errMessage += 'Loader plugin' + - (failedPluginIds.length === 1 ? '' : 's') + - ' did not call ' + - 'the load callback in the build: ' + - failedPluginIds.join(', ') + '\n'; - } - errMessage += 'Module loading did not complete for: ' + errIds.join(', '); - - if (hasErrUrl) { - errMessage += '\nThe following modules share the same URL. This ' + - 'could be a misconfiguration if that URL only has ' + - 'one anonymous module in it:'; - for (prop in errUrlConflicts) { - if (hasProp(errUrlConflicts, prop)) { - errMessage += '\n' + prop + ': ' + - errUrlConflicts[prop].join(', '); - } - } - } - throw new Error(errMessage); - } - - return layer; - }); - }; - - build.createOverrideConfig = function (config, override) { - var cfg = {}; - - lang.mixin(cfg, config, true); - lang.eachProp(override, function (value, prop) { - if (hasProp(build.objProps, prop)) { - //An object property, merge keys. Start a new object - //so that source object in config does not get modified. - cfg[prop] = {}; - lang.mixin(cfg[prop], config[prop], true); - lang.mixin(cfg[prop], override[prop], true); - } else { - cfg[prop] = override[prop]; - } - }); - return cfg; - }; - - /** - * Uses the module build config object to create an flattened version - * of the module, with deep dependencies included. - * - * @param {Object} module the module object from the build config info. - * - * @param {Object} layer the layer object returned from build.traceDependencies. - * - * @param {Object} the build config object. - * - * @returns {Object} with two properties: "text", the text of the flattened - * module, and "buildText", a string of text representing which files were - * included in the flattened module text. - */ - build.flattenModule = function (module, layer, config) { - var fileContents, - buildFileContents = ''; - - return prim().start(function () { - var path, reqIndex, currContents, - i, moduleName, shim, packageConfig, - parts, builder, writeApi, tempPragmas, - namespace, namespaceWithDot, stubModulesByName, - newConfig = {}, - context = layer.context, - onLayerEnds = [], - onLayerEndAdded = {}; - - //Use override settings, particularly for pragmas - //Do this before the var readings since it reads config values. - if (module.override) { - config = build.createOverrideConfig(config, module.override); - } - - namespace = config.namespace || ''; - namespaceWithDot = namespace ? namespace + '.' : ''; - stubModulesByName = (module.stubModules && module.stubModules._byName) || {}; - - //Start build output for the module. - buildFileContents += "\n" + - (config.dir ? module._buildPath.replace(config.dir, "") : module._buildPath) + - "\n----------------\n"; - - //If there was an existing file with require in it, hoist to the top. - if (layer.existingRequireUrl) { - reqIndex = layer.buildFilePaths.indexOf(layer.existingRequireUrl); - if (reqIndex !== -1) { - layer.buildFilePaths.splice(reqIndex, 1); - layer.buildFilePaths.unshift(layer.existingRequireUrl); - } - } - - //Write the built module to disk, and build up the build output. - fileContents = ""; - return prim.serial(layer.buildFilePaths.map(function (path) { - return function () { - moduleName = layer.buildFileToModule[path]; - //If the moduleName is for a package main, then update it to the - //real main value. - packageConfig = layer.context.config.pkgs && - getOwn(layer.context.config.pkgs, moduleName); - if (packageConfig) { - moduleName += '/' + packageConfig.main; - } - - return prim().start(function () { - //Figure out if the module is a result of a build plugin, and if so, - //then delegate to that plugin. - parts = context.makeModuleMap(moduleName); - builder = parts.prefix && getOwn(context.defined, parts.prefix); - if (builder) { - if (builder.onLayerEnd && falseProp(onLayerEndAdded, parts.prefix)) { - onLayerEnds.push(builder); - onLayerEndAdded[parts.prefix] = true; - } - - if (builder.write) { - writeApi = function (input) { - fileContents += "\n" + addSemiColon(input); - if (config.onBuildWrite) { - fileContents = config.onBuildWrite(moduleName, path, fileContents); - } - }; - writeApi.asModule = function (moduleName, input) { - fileContents += "\n" + - addSemiColon(build.toTransport(namespace, moduleName, path, input, layer, { - useSourceUrl: layer.context.config.useSourceUrl - })); - if (config.onBuildWrite) { - fileContents = config.onBuildWrite(moduleName, path, fileContents); - } - }; - builder.write(parts.prefix, parts.name, writeApi); - } - return; - } else { - return prim().start(function () { - if (hasProp(stubModulesByName, moduleName)) { - //Just want to insert a simple module definition instead - //of the source module. Useful for plugins that inline - //all their resources. - if (hasProp(layer.context.plugins, moduleName)) { - //Slightly different content for plugins, to indicate - //that dynamic loading will not work. - return 'define({load: function(id){throw new Error("Dynamic load not allowed: " + id);}});'; - } else { - return 'define({});'; - } - } else { - return require._cacheReadAsync(path); - } - }).then(function (text) { - currContents = text; - - if (config.cjsTranslate) { - currContents = commonJs.convert(path, currContents); - } - - if (config.onBuildRead) { - currContents = config.onBuildRead(moduleName, path, currContents); - } - - if (namespace) { - currContents = pragma.namespace(currContents, namespace); - } - - currContents = build.toTransport(namespace, moduleName, path, currContents, layer, { - useSourceUrl: config.useSourceUrl - }); - - if (packageConfig) { - currContents = addSemiColon(currContents) + '\n'; - currContents += namespaceWithDot + "define('" + - packageConfig.name + "', ['" + moduleName + - "'], function (main) { return main; });\n"; - } - - if (config.onBuildWrite) { - currContents = config.onBuildWrite(moduleName, path, currContents); - } - - //Semicolon is for files that are not well formed when - //concatenated with other content. - fileContents += "\n" + addSemiColon(currContents); - }); - } - }).then(function () { - buildFileContents += path.replace(config.dir, "") + "\n"; - //Some files may not have declared a require module, and if so, - //put in a placeholder call so the require does not try to load them - //after the module is processed. - //If we have a name, but no defined module, then add in the placeholder. - if (moduleName && falseProp(layer.modulesWithNames, moduleName) && !config.skipModuleInsertion) { - shim = config.shim && getOwn(config.shim, moduleName); - if (shim) { - fileContents += '\n' + namespaceWithDot + 'define("' + moduleName + '", ' + - (shim.deps && shim.deps.length ? - build.makeJsArrayString(shim.deps) + ', ' : '') + - (shim.exportsFn ? shim.exportsFn() : 'function(){}') + - ');\n'; - } else { - fileContents += '\n' + namespaceWithDot + 'define("' + moduleName + '", function(){});\n'; - } - } - }); - }; - })).then(function () { - if (onLayerEnds.length) { - onLayerEnds.forEach(function (builder) { - var path; - if (typeof module.out === 'string') { - path = module.out; - } else if (typeof module._buildPath === 'string') { - path = module._buildPath; - } - builder.onLayerEnd(function (input) { - fileContents += "\n" + addSemiColon(input); - }, { - name: module.name, - path: path - }); - }); - } - - //Add a require at the end to kick start module execution, if that - //was desired. Usually this is only specified when using small shim - //loaders like almond. - if (module.insertRequire) { - fileContents += '\n' + namespaceWithDot + 'require(["' + module.insertRequire.join('", "') + '"]);\n'; - } - }); - }).then(function () { - return { - text: config.wrap ? - config.wrap.start + fileContents + config.wrap.end : - fileContents, - buildText: buildFileContents - }; - }); - }; - - //Converts an JS array of strings to a string representation. - //Not using JSON.stringify() for Rhino's sake. - build.makeJsArrayString = function (ary) { - return '["' + ary.map(function (item) { - //Escape any double quotes, backslashes - return lang.jsEscape(item); - }).join('","') + '"]'; - }; - - build.toTransport = function (namespace, moduleName, path, contents, layer, options) { - var baseUrl = layer && layer.context.config.baseUrl; - - function onFound(info) { - //Only mark this module as having a name if not a named module, - //or if a named module and the name matches expectations. - if (layer && (info.needsId || info.foundId === moduleName)) { - layer.modulesWithNames[moduleName] = true; - } - } - - //Convert path to be a local one to the baseUrl, useful for - //useSourceUrl. - if (baseUrl) { - path = path.replace(baseUrl, ''); - } - - return transform.toTransport(namespace, moduleName, path, contents, onFound, options); - }; - - return build; -}); - - } - - - /** - * Sets the default baseUrl for requirejs to be directory of top level - * script. - */ - function setBaseUrl(fileName) { - //Use the file name's directory as the baseUrl if available. - dir = fileName.replace(/\\/g, '/'); - if (dir.indexOf('/') !== -1) { - dir = dir.split('/'); - dir.pop(); - dir = dir.join('/'); - exec("require({baseUrl: '" + dir + "'});"); - } - } - - function createRjsApi() { - //Create a method that will run the optimzer given an object - //config. - requirejs.optimize = function (config, callback, errback) { - if (!loadedOptimizedLib) { - loadLib(); - loadedOptimizedLib = true; - } - - //Create the function that will be called once build modules - //have been loaded. - var runBuild = function (build, logger) { - //Make sure config has a log level, and if not, - //make it "silent" by default. - config.logLevel = config.hasOwnProperty('logLevel') ? - config.logLevel : logger.SILENT; - - //Reset build internals first in case this is part - //of a long-running server process that could have - //exceptioned out in a bad state. It is only defined - //after the first call though. - if (requirejs._buildReset) { - requirejs._buildReset(); - requirejs._cacheReset(); - } - - function done(result) { - //And clean up, in case something else triggers - //a build in another pathway. - if (requirejs._buildReset) { - requirejs._buildReset(); - requirejs._cacheReset(); - } - - return result; - } - - build(config).then(done, done).then(callback, errback); - }; - - requirejs({ - context: 'build' - }, ['build', 'logger'], runBuild); - }; - - requirejs.tools = { - useLib: function (contextName, callback) { - if (!callback) { - callback = contextName; - contextName = 'uselib'; - } - - if (!useLibLoaded[contextName]) { - loadLib(); - useLibLoaded[contextName] = true; - } - - var req = requirejs({ - context: contextName - }); - - req(['build'], function () { - callback(req); - }); - } - }; - - requirejs.define = define; - } - - //If in Node, and included via a require('requirejs'), just export and - //THROW IT ON THE GROUND! - if (env === 'node' && reqMain !== module) { - setBaseUrl(path.resolve(reqMain ? reqMain.filename : '.')); - - createRjsApi(); - - module.exports = requirejs; - return; - } else if (env === 'browser') { - //Only option is to use the API. - setBaseUrl(location.href); - createRjsApi(); - return; - } - - if (commandOption === 'o') { - //Do the optimizer work. - loadLib(); - - /** - * @license Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/* - * Create a build.js file that has the build options you want and pass that - * build file to this file to do the build. See example.build.js for more information. - */ - -/*jslint strict: false, nomen: false */ -/*global require: false */ - -require({ - baseUrl: require.s.contexts._.config.baseUrl, - //Use a separate context than the default context so that the - //build can use the default context. - context: 'build', - catchError: { - define: true - } -}, ['env!env/args', 'build'], -function (args, build) { - build(args); -}); - - - } else if (commandOption === 'v') { - console.log('r.js: ' + version + ', RequireJS: ' + this.requirejsVars.require.version); - } else if (commandOption === 'convert') { - loadLib(); - - this.requirejsVars.require(['env!env/args', 'commonJs', 'env!env/print'], - function (args, commonJs, print) { - - var srcDir, outDir; - srcDir = args[0]; - outDir = args[1]; - - if (!srcDir || !outDir) { - print('Usage: path/to/commonjs/modules output/dir'); - return; - } - - commonJs.convertDir(args[0], args[1]); - }); - } else { - //Just run an app - - //Load the bundled libraries for use in the app. - if (commandOption === 'lib') { - loadLib(); - } - - setBaseUrl(fileName); - - if (exists(fileName)) { - exec(readFile(fileName), fileName); - } else { - showHelp(); - } - } - -}((typeof console !== 'undefined' ? console : undefined), - (typeof Packages !== 'undefined' ? Array.prototype.slice.call(arguments, 0) : []), - (typeof readFile !== 'undefined' ? readFile : undefined))); diff --git a/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js b/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js deleted file mode 100644 index 99c49309..00000000 --- a/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js +++ /dev/null @@ -1,2 +0,0 @@ -var requirejs,require,define;(function(n,t,i){function rt(){n.log("See https://github.com/jrburke/r.js for usage.")}function h(){var t,i;(function(){var t=/(\/|^)env\/|\{env\}/,n="unknown";typeof Packages!="undefined"?n="rhino":typeof process!="undefined"?n="node":(typeof navigator!="undefined"&&typeof document!="undefined"||typeof importScripts!="undefined"&&typeof self!="undefined")&&(n="browser"),define("env",{load:function(i,r,u,f){f.env&&(n=f.env),i=i.replace(t,function(t,i){return t.indexOf("{")===-1?i+n+"/":n}),r([i],function(n){u(n)})}})})(),define("lang",function(){"use strict";function t(n,t){return i.call(n,t)}var n,i=Object.prototype.hasOwnProperty;return n={backSlashRegExp:/\\/g,ostring:Object.prototype.toString,isArray:Array.isArray||function(t){return n.ostring.call(t)==="[object Array]"},isFunction:function(t){return n.ostring.call(t)==="[object Function]"},isRegExp:function(n){return n&&n instanceof RegExp},hasProp:t,falseProp:function(n,i){return!t(n,i)||!n[i]},getOwn:function(n,i){return t(n,i)&&n[i]},_mixin:function(n,t,i){var r;for(r in t)t.hasOwnProperty(r)&&(i||!n.hasOwnProperty(r))&&(n[r]=t[r]);return n},mixin:function(t){var i=Array.prototype.slice.call(arguments),u,r,f;for(t||(t={}),i.length>2&&typeof arguments[i.length-1]=="boolean"&&(u=i.pop()),r=1,f=i.length;r400?r.reject(new Error("Status: "+i.status+": "+i.statusText)):r.resolve(i.responseText))},r.promise},saveUtf8File:function(n,t){i.saveFile(n,t,"utf8")},saveFile:function(n,t,i){requirejs.browser.saveFile(n,t,i)},deleteFile:function(){n.log("file.deleteFile is no-op in browser")},deleteEmptyDirs:function(){n.log("file.deleteEmptyDirs is no-op in browser")}}}),r==="node"&&define("node/file",["fs","path","prim"],function(n,t,i){function u(n){return n.replace(/\\/g,"/")}function e(t){f&&t.charAt(t.length-1)==="/"&&t.charAt(t.length-2)!==":"&&(t=t.substring(0,t.length-1));try{return n.statSync(t),!0}catch(i){return!1}}function h(t){e(t)||f&&s.test(t)||n.mkdirSync(t,511)}function o(n){var i=n.split("/"),t="",r=!0;i.forEach(function(n){t+=n+"/",r=!1,n&&h(t)})}var f=process.platform==="win32",s=/^[a-zA-Z]\:\/$/,r;return r={backSlashRegExp:/\\/g,exclusionRegExp:/^\./,getLineSeparator:function(){return"/"},exists:function(n){return e(n)},parent:function(n){var t=n.split("/");return t.pop(),t.join("/")},absPath:function(i){return u(t.normalize(u(n.realpathSync(i))))},normalize:function(n){return u(t.normalize(n))},isFile:function(t){return n.statSync(t).isFile()},isDirectory:function(t){return n.statSync(t).isDirectory()},getFilteredFileList:function(i,f,e){var h=[],c,v,y,p,l,w,o,s,b,a;if(c=i,v=f.include||f,y=f.exclude||null,r.exists(c))for(p=n.readdirSync(c),l=0;l=n.statSync(i).mtime.getTime()?!1:(e=t.dirname(u),r.exists(e)||o(e),n.writeFileSync(u,n.readFileSync(i,"binary"),"binary"),!0)},renameFile:function(t,i){return n.renameSync(t,i)},readFile:function(t,i){i==="utf-8"&&(i="utf8"),i||(i="utf8");var r=n.readFileSync(t,i);return r.indexOf("")===0&&(r=r.substring(1,r.length)),r},readFileAsync:function(n,t){var u=i();try{u.resolve(r.readFile(n,t))}catch(f){u.reject(f)}return u.promise},saveUtf8File:function(n,t){r.saveFile(n,t,"utf8")},saveFile:function(i,u,f){var e;f==="utf-8"&&(f="utf8"),f||(f="utf8"),e=t.dirname(i),r.exists(e)||o(e),n.writeFileSync(i,u,f)},deleteFile:function(i){var f,u,e;if(r.exists(i))if(e=n.statSync(i),e.isDirectory()){for(f=n.readdirSync(i),u=0;u=o.lastModified()))return!1;if(r=f.getParentFile(),!r.exists()&&!r.mkdirs())throw"Could not create directory: "+r.getCanonicalPath();return u=new java.io.FileInputStream(n).getChannel(),e=new java.io.FileOutputStream(t).getChannel(),e.transferFrom(u,0,u.size()),u.close(),e.close(),!0},renameFile:function(n,t){return new java.io.File(n).renameTo(new java.io.File(t))},readFile:function(n,i){i=i||"utf-8";var e=new java.io.File(n),f=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(e),i)),u,r;try{for(u=new java.lang.StringBuffer,r=f.readLine(),r&&r.length()&&r.charAt(0)===65279&&(r=r.substring(1));r!==null;)u.append(r),u.append(t.lineSeparator),r=f.readLine();return String(u.toString())}finally{f.close()}},readFileAsync:function(i,r){var u=n();try{u.resolve(t.readFile(i,r))}catch(f){u.reject(f)}return u.promise},saveUtf8File:function(n,i){t.saveFile(n,i,"utf-8")},saveFile:function(n,t,i){var u=new java.io.File(n),e,r,f;if(r=u.getAbsoluteFile().getParentFile(),!r.exists()&&!r.mkdirs())throw"Could not create directory: "+r.getAbsolutePath();e=i?new java.io.OutputStreamWriter(new java.io.FileOutputStream(u),i):new java.io.OutputStreamWriter(new java.io.FileOutputStream(u)),f=new java.io.BufferedWriter(e);try{f.write(t)}finally{f.close()}},deleteFile:function(n){var t=new java.io.File(n),r,i;if(t.exists()){if(t.isDirectory())for(r=t.listFiles(),i=0;i=0}function dr(n){return"0123456789abcdefABCDEF".indexOf(n)>=0}function ni(n){return"01234567".indexOf(n)>=0}function gr(n){return n===" "||n==="\t"||n==="\x0b"||n==="\f"||n===" "||n.charCodeAt(0)>=5760&&" ᠎              ".indexOf(n)>=0}function et(n){return n==="\n"||n==="\r"||n==="\u2028"||n==="\u2029"}function bt(n){return n==="$"||n==="_"||n==="\\"||n>="a"&&n<="z"||n>="A"&&n<="Z"||n.charCodeAt(0)>=128&&pr.NonAsciiIdentifierStart.test(n)}function wr(n){return n==="$"||n==="_"||n==="\\"||n>="a"&&n<="z"||n>="A"&&n<="Z"||n>="0"&&n<="9"||n.charCodeAt(0)>=128&&pr.NonAsciiIdentifierPart.test(n)}function nu(n){switch(n){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0}return!1}function kt(n){switch(n){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0}return!1}function nt(n){return n==="eval"||n==="arguments"}function iu(n){var t=!1;switch(n.length){case 2:t=n==="if"||n==="in"||n==="do";break;case 3:t=n==="var"||n==="for"||n==="new"||n==="try";break;case 4:t=n==="this"||n==="else"||n==="case"||n==="void"||n==="with";break;case 5:t=n==="while"||n==="break"||n==="catch"||n==="throw";break;case 6:t=n==="return"||n==="typeof"||n==="delete"||n==="switch";break;case 7:t=n==="default"||n==="finally";break;case 8:t=n==="function"||n==="continue"||n==="debugger";break;case 10:t=n==="instanceof"}if(t)return!0;switch(n){case"const":return!0;case"yield":case"let":return!0}return p&&kt(n)?!0:nu(n)}function w(){return s[t++]}function ht(){for(var n,i=!1,r=!1;t=a&&o({},u.UnexpectedToken,"ILLEGAL")):(n=w(),t>=a&&o({},u.UnexpectedToken,"ILLEGAL"),n==="*"&&(n=s[t],n==="/"&&(++t,i=!1)));else if(n==="/")if(n=s[t+1],n==="/")t+=2,r=!0;else if(n==="*")t+=2,i=!0,t>=a&&o({},u.UnexpectedToken,"ILLEGAL");else break;else if(gr(n))++t;else if(et(n))++t,n==="\r"&&s[t]==="\n"&&++t,++v,y=t;else break}function gi(n){for(var f,r=0,u=n==="u"?4:2,i=0;i"&&i===">"&&u===">"&&f==="=")?(t+=4,{type:e.Punctuator,value:">>>=",lineNumber:v,lineStart:y,range:[r,t]}):n==="="&&i==="="&&u==="="?(t+=3,{type:e.Punctuator,value:"===",lineNumber:v,lineStart:y,range:[r,t]}):n==="!"&&i==="="&&u==="="?(t+=3,{type:e.Punctuator,value:"!==",lineNumber:v,lineStart:y,range:[r,t]}):n===">"&&i===">"&&u===">"?(t+=3,{type:e.Punctuator,value:">>>",lineNumber:v,lineStart:y,range:[r,t]}):n==="<"&&i==="<"&&u==="="?(t+=3,{type:e.Punctuator,value:"<<=",lineNumber:v,lineStart:y,range:[r,t]}):n===">"&&i===">"&&u==="="?(t+=3,{type:e.Punctuator,value:">>=",lineNumber:v,lineStart:y,range:[r,t]}):i==="="&&"<>=!+-*%&|^/".indexOf(n)>=0?(t+=2,{type:e.Punctuator,value:n+i,lineNumber:v,lineStart:y,range:[r,t]}):n===i&&"+-<>&|".indexOf(n)>=0&&"+-<>&|".indexOf(i)>=0?(t+=2,{type:e.Punctuator,value:n+i,lineNumber:v,lineStart:y,range:[r,t]}):"[]<>+-*%&|^!~?:=/".indexOf(n)>=0?{type:e.Punctuator,value:w(),lineNumber:v,lineStart:y,range:[r,t]}:void 0}function fu(){var i,r,n;if(n=s[t],di(st(n)||n===".","Numeric literal must start with a decimal digit or a decimal point"),r=t,i="",n!=="."){if(i=w(),n=s[t],i==="0"){if(n==="x"||n==="X"){for(i+=w();t=a&&(n=""),o({},u.UnexpectedToken,"ILLEGAL");return t=0&&t=a)return{type:e.EOF,lineNumber:v,lineStart:y,range:[t,t]};if(n=uu(),typeof n!="undefined")return n;if(i=s[t],i==="'"||i==='"')return eu();if(i==="."||st(i))return fu();if(n=ru(),typeof n!="undefined")return n;o({},u.UnexpectedToken,"ILLEGAL")}function l(){var n;return it?(t=it.range[1],v=it.lineNumber,y=it.lineStart,n=it,it=null,n):(it=null,ti())}function g(){var n,i,r;return it!==null?it:(n=t,i=v,r=y,it=ti(),t=n,v=i,y=r,it)}function ii(){var i,n,r,u;return i=t,n=v,r=y,ht(),u=v!==n,t=i,v=n,y=r,u}function o(n,i){var r,f=Array.prototype.slice.call(arguments,2),u=i.replace(/%(\d)/g,function(n,t){return f[t]||""});typeof n.lineNumber=="number"?(r=new Error("Line "+n.lineNumber+": "+u),r.index=n.range[0],r.lineNumber=n.lineNumber,r.column=n.range[0]-y+1):(r=new Error("Line "+v+": "+u),r.index=t,r.lineNumber=v,r.column=t-y+1);throw r;}function yt(){try{o.apply(null,arguments)}catch(n){if(i.errors)i.errors.push(n);else throw n;}}function ct(n){n.type===e.EOF&&o(n,u.UnexpectedEOS),n.type===e.NumericLiteral&&o(n,u.UnexpectedNumber),n.type===e.StringLiteral&&o(n,u.UnexpectedString),n.type===e.Identifier&&o(n,u.UnexpectedIdentifier),n.type===e.Keyword&&(nu(n.value)?o(n,u.UnexpectedReserved):p&&kt(n.value)&&o(n,u.StrictReservedWord),o(n,u.UnexpectedToken,n.value)),o(n,u.UnexpectedToken,n.value)}function c(n){var t=l();(t.type!==e.Punctuator||t.value!==n)&&ct(t)}function k(n){var t=l();(t.type!==e.Keyword||t.value!==n)&&ct(t)}function f(n){var t=g();return t.type===e.Punctuator&&t.value===n}function d(n){var t=g();return t.type===e.Keyword&&t.value===n}function su(){var t=g(),n=t.value;return t.type!==e.Punctuator?!1:n==="="||n==="*="||n==="/="||n==="%="||n==="+="||n==="-="||n==="<<="||n===">>="||n===">>>="||n==="&="||n==="^="||n==="|="}function ot(){var n,i;if(s[t]===";"){l();return}if(i=v,ht(),v===i){if(f(";")){l();return}n=g(),n.type===e.EOF||f("}")||ct(n);return}}function tr(n){return n.type===r.Identifier||n.type===r.MemberExpression}function hu(){var n=[],t;for(c("[");!f("]");)f(",")?(l(),n.push(t)):(n.push(tt()),f("]")||c(","));return c("]"),{type:r.ArrayExpression,elements:n}}function ri(n,t){var i,f;return i=p,f=dt(),t&&p&&nt(n[0].name)&&o(t,u.StrictParamName),p=i,{type:r.FunctionExpression,id:null,params:n,body:f}}function pt(){var n=l();return n.type===e.StringLiteral||n.type===e.NumericLiteral?(p&&n.octal&&o(n,u.StrictOctalLiteral),vt(n)):{type:r.Identifier,name:n.value}}function ir(){var n,t,i,u;if(n=g(),n.type===e.Identifier)return i=pt(),n.value!=="get"||f(":")?n.value!=="set"||f(":")?(c(":"),{type:r.Property,key:i,value:tt(),kind:"init"}):(t=pt(),c("("),n=g(),n.type!==e.Identifier&&ct(l()),u=[ut()],c(")"),{type:r.Property,key:t,value:ri(u,n),kind:"set"}):(t=pt(),c("("),c(")"),{type:r.Property,key:t,value:ri([]),kind:"get"});if(n.type===e.EOF||n.type===e.Punctuator)ct(n);else return t=pt(),c(":"),{type:r.Property,key:t,value:tt(),kind:"init"}}function cu(){var s=[],n,i,t,e={},h=String;for(c("{");!f("}");)n=ir(),i=n.key.type===r.Identifier?n.key.name:h(n.key.value),t=n.kind==="init"?lt.Data:n.kind==="get"?lt.Get:lt.Set,Object.prototype.hasOwnProperty.call(e,i)?(e[i]===lt.Data?p&&t===lt.Data?yt({},u.StrictDuplicateProperty):t!==lt.Data&&o({},u.AccessorDataProperty):t===lt.Data?o({},u.AccessorDataProperty):e[i]&t&&o({},u.AccessorGetSet),e[i]|=t):e[i]=t,s.push(n),f("}")||c(",");return c("}"),{type:r.ObjectExpression,properties:s}}function ui(){var i,n=g(),t=n.type;if(t===e.Identifier)return{type:r.Identifier,name:l().value};if(t===e.StringLiteral||t===e.NumericLiteral)return p&&n.octal&&yt(n,u.StrictOctalLiteral),vt(l());if(t===e.Keyword){if(d("this"))return l(),{type:r.ThisExpression};if(d("function"))return vr()}return t===e.BooleanLiteral?(l(),n.value=n.value==="true",vt(n)):t===e.NullLiteral?(l(),n.value=null,vt(n)):f("[")?hu():f("{")?cu():f("(")?(l(),h.lastParenthesized=i=b(),c(")"),i):f("/")||f("/=")?vt(nr()):ct(l())}function tu(){var n=[];if(c("("),!f(")"))while(t>")||f(">>>");)n={type:r.BinaryExpression,operator:l().value,left:n,right:hi()};return n}function li(){var n,t;for(t=h.allowIn,h.allowIn=!0,n=ci();f("<")||f(">")||f("<=")||f(">=")||t&&d("in")||d("instanceof");)n={type:r.BinaryExpression,operator:l().value,left:n,right:ci()};return h.allowIn=t,n}function ai(){for(var n=li();f("==")||f("!=")||f("===")||f("!==");)n={type:r.BinaryExpression,operator:l().value,left:n,right:li()};return n}function vi(){for(var n=ai();f("&");)l(),n={type:r.BinaryExpression,operator:"&",left:n,right:ai()};return n}function yi(){for(var n=vi();f("^");)l(),n={type:r.BinaryExpression,operator:"^",left:n,right:vi()};return n}function pi(){for(var n=yi();f("|");)l(),n={type:r.BinaryExpression,operator:"|",left:n,right:yi()};return n}function wi(){for(var n=pi();f("&&");)l(),n={type:r.LogicalExpression,operator:"&&",left:n,right:pi()};return n}function er(){for(var n=wi();f("||");)l(),n={type:r.LogicalExpression,operator:"||",left:n,right:wi()};return n}function or(){var n,t,i;return n=er(),f("?")&&(l(),t=h.allowIn,h.allowIn=!0,i=tt(),h.allowIn=t,c(":"),n={type:r.ConditionalExpression,test:n,consequent:i,alternate:tt()}),n}function tt(){var n;return n=or(),su()&&(tr(n)||o({},u.InvalidLHSInAssignment),p&&n.type===r.Identifier&&nt(n.name)&&o({},u.StrictLHSAssignment),n={type:r.AssignmentExpression,operator:l().value,left:n,right:tt()}),n}function b(){var n=tt();if(f(","))for(n={type:r.SequenceExpression,expressions:[n]};t0&&i.comments[i.comments.length-1].range[1]>n)||i.comments.push({range:[n,t],type:r,value:u})}function cf(){var i,n,r,e,f;for(i="",e=!1,f=!1;t=a?(f=!1,i+=n,kr(r,t,"Line",i)):et(n)?(f=!1,kr(r,t,"Line",i),n==="\r"&&s[t]==="\n"&&++t,++v,y=t,i=""):i+=n;else if(e)et(n)?(n==="\r"&&s[t+1]==="\n"?(++t,i+="\r\n"):i+=n,++v,++t,y=t,t>=a&&o({},u.UnexpectedToken,"ILLEGAL")):(n=w(),t>=a&&o({},u.UnexpectedToken,"ILLEGAL"),i+=n,n==="*"&&(n=s[t],n==="/"&&(i=i.substr(0,i.length-1),e=!1,++t,kr(r,t,"Block",i),i="")));else if(n==="/")if(n=s[t+1],n==="/")r=t,t+=2,f=!0;else if(n==="*")r=t,t+=2,e=!0,t>=a&&o({},u.UnexpectedToken,"ILLEGAL");else break;else if(gr(n))++t;else if(et(n))++t,n==="\r"&&s[t]==="\n"&&++t,++v,y=t;else break}function lf(){var n=i.advance(),t,r;return n.type!==e.EOF&&(t=[n.range[0],n.range[1]],r=gt(n.range[0],n.range[1]),i.tokens.push({type:ft[n.type],value:r,range:t})),n}function af(){var r,u,n;return ht(),r=t,u=i.scanRegExp(),i.tokens.length>0&&(n=i.tokens[i.tokens.length-1],n.range[0]===r&&n.type==="Punctuator"&&(n.value==="/"||n.value==="/=")&&i.tokens.pop()),i.tokens.push({type:"RegularExpression",value:u.literal,range:[r,t]}),u}function vt(n){return{type:r.Literal,value:n.value}}function vf(n){return{type:r.Literal,value:n.value,raw:gt(n.range[0],n.range[1])}}function yf(n,i){return function(u){function f(n){return n.type===r.LogicalExpression||n.type===r.BinaryExpression}function e(t){f(t.left)&&e(t.left),f(t.right)&&e(t.right),n&&typeof t.range=="undefined"&&(t.range=[t.left.range[0],t.right.range[1]]),i&&typeof t.loc=="undefined"&&(t.loc={start:t.left.loc.start,end:t.right.loc.end})}return function(){var o,s,h;return ht(),s=[t,0],h={start:{line:v,column:t-y}},o=u.apply(null,arguments),typeof o!="undefined"?(n&&(s[1]=t,o.range=s),i&&(h.end={line:v,column:t-y},o.loc=h),f(o)&&e(o),o.type===r.MemberExpression&&(typeof o.object.range!="undefined"&&(o.range[0]=o.object.range[0]),typeof o.object.loc!="undefined"&&(o.loc.start=o.object.loc.start)),o.type===r.CallExpression&&(typeof o.callee.range!="undefined"&&(o.range[0]=o.callee.range[0]),typeof o.callee.loc!="undefined"&&(o.loc.start=o.callee.loc.start)),o):void 0}}}function pf(){var n;i.comments&&(i.skipComment=ht,ht=cf),i.raw&&(i.createLiteral=vt,vt=vf),(i.range||i.loc)&&(n=yf(i.range,i.loc),i.parseAdditiveExpression=hi,i.parseAssignmentExpression=tt,i.parseBitwiseANDExpression=vi,i.parseBitwiseORExpression=pi,i.parseBitwiseXORExpression=yi,i.parseBlock=wt,i.parseFunctionSourceElements=dt,i.parseCallMember=ur,i.parseCatchClause=ar,i.parseComputedMember=ei,i.parseConditionalExpression=or,i.parseConstLetDeclaration=hr,i.parseEqualityExpression=ai,i.parseExpression=b,i.parseForVariableDeclaration=cr,i.parseFunctionDeclaration=bi,i.parseFunctionExpression=vr,i.parseLogicalANDExpression=wi,i.parseLogicalORExpression=er,i.parseMultiplicativeExpression=si,i.parseNewExpression=oi,i.parseNonComputedMember=fi,i.parseNonComputedProperty=rr,i.parseObjectProperty=ir,i.parseObjectPropertyKey=pt,i.parsePostfixExpression=fr,i.parsePrimaryExpression=ui,i.parseProgram=yr,i.parsePropertyFunction=ri,i.parseRelationalExpression=li,i.parseStatement=rt,i.parseShiftExpression=ci,i.parseSwitchCase=lr,i.parseUnaryExpression=at,i.parseVariableDeclaration=sr,i.parseVariableIdentifier=ut,hi=n(i.parseAdditiveExpression),tt=n(i.parseAssignmentExpression),vi=n(i.parseBitwiseANDExpression),pi=n(i.parseBitwiseORExpression),yi=n(i.parseBitwiseXORExpression),wt=n(i.parseBlock),dt=n(i.parseFunctionSourceElements),ur=n(i.parseCallMember),ar=n(i.parseCatchClause),ei=n(i.parseComputedMember),or=n(i.parseConditionalExpression),hr=n(i.parseConstLetDeclaration),ai=n(i.parseEqualityExpression),b=n(i.parseExpression),cr=n(i.parseForVariableDeclaration),bi=n(i.parseFunctionDeclaration),vr=n(i.parseFunctionExpression),wi=n(i.parseLogicalANDExpression),er=n(i.parseLogicalORExpression),si=n(i.parseMultiplicativeExpression),oi=n(i.parseNewExpression),fi=n(i.parseNonComputedMember),rr=n(i.parseNonComputedProperty),ir=n(i.parseObjectProperty),pt=n(i.parseObjectPropertyKey),fr=n(i.parsePostfixExpression),ui=n(i.parsePrimaryExpression),yr=n(i.parseProgram),ri=n(i.parsePropertyFunction),li=n(i.parseRelationalExpression),rt=n(i.parseStatement),ci=n(i.parseShiftExpression),lr=n(i.parseSwitchCase),at=n(i.parseUnaryExpression),sr=n(i.parseVariableDeclaration),ut=n(i.parseVariableIdentifier)),typeof i.tokens!="undefined"&&(i.advance=ti,i.scanRegExp=nr,ti=lf,nr=af)}function wf(){typeof i.skipComment=="function"&&(ht=i.skipComment),i.raw&&(vt=i.createLiteral),(i.range||i.loc)&&(hi=i.parseAdditiveExpression,tt=i.parseAssignmentExpression,vi=i.parseBitwiseANDExpression,pi=i.parseBitwiseORExpression,yi=i.parseBitwiseXORExpression,wt=i.parseBlock,dt=i.parseFunctionSourceElements,ur=i.parseCallMember,ar=i.parseCatchClause,ei=i.parseComputedMember,or=i.parseConditionalExpression,hr=i.parseConstLetDeclaration,ai=i.parseEqualityExpression,b=i.parseExpression,cr=i.parseForVariableDeclaration,bi=i.parseFunctionDeclaration,vr=i.parseFunctionExpression,wi=i.parseLogicalANDExpression,er=i.parseLogicalORExpression,si=i.parseMultiplicativeExpression,oi=i.parseNewExpression,fi=i.parseNonComputedMember,rr=i.parseNonComputedProperty,ir=i.parseObjectProperty,pt=i.parseObjectPropertyKey,ui=i.parsePrimaryExpression,fr=i.parsePostfixExpression,yr=i.parseProgram,ri=i.parsePropertyFunction,li=i.parseRelationalExpression,rt=i.parseStatement,ci=i.parseShiftExpression,lr=i.parseSwitchCase,at=i.parseUnaryExpression,sr=i.parseVariableDeclaration,ut=i.parseVariableIdentifier),typeof i.scanRegExp=="function"&&(ti=i.advance,nr=i.scanRegExp)}function bf(n){for(var r=n.length,i=[],t=0;t0?1:0,y=0,a=s.length,it=null,h={allowIn:!0,labelSet:{},lastParenthesized:null,inFunctionBody:!1,inIteration:!1,inSwitch:!1},i={},typeof r!="undefined"&&(i.range=typeof r.range=="boolean"&&r.range,i.loc=typeof r.loc=="boolean"&&r.loc,i.raw=typeof r.raw=="boolean"&&r.raw,typeof r.tokens=="boolean"&&r.tokens&&(i.tokens=[]),typeof r.comment=="boolean"&&r.comment&&(i.comments=[]),typeof r.tolerant=="boolean"&&r.tolerant&&(i.errors=[])),a>0&&typeof s[0]=="undefined"&&(n instanceof String&&(s=n.valueOf()),typeof s[0]=="undefined"&&(s=bf(n))),pf();try{u=yr(),typeof i.comments!="undefined"&&(u.comments=i.comments),typeof i.tokens!="undefined"&&(u.tokens=i.tokens),typeof i.errors!="undefined"&&(u.errors=i.errors)}catch(e){throw e;}finally{wf(),i={}}return u}var e,ft,r,lt,u,pr,s,p,t,v,y,a,it,h,i;e={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8},ft={},ft[e.BooleanLiteral]="Boolean",ft[e.EOF]="",ft[e.Identifier]="Identifier",ft[e.Keyword]="Keyword",ft[e.NullLiteral]="Null",ft[e.NumericLiteral]="Numeric",ft[e.Punctuator]="Punctuator",ft[e.StringLiteral]="String",r={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},lt={Data:1,Get:2,Set:4},u={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},pr={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},typeof"esprima"[0]=="undefined"&&(gt=function(n,t){return s.slice(n,t).join("")}),n.version="1.0.0-dev",n.parse=kf,n.Syntax=function(){var n,t={};typeof Object.create=="function"&&(t=Object.create(null));for(n in r)r.hasOwnProperty(n)&&(t[n]=r[n]);return typeof Object.freeze=="function"&&Object.freeze(t),t}()})(typeof n=="undefined"?esprima={}:n)}),define("uglifyjs/consolidator",["require","exports","module","./parse-js","./process"],function(n,t){t.ast_consolidate=function(t){"use strict";var h=function(){this.nCategory=u.N_OTHER,this.aCount=[],this.aCount[i.N_IDENTIFIER_NAMES]={},this.aCount[i.N_STRING_LITERALS]={},this.aCount[i.N_NULL_AND_BOOLEAN_LITERALS]={},this.aIdentifiers=[],this.aPrimitiveValues=[]},c=function(){this.nSaving=0,this.sName=""},o=function(){this.oPrimitiveValues={},this.nSavings=0},f=n("./process"),e={N_PROPERTY_ACCESSOR:1,N_VARIABLE_DECLARATION:2,N_VARIABLE_STATEMENT_AFFIXATION:4,N_CLOSURE:17},i={N_IDENTIFIER_NAMES:0,N_STRING_LITERALS:1,N_NULL_AND_BOOLEAN_LITERALS:2},r={S_STRING:"#S",S_SYMBOLIC:"#O"},u={N_WITH:0,N_EVAL:1,N_EXCLUDABLE:2,N_OTHER:3},l=["null","false","true"];return function s(n){var g="toplevel"===n[0],nt=!g,t,a,b,y,ft={oSurveySourceElement:{defun:function(n,t){it(),k(n),t.forEach(k)},dot:function(n,t){return rt(i.N_IDENTIFIER_NAMES,r.S_STRING+t),["dot",y.walk(n),t]},"function":function(n,t){"string"==typeof n&&k(n),t.forEach(k)},name:function(n){-1!==l.indexOf(n)?rt(i.N_NULL_AND_BOOLEAN_LITERALS,r.S_SYMBOLIC+n):("eval"===n&&(a.nCategory=u.N_EVAL),k(n))},"return":function(){it()},string:function(n){n.length>0&&rt(i.N_STRING_LITERALS,r.S_STRING+n)},"try":function(n,t){Array.isArray(t)&&k(t[0])},"var":function(n){it(),n.forEach(et)},"with":function(){return a.nCategory=u.N_WITH,[]}},oExamineFunctions:{defun:function(){return s(this),[]},"function":function(){return s(this),[]}}},p=[],w=0,v,d,tt=function(n,t){return function(){return n.walk(t)}},it=function(){a.nCategory===u.N_OTHER&&(a.nCategory=u.N_EXCLUDABLE)},k=function(n){-1===a.aIdentifiers.indexOf(n)&&a.aIdentifiers.push(n)},et=function(n){k(n[0])},rt=function(n,t){a.aCount[n].hasOwnProperty(t)||(a.aCount[n][t]=0,-1===a.aPrimitiveValues.indexOf(t)&&a.aPrimitiveValues.push(t)),a.aCount[n][t]+=1},ut=function(n,u,l){var g=b.cname,a,it={dot:function(n,t){var i=r.S_STRING+t;return w.oPrimitiveValues.hasOwnProperty(i)&&w.oPrimitiveValues[i].nSaving>0?["sub",y.walk(n),["name",w.oPrimitiveValues[i].sName]]:["dot",y.walk(n),t]},name:function(n){var t=r.S_SYMBOLIC+n;return["name",w.oPrimitiveValues.hasOwnProperty(t)&&w.oPrimitiveValues[t].nSaving>0?w.oPrimitiveValues[t].sName:n]},string:function(n){var t=r.S_STRING+n;return w.oPrimitiveValues.hasOwnProperty(t)&&w.oPrimitiveValues[t].nSaving>0?["name",w.oPrimitiveValues[t].sName]:["string",n]}},w=new o,v=new o,k=new h,d=[],nt=function(n){return function(t){-1===n.indexOf(t)&&n.push(t)}},rt=function(n,t){return function(i){k.aCount[t].hasOwnProperty(i)||(k.aCount[t][i]=0),k.aCount[t][i]+=p[n].aCount[t][i]}},ut=function(n){return function(t){Object.keys(p[n].aCount[t]).forEach(rt(n,t))}},ft=function(n){Object.keys(p[n].aCount).forEach(ut(n))},et=function(n){w.oPrimitiveValues[n].nSaving>0&&d.push([w.oPrimitiveValues[n].sName,[0===n.indexOf(r.S_SYMBOLIC)?"name":"string",n.substring(r.S_SYMBOLIC.length)]])},ot=function(n,t){var i=v.oPrimitiveValues[n].nSaving-v.oPrimitiveValues[t].nSaving;return i>0?-1:i<0?1:0},st=function(n){var o,s=n.substring(r.S_SYMBOLIC.length),u=s.length,t,h=f.make_string(s).length;v.oPrimitiveValues[n]=new c;do o=b.cname,v.oPrimitiveValues[n].sName=b.next_mangled();while(-1!==k.aIdentifiers.indexOf(v.oPrimitiveValues[n].sName));t=v.oPrimitiveValues[n].sName.length,0===n.indexOf(r.S_SYMBOLIC)?(v.oPrimitiveValues[n].nSaving-=t+u+e.N_VARIABLE_DECLARATION,v.oPrimitiveValues[n].nSaving+=k.aCount[i.N_NULL_AND_BOOLEAN_LITERALS][n]*(u-t)):(v.oPrimitiveValues[n].nSaving-=t+h+e.N_VARIABLE_DECLARATION,k.aCount[i.N_IDENTIFIER_NAMES].hasOwnProperty(n)&&(v.oPrimitiveValues[n].nSaving+=k.aCount[i.N_IDENTIFIER_NAMES][n]*(u-t-e.N_PROPERTY_ACCESSOR)),k.aCount[i.N_STRING_LITERALS].hasOwnProperty(n)&&(v.oPrimitiveValues[n].nSaving+=k.aCount[i.N_STRING_LITERALS][n]*(h-t))),v.oPrimitiveValues[n].nSaving>0?v.nSavings+=v.oPrimitiveValues[n].nSaving:b.cname=o},ht=function(i){t[n][1].unshift(i)};if(!(n>u)){if(n===u&&"stat"===t[n][0]&&"call"===t[n][1][0]&&"function"===t[n][1][1][0]){s(t[n][1][1]);return}for(a=n;a<=u;a+=1)p[a].aPrimitiveValues.forEach(nt(k.aPrimitiveValues));if(0!==k.aPrimitiveValues.length){for(a=n;a<=u;a+=1)ft(a),p[a].aIdentifiers.forEach(nt(k.aIdentifiers));do w=v,Object.keys(v.oPrimitiveValues).length>0&&k.aPrimitiveValues.sort(ot),v=new o,k.aPrimitiveValues.forEach(st),b.cname=g;while(v.nSavings>w.nSavings);if("var"!==t[n][0]&&(w.nSavings-=e.N_VARIABLE_STATEMENT_AFFIXATION),l&&(w.nSavings-=e.N_CLOSURE),w.nSavings>0){for(Object.keys(w.oPrimitiveValues).forEach(et),a=n;a<=u;a+=1)y=f.ast_walker(),t[a]=y.with_walkers(it,tt(y,t[a]));if("var"===t[n][0]?d.reverse().forEach(ht):(Array.prototype.splice.call(t,n,0,["var",d]),u+=1),l){for(Array.prototype.splice.call(t,n,0,["stat",["call",["function",null,[],[]],[]]]),a=u+1;a>n;a-=1)Array.prototype.unshift.call(t[n][1][1][3],t[a]);Array.prototype.splice.call(t,n+1,u-n+1)}}l&&(b.cname=g)}}};if(t=n[g?1:3],0!==t.length){for(b=g?n.scope:t.scope;w=w;v-=1)a=p[v],u.N_OTHER===a.nCategory?("undefined"==typeof d&&(d=v),v===w&&ut(v,d,!0)):("undefined"!=typeof d&&(ut(v+1,d,!0),d=void 0),y=f.ast_walker(),y.with_walkers(ft.oExamineFunctions,tt(y,t[v])))}}}(t=f.ast_add_scope(t)),t}}),define("uglifyjs/parse-js",["exports"],function(n){function b(n){return o.letter.test(n)}function a(n){return n=n.charCodeAt(0),n>=48&&n<=57}function wt(n){return o.digit.test(n)}function k(n){return a(n)||b(n)}function bt(n){return o.combining_mark.test(n)}function kt(n){return o.connector_punctuation.test(n)}function v(n){return n=="$"||n=="_"||b(n)}function y(n){return v(n)||bt(n)||wt(n)||kt(n)||n=="‌"||n=="‍"}function dt(n){return ct.test(n)?parseInt(n.substr(2),16):lt.test(n)?parseInt(n.substr(1),8):at.test(n)?parseFloat(n):void 0}function d(n,t,i,r){this.message=n,this.line=t+1,this.col=i+1,this.pos=r+1,this.stack=(new Error).stack}function g(n,t,i,r){throw new d(n,t,i,r);}function nt(n,t,i){return n.type==t&&(i==null||n.value==i)}function tt(n){function o(){return i.text.charAt(i.pos)}function r(n,t){var r=i.text.charAt(i.pos++);if(n&&!r)throw u;return r=="\n"?(i.newline_before=i.newline_before||!t,++i.line,i.col=0):++i.col,r}function b(n,t){var r=i.text.indexOf(n,i.pos);if(t&&r==-1)throw u;return r}function ot(){i.tokline=i.line,i.tokcol=i.col,i.tokpos=i.pos}function f(n,r,u){var f,e,o;if(i.regex_allowed=n=="operator"&&!t(it,r)||n=="keyword"&&t(st,r)||n=="punc"&&t(yt,r),f={type:n,value:r,line:i.tokline,col:i.tokcol,pos:i.tokpos,endpos:i.pos,nlb:i.newline_before},!u)for(f.comments_before=i.comments_before,i.comments_before=[],e=0,o=f.comments_before.length;e0;--n)i=parseInt(r(!0),16),isNaN(i)&&s("Invalid hex-character pattern in string"),t=t<<4|i;return t}function lt(){return p("Unterminated string constant",function(){for(var o=r(),e="",n,t,i;;){if(n=r(!0),n=="\\")t=0,i=null,n=d(function(n){if(n>="0"&&n<="7")if(i){if(i<="3"&&t<=2||i>="4"&&t<=1)return++t}else return i=n,++t;return!1}),n=t>0?String.fromCharCode(parseInt(n,8)):tt(!0);else if(n==o)break;else if(n=="\n")throw u;e+=n}return f("string",e)})}function at(){r();var n=b("\n"),t;return n==-1?(t=i.text.substr(i.pos),i.pos=i.text.length):(t=i.text.substring(i.pos,n),i.pos=n),f("comment1",t,!0)}function wt(){return r(),p("Unterminated multiline comment",function(){var t=b("*/",!0),n=i.text.substring(i.pos,t);return i.pos=t+2,i.line+=n.split("\n").length-1,i.newline_before=i.newline_before||n.indexOf("\n")>=0,/^@cc_on/i.test(n)&&(e("WARNING: at line "+i.line),e('*** Found "conditional comment": '+n),e("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer.")),f("comment2",n,!0)})}function ut(){for(var u=!1,i="",n,e=!1,f;(n=o())!=null;)if(u)n!="u"&&s("Expecting UnicodeEscapeSequence -- uXXXX"),n=tt(),y(n)||s("Unicode char: "+n.charCodeAt(0)+" is not valid in identifier"),i+=n,u=!1;else if(n=="\\")e=u=!0,r();else if(y(n))i+=r();else break;return t(c,i)&&e&&(f=i.charCodeAt(0).toString(16).toUpperCase(),i="\\u"+"0000".substr(f.length)+f+i.slice(1)),i}function ft(n){return p("Unterminated regular expression",function(){for(var u=!1,t,i=!1,e;t=r(!0);)if(u)n+="\\"+t,u=!1;else if(t=="[")i=!0,n+=t;else if(t=="]"&&i)i=!1,n+=t;else if(t!="/"||i)t=="\\"?u=!0:n+=t;else break;return e=ut(),f("regexp",[n,e])})}function et(n){function i(n){if(!o())return n;var u=n+o();return t(l,u)?(r(),i(u)):n}return f("operator",i(n||r()))}function bt(){r();var n=i.regex_allowed;switch(o()){case"/":return i.comments_before.push(at()),i.regex_allowed=n,h();case"*":return i.comments_before.push(wt()),i.regex_allowed=n,h()}return i.regex_allowed?ft(""):et("/")}function kt(){return r(),a(o())?nt("."):f("punc",".")}function gt(){var n=ut();return t(c,n)?t(l,n)?f("operator",n):t(w,n)?f("atom",n):f("keyword",n):f("name",n)}function p(n,t){try{return t()}catch(i){if(i===u)s(n);else throw i;}}function h(n){if(n!=null)return ft(n);ct(),ot();var i=o();if(!i)return f("eof");if(a(i))return nt();if(i=='"'||i=="'")return lt();if(t(pt,i))return f("punc",r());if(i==".")return kt();if(i=="/")return bt();if(t(ht,i))return et();if(i=="\\"||v(i))return gt();s("Unexpected character '"+i+"'")}var i={text:n.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/^\uFEFF/,""),pos:0,tokpos:0,line:0,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]};return h.context=function(n){return n&&(i=n),i},h}function p(n,t,i){this.name=n,this.start=t,this.end=i}function ti(n,r,u){function e(n,t){return nt(f.token,n,t)}function si(){return f.peeked||(f.peeked=f.input())}function o(){return f.prev=f.token,f.peeked?(f.token=f.peeked,f.peeked=null):f.token=f.input(),f.in_directives=f.in_directives&&(f.token.type=="string"||e("punc",";")),f.token}function hi(){return f.prev}function w(n,t,i,r){var u=f.input.context();g(n,t!=null?t:u.tokline,i!=null?i:u.tokcol,r!=null?r:u.tokpos)}function kt(n,t){w(t,n.line,n.col)}function v(n){n==null&&(n=f.token),kt(n,"Unexpected token: "+n.type+" ("+n.value+")")}function dt(n,t){if(e(n,t))return o();kt(f.token,"Unexpected token "+f.token.type+", expected "+n)}function l(n){return dt("punc",n)}function lt(){return!r&&(f.token.nlb||e("eof")||e("punc","}"))}function k(){e("punc",";")?o():lt()||v()}function c(){return h(arguments)}function d(){l("(");var n=a();return l(")"),n}function ci(n,t,i){return n instanceof p?n:new p(n,t,i)}function at(n){return u?function(){var i=f.token,t=n.apply(this,arguments);return t[0]=ci(t[0],i,hi()),t}:n}function li(n){f.labels.push(n);var u=f.token,i=y();return r&&!t(ni,i[0])&&v(u),f.labels.pop(),c("label",n,i)}function ht(){return c("stat",i(a,k))}function ti(n){var t;return lt()||(t=e("name")?f.token.value:null),t!=null?(o(),et(t,f.labels)||w("Label "+t+" without matching loop or statement")):f.in_loop==0&&w(n+" not inside a loop or switch"),k(),c(n,t)}function ai(){l("(");var n=null;return!e("punc",";")&&(n=e("keyword","var")?(o(),ui(!0)):a(!0,!0),e("operator","in"))?(n[0]=="var"&&n[1].length>1&&w("Only one variable declaration allowed in for..in loop"),yi(n)):vi(n)}function vi(n){var t,i;return l(";"),t=e("punc",";")?null:a(),l(";"),i=e("punc",")")?null:a(),l(")"),c("for",n,t,i,st(y))}function yi(n){var i=n[0]=="var"?c("name",n[1][0]):n,t;return o(),t=a(),l(")"),c("for-in",n,i,t,st(y))}function pi(){var t=d(),i=y(),n;return e("keyword","else")&&(o(),n=y()),c("if",t,i,n)}function ot(){l("{");for(var n=[];!e("punc","}");)e("eof")&&v(),n.push(y());return o(),n}function wi(){var r=ot(),n,t,i;return e("keyword","catch")&&(o(),l("("),e("name")||w("Name expected"),i=f.token.value,o(),l(")"),n=[i,ot()]),e("keyword","finally")&&(o(),t=ot()),n||t||w("Missing catch/finally blocks"),c("try",r,n,t)}function ri(n){for(var t=[],i;;){if(e("name")||v(),i=f.token.value,o(),e("operator","=")?(o(),t.push([i,a(!1,n)])):t.push([i]),!e("punc",","))break;o()}return t}function ui(n){return c("var",ri(n))}function bi(){return c("const",ri())}function ki(){var t=vt(!1),n;return e("punc","(")?(o(),n=yt(")")):n=[],b(c("new",t,n),!0)}function yt(n,t,i){for(var u=!0,r=[];!e("punc",n);){if(u?u=!1:l(","),t&&e("punc",n))break;e("punc",",")&&i?r.push(["atom","undefined"]):r.push(a(!1))}return o(),r}function di(){return c("array",yt("]",!r,!0))}function gi(){for(var i=!0,t=[],u,n;!e("punc","}");){if(i?i=!1:l(","),!r&&e("punc","}"))break;u=f.token.type,n=nr(),u!="name"||n!="get"&&n!="set"||e("punc",":")?(l(":"),t.push([n,a(!1)])):t.push([pt(),ct(!1),n])}return o(),c("object",t)}function nr(){switch(f.token.type){case"num":case"string":return i(f.token.value,o)}return pt()}function pt(){switch(f.token.type){case"name":case"operator":case"keyword":case"atom":return i(f.token.value,o);default:v()}}function b(n,t){return e("punc",".")?(o(),b(c("dot",n,pt()),t)):e("punc","[")?(o(),b(c("sub",n,i(a,s(l,"]"))),t)):t&&e("punc","(")?(o(),b(c("call",n,yt(")")),!0)):n}function wt(n){if(e("operator")&&t(gt,f.token.value))return fi("unary-prefix",i(f.token.value,o),wt(n));for(var r=vt(n);e("operator")&&t(it,f.token.value)&&!f.token.nlb;)r=fi("unary-postfix",f.token.value,r),o();return r}function fi(n,t,i){return t!="++"&&t!="--"||ei(i)||w("Invalid use of "+t+" operator"),c(n,t,i)}function bt(n,t,i){var r=e("operator")?f.token.value:null,u,s;return(r&&r=="in"&&i&&(r=null),u=r!=null?ut[r]:null,u!=null&&u>t)?(o(),s=bt(wt(!0),u,i),bt(c("binary",r,n,s),t,i)):n}function tr(n){return bt(wt(!0),0,n)}function ir(n){var t=tr(n),i;return e("operator","?")?(o(),i=a(!1),l(":"),c("conditional",t,i,a(!1,n))):t}function ei(n){if(!r)return!0;switch(n[0]+""){case"dot":case"sub":case"new":case"call":return!0;case"name":return n[1]!="this"}}function oi(n){var i=ir(n),r=f.token.value;if(e("operator")&&t(rt,r)){if(ei(i))return o(),c("assign",rt[r],i,oi(n));w("Invalid assignment")}return i}function st(n){try{return++f.in_loop,n()}finally{--f.in_loop}}var f={input:typeof n=="string"?tt(n,!0):n,token:null,prev:null,peeked:null,in_function:0,in_directives:!0,in_loop:0,labels:[]},y,ct,ii,vt,a;return f.token=o(),y=at(function(){(e("operator","/")||e("operator","/="))&&(f.peeked=null,f.token=f.input(f.token.value.substr(1)));switch(f.token.type){case"string":var t=f.in_directives,n=ht();return t&&n[1][0]=="string"&&!e("punc",",")?c("directive",n[1][1]):n;case"num":case"regexp":case"operator":case"atom":return ht();case"name":return nt(si(),"punc",":")?li(i(f.token.value,o,o)):ht();case"punc":switch(f.token.value){case"{":return c("block",ot());case"[":case"(":return ht();case";":return o(),c("block");default:v()}case"keyword":switch(i(f.token.value,o)){case"break":return ti("break");case"continue":return ti("continue");case"debugger":return k(),c("debugger");case"do":return function(n){return dt("keyword","while"),c("do",i(d,k),n)}(st(y));case"for":return ai();case"function":return ct(!0);case"if":return pi();case"return":return f.in_function==0&&w("'return' outside of function"),c("return",e("punc",";")?(o(),null):lt()?null:i(a,k));case"switch":return c("switch",d(),ii());case"throw":return f.token.nlb&&w("Illegal newline after 'throw'"),c("throw",i(a,k));case"try":return wi();case"var":return i(ui,k);case"const":return i(bi,k);case"while":return c("while",d(),st(y));case"with":return c("with",d(),y());default:v()}}}),ct=function(n){var t=e("name")?i(f.token.value,o):null;return n&&!t&&v(),l("("),c(n?"defun":"function",t,function(n,t){while(!e("punc",")"))n?n=!1:l(","),e("name")||v(),t.push(f.token.value),o();return o(),t}(!0,[]),function(){var n,t;return++f.in_function,n=f.in_loop,f.in_directives=!0,f.in_loop=0,t=ot(),--f.in_function,f.in_loop=n,t}())},ii=s(st,function(){l("{");for(var t=[],n=null;!e("punc","}");)e("eof")&&v(),e("keyword","case")?(o(),n=[],t.push([a(),n]),l(":")):e("keyword","default")?(o(),l(":"),n=[],t.push([null,n])):(n||v(),n.push(y()));return o(),t}),vt=at(function(n){if(e("operator","new"))return o(),ki();if(e("punc")){switch(f.token.value){case"(":return o(),b(i(a,s(l,")")),n);case"[":return o(),b(di(),n);case"{":return o(),b(gi(),n)}v()}if(e("keyword","function"))return o(),b(ct(!1),n);if(t(ft,f.token.type)){var r=f.token.type=="regexp"?c("regexp",f.token.value[0],f.token.value[1]):c(f.token.type,f.token.value);return b(i(r,o),n)}v()}),a=at(function(n,t){arguments.length==0&&(n=!0);var i=oi(t);return n&&e("punc",",")?(o(),c("seq",i,a(!0,t))):i}),c("toplevel",function(n){while(!e("eof"))n.push(y());return n}([]))}function s(n){var t=h(arguments,1);return function(){return n.apply(this,t.concat(h(arguments)))}}function i(n){n instanceof Function&&(n=n());for(var t=1,i=arguments.length;--i>0;++t)arguments[t]();return n}function r(n){for(var i={},t=0;t=0;)if(t[i]==n)return!0;return!1}function t(n,t){return Object.prototype.hasOwnProperty.call(n,t)}var c=r(["break","case","catch","const","continue","debugger","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","throw","try","typeof","var","void","while","with"]),ot=r(["abstract","boolean","byte","char","class","double","enum","export","extends","final","float","goto","implements","import","int","interface","long","native","package","private","protected","public","short","static","super","synchronized","throws","transient","volatile"]),st=r(["return","new","delete","throw","else","case"]),w=r(["false","null","true","undefined"]),ht=r(f("+-*&%=<>!?|~^")),ct=/^0x[0-9a-f]+$/i,lt=/^0[0-7]+$/,at=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,l=r(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),vt=r(f("  \n\r\t\f\x0b​᠎              ")),yt=r(f("[{(,.;:")),pt=r(f("[]{}(),;:")),ii=r(f("gmsiy")),o={letter:new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),combining_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C01-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C82\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D02\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]"),digit:new RegExp("[\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]")},u,e;d.prototype.toString=function(){return this.message+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")\n\n"+this.stack},u={};var gt=r(["typeof","void","delete","--","++","!","~","-","+"]),it=r(["--","++"]),rt=function(n,t,i){while(i>=","<<=",">>>=","|=","^=","&="],{"=":!0},0),ut=function(n,t){for(var f,r,i=0,u=1;i","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),ni=r(["for","do","while","switch"]),ft=r(["atom","num","string","regexp","name"]);p.prototype.toString=function(){return this.name},e=function(){},n.tokenizer=tt,n.parse=ti,n.slice=h,n.curry=s,n.member=et,n.array_to_hash=r,n.PRECEDENCE=ut,n.KEYWORDS_ATOM=w,n.RESERVED_WORDS=ot,n.KEYWORDS=c,n.ATOMIC_START_TOKEN=ft,n.OPERATORS=l,n.is_alphanumeric_char=k,n.is_identifier_start=v,n.is_identifier_char=y,n.set_logger=function(n){e=n}}),define("uglifyjs/squeeze-more",["require","exports","module","./parse-js","./squeeze-more"],function(n,t){function e(n){function o(n,i){var u=t,r;return t=n,r=i(),t=u,r}function s(n,t,r){return[this[0],n,t,o(r.scope,u(f,r,i))]}var e=r.ast_walker(),i=e.walk,t;return e.with_walkers({toplevel:function(n){return[this[0],o(this.scope,u(f,n,i))]},"function":s,defun:s,"new":function(n,r){if(n[0]=="name")if(n[1]!="Array"||t.has("Array"))if(n[1]!="Object"||t.has("Object")){if((n[1]=="RegExp"||n[1]=="Function"||n[1]=="Error")&&!t.has(n[1]))return i(["call",["name",n[1]],r])}else return r.length?i(["call",["name","Object"],r]):["object",[]];else return r.length!=1?["array",r]:i(["call",["name","Array"],r])},call:function(n,i){if(n[0]=="dot"&&n[1][0]=="string"&&i.length==1&&(i[0][1]>0&&n[2]=="substring"||n[2]=="substr"))return["call",["dot",n[1],"slice"],i];if(n[0]=="dot"&&n[2]=="toString"&&i.length==0)return n[1][0]=="string"?n[1]:["binary","+",n[1],["string",""]];if(n[0]=="name"){if(n[1]=="Array"&&i.length!=1&&!t.has("Array"))return["array",i];if(n[1]=="Object"&&!i.length&&!t.has("Object"))return["object",[]];if(n[1]=="String"&&!t.has("String"))return["binary","+",i[0],["string",""]]}}},function(){return i(r.ast_add_scope(n))})}var i=n("./parse-js"),r=n("./process"),o=i.slice,s=i.member,u=i.curry,f=r.MAP,h=i.PRECEDENCE,c=i.OPERATORS;t.ast_squeeze_more=e}),define("uglifyjs/process",["require","exports","module","./parse-js","./squeeze-more"],function(n,t){function e(){function f(t){return[this[0],i(t,function(t){var i=[t[0]];return t.length>1&&(i[1]=n(t[1])),i})]}function e(t){var r=[this[0]];return t!=null&&r.push(i(t,n)),r}function n(n){var r,i,f;if(n==null)return null;try{return(t.push(n),r=n[0],i=u[r],i&&(f=i.apply(n,n.slice(1)),f!=null))?f:(i=o[r],i.apply(n,n.slice(1)))}finally{t.pop()}}function s(n){if(n==null)return null;try{return t.push(n),o[n[0]].apply(n,n.slice(1))}finally{t.pop()}}function h(n,t){var f={},i,e;for(i in n)r(n,i)&&(f[i]=u[i],u[i]=n[i]);e=t();for(i in f)r(f,i)&&(f[i]?u[i]=f[i]:delete u[i]);return e}var o={string:function(n){return[this[0],n]},num:function(n){return[this[0],n]},name:function(n){return[this[0],n]},toplevel:function(t){return[this[0],i(t,n)]},block:e,splice:e,"var":f,"const":f,"try":function(t,r,u){return[this[0],i(t,n),r!=null?[r[0],i(r[1],n)]:null,u!=null?i(u,n):null]},"throw":function(t){return[this[0],n(t)]},"new":function(t,r){return[this[0],n(t),i(r,n)]},"switch":function(t,r){return[this[0],n(t),i(r,function(t){return[t[0]?n(t[0]):null,i(t[1],n)]})]},"break":function(n){return[this[0],n]},"continue":function(n){return[this[0],n]},conditional:function(t,i,r){return[this[0],n(t),n(i),n(r)]},assign:function(t,i,r){return[this[0],t,n(i),n(r)]},dot:function(t){return[this[0],n(t)].concat(c(arguments,1))},call:function(t,r){return[this[0],n(t),i(r,n)]},"function":function(t,r,u){return[this[0],t,r.slice(),i(u,n)]},"debugger":function(){return[this[0]]},defun:function(t,r,u){return[this[0],t,r.slice(),i(u,n)]},"if":function(t,i,r){return[this[0],n(t),n(i),n(r)]},"for":function(t,i,r,u){return[this[0],n(t),n(i),n(r),n(u)]},"for-in":function(t,i,r,u){return[this[0],n(t),n(i),n(r),n(u)]},"while":function(t,i){return[this[0],n(t),n(i)]},"do":function(t,i){return[this[0],n(t),n(i)]},"return":function(t){return[this[0],n(t)]},binary:function(t,i,r){return[this[0],t,n(i),n(r)]},"unary-prefix":function(t,i){return[this[0],t,n(i)]},"unary-postfix":function(t,i){return[this[0],t,n(i)]},sub:function(t,i){return[this[0],n(t),n(i)]},object:function(t){return[this[0],i(t,function(t){return t.length==2?[t[0],n(t[1])]:[t[0],n(t[1]),t[2]]})]},regexp:function(n,t){return[this[0],n,t]},array:function(t){return[this[0],i(t,n)]},stat:function(t){return[this[0],n(t)]},seq:function(){return[this[0]].concat(i(c(arguments),n))},label:function(t,i){return[this[0],t,n(i)]},"with":function(t,i){return[this[0],n(t),n(i)]},atom:function(n){return[this[0],n]},directive:function(n){return[this[0],n]}},u={},t=[];return{walk:n,dive:s,with_walkers:h,parent:function(){return t[t.length-2]},stack:function(){return t}}}function d(n){this.names={},this.mangled={},this.rev_mangled={},this.cname=-1,this.refs={},this.uses_with=!1,this.uses_eval=!1,this.directives=[],this.parent=n,this.children=[],n?(this.level=n.level+1,n.children.push(this)):this.level=0}function ct(){return typeof DIGITS_OVERRIDE_FOR_TESTING!="undefined"?DIGITS_OVERRIDE_FOR_TESTING:"etnrisouaflchpdvmgybwESxTNCkLAOM_DPHBjFIqRUzWXV$JKQGYZ0516372984"}function p(n){function h(n){t=new d(t),t.labels=new d;var i=t.body=n();return i.scope=t,t=t.parent,i}function f(n,i){return t.define(n,i)}function c(n){t.refs[n]=!0}function l(n,t,r){var e=this[0]=="defun";return[this[0],e?f(n,"defun"):n,t,h(function(){return e||f(n,"lambda"),i(t,function(n){f(n,"arg")}),i(r,u)})]}function a(n){return function(t){i(t,function(t){f(t[0],n),t[1]&&c(t[0])})}}function v(n){n&&(t.labels.refs[n]=!0)}var t=null,o=e(),u=o.walk,s=[];return h(function(){function e(n,t){for(t=n.children.length;--t>=0;)e(n.children[t]);for(t in n.refs)if(r(n.refs,t))for(var u=n.has(t),i=n;i;i=i.parent)if(i.refs[t]=u,i===u)break}var h=o.with_walkers({"function":l,defun:l,label:function(n){t.labels.define(n)},"break":v,"continue":v,"with":function(){for(var n=t;n;n=n.parent)n.uses_with=!0},"var":a("var"),"const":a("const"),"try":function(n,t,r){if(t!=null)return[this[0],i(n,u),[f(t[0],"catch"),i(t[1],u)],r!=null?i(r,u):null]},name:function(n){n=="eval"&&s.push(t),c(n)}},function(){return u(n)});return i(s,function(n){if(!n.has("eval"))while(n)n.uses_eval=!0,n=n.parent}),e(t),h})}function at(n,t){function o(n,i){return t.mangle?!t.toplevel&&!u.parent?n:t.except&&s(n,t.except)?n:t.no_functions&&r(u.names,n)&&(u.names[n]=="defun"||u.names[n]=="lambda")?n:u.get_mangled(n,i):n}function y(n){if(t.defines)return!u.has(n)&&r(t.defines,n)?t.defines[n]:null}function c(n,r,e){if(!t.no_functions&&t.mangle){var h=this[0]=="defun",s;n&&(h?n=o(n):e.scope.references(n)?(s={},u.uses_eval||u.uses_with?s[n]=n:n=s[n]=u.next_mangled()):n=null)}return e=l(e.scope,function(){return r=i(r,function(n){return o(n)}),i(e,f)},s),[this[0],n,r,e]}function l(n,t,i){var s=u,f,e;if(u=n,i)for(f in i)r(i,f)&&n.set_mangle(f,i[f]);for(f in n.names)r(n.names,f)&&o(f,!0);return e=t(),e.scope=n,u=s,e}function a(n){return[this[0],i(n,function(n){return[o(n[0]),f(n[1])]})]}function v(n){if(n)return[this[0],u.labels.get_mangled(n)]}var h=e(),f=h.walk,u;return t=tt(t,{mangle:!0,toplevel:!1,defines:null,except:null,no_functions:!1}),h.with_walkers({"function":c,defun:function(){var n=c.apply(this,arguments);switch(h.parent()[0]){case"toplevel":case"function":case"defun":return i.at_top(n)}return n},label:function(n,t){return u.labels.refs[n]?[this[0],u.labels.get_mangled(n,!0),f(t)]:f(t)},"break":v,"continue":v,"var":a,"const":a,name:function(n){return y(n)||[this[0],o(n)]},"try":function(n,t,r){return[this[0],i(n,f),t!=null?[o(t[0]),i(t[1],f)]:null,r!=null?i(r,f):null]},toplevel:function(n){var t=this;return l(t.scope,function(){return[t[0],i(n,f)]})},directive:function(){return i.at_top(this)}},function(){return f(p(n))})}function o(n,t){return v(n).length>v(t[0]=="stat"?t[1]:t).length?t:n}function vt(n){return n[0]=="block"&&n[1]&&n[1].length>0?n[1][n[1].length-1]:n}function b(n){if(n)switch(vt(n)[0]){case"return":case"break":case"continue":case"throw":return!0}}function h(n){return n[0]=="unary-prefix"&&s(n[1],["!","delete"])||n[0]=="binary"&&s(n[1],["in","instanceof","==","!=","===","!==","<","<=",">=",">"])||n[0]=="binary"&&s(n[1],["&&","||"])&&h(n[2])&&h(n[3])||n[0]=="conditional"&&h(n[2])&&h(n[3])||n[0]=="assign"&&n[1]===!0&&h(n[3])||n[0]=="seq"&&h(n[n.length-1])}function f(n){return!n||n[0]=="block"&&(!n[1]||n[1].length==0)}function k(n){return n[0]=="string"||n[0]=="unary-prefix"&&n[1]=="typeof"||n[0]=="binary"&&n[1]=="+"&&(k(n[2])||k(n[3]))}function a(n){f(n)||w("Dropping unreachable code: "+v(n,!0))}function et(n){function t(n){var u,f,e;for(n=i(n,r),u=0;u0&&(yt(["block",n],function(n,t,i,u){var s,o,h;if(n[0]=="assign"&&n[1]===!0&&n[2][0]=="name"&&r(e,n[2][1])){for(s=f.length;--s>=0;)if(f[s][0]==n[2][1]){f[s][1]&&i(),f[s][1]=n[3],f.push(f.splice(s,1)[0]);break}o=t.parent(),o[0]=="seq"?(h=o[2],h.unshift(0,o.length),o.splice.apply(o,h)):o[0]=="stat"?o.splice(0,o.length,"block"):i(),u()}i()}),n.unshift(["var",f])),u=s,n}function s(n){for(var u=null,r,f=n.length;--f>=0;)(r=n[f],r[1])&&(r=["assign",!0,["name",r[0]],r[1]],u=u==null?r:["seq",r,u]);return u==null&&t.parent()[0]!="for"?t.parent()[0]=="for-in"?["name",n[0][0]]:i.skip:["stat",u]}function h(n){return[this[0],f(n,this.scope)]}var t=e(),o=t.walk,u;return t.with_walkers({"function":function(n,t,i){for(var r=t.length;--r>=0&&!i.scope.references(t[r]);)t.pop();return i.scope.references(n)||(n=null),[this[0],n,t,f(i,i.scope)]},defun:function(n,t,r){if(!u.references(n))return i.skip;for(var e=t.length;--e>=0&&!r.scope.references(t[e]);)t.pop();return[this[0],n,t,f(r,r.scope)]},"var":s,toplevel:h},function(){return o(p(n))})}function wt(n,t){return n=bt(n,t),kt(n,t)}function bt(n,t){function u(n){var f=["unary-prefix","!",n];switch(n[0]){case"unary-prefix":return n[1]=="!"&&h(n[2])?n[2]:f;case"seq":return n=c(n),n[n.length-1]=u(n[n.length-1]),n;case"conditional":return o(f,["conditional",n[1],u(n[2]),u(n[3])]);case"binary":var e=n[1],i=n[2],r=n[3];if(!t.keep_comps)switch(e){case"<=":return["binary",">",i,r];case"<":return["binary",">=",i,r];case">=":return["binary","<",i,r];case">":return["binary","<=",i,r]}switch(e){case"==":return["binary","!=",i,r];case"!=":return["binary","==",i,r];case"===":return["binary","!==",i,r];case"!==":return["binary","===",i,r];case"&&":return o(f,["binary","||",u(i),u(r)]);case"||":return o(f,["binary","&&",u(i),u(r)])}}return f}function p(n,t,i){var r=function(){return n[0]=="unary-prefix"&&n[1]=="!"?i?["conditional",n[2],i,t]:["binary","||",n[2],t]:i?o(["conditional",n,t,i],["conditional",u(n),i,t]):["binary","&&",n,t]};return l(n,function(n,r){return a(r?i:t),r?t:i},r)}function nt(n){return n!=null&&n[0]=="block"&&n[1]&&(n[1].length==1?n=n[1][0]:n[1].length==0&&(n=["block"])),n}function d(n,t,i){return[this[0],n,t,y(i,"lambda")]}function y(n){return n=i(n,r),n=n.reduce(function(n,t){return t[0]=="block"?t[1]&&n.push.apply(n,t[1]):n.push(t),n},[]),n=function(t,i){return n.forEach(function(n){i&&(n[0]=="var"&&i[0]=="var"||n[0]=="const"&&i[0]=="const")?i[1]=i[1].concat(n[1]):(t.push(n),i=n)}),t}([]),t.dead_code&&(n=function(r,u){return n.forEach(function(n){u?n[0]=="function"||n[0]=="defun"?r.push(n):n[0]=="var"||n[0]=="const"?(t.no_warnings||w("Variables declared in unreachable code"),n[1]=i(n[1],function(n){return n[1]&&!t.no_warnings&&a(["assign",!0,["name",n[0]],n[1]]),[n[0]]}),r.push(n)):t.no_warnings||a(n):(r.push(n),s(n[0],["return","throw","break","continue"])&&(u=!0))}),r}([])),t.make_seqs&&(n=function(t,i){return n.forEach(function(n){i&&i[0]=="stat"&&n[0]=="stat"?i[1]=["seq",i[1],n[1]]:(t.push(n),i=n)}),t.length>=2&&t[t.length-2][0]=="stat"&&(t[t.length-1][0]=="return"||t[t.length-1][0]=="throw")&&t[t.length-1][1]&&t.splice(t.length-2,2,[t[t.length-1][0],["seq",t[t.length-2][1],t[t.length-1][1]]]),t}([])),n}function rt(n,t,i){return l(n,function(n,u){return u?(t=r(t),a(i),t||["block"]):(i=r(i),a(t),i||["block"])},function(){return ut(n,t,i)})}function g(n,t,i){var f=[["if",u(n),i]];return t[0]=="block"?t[1]&&(f=f.concat(t[1])):f.push(t),r(["block",f])}function ut(n,t,i){if(n=r(n),t=r(t),i=r(i),f(i)&&f(t))return["stat",n];f(t)?(n=u(n),t=i,i=null):f(i)?i=null:function(){var e=v(n),r=u(n),o=v(r),f;o.length0&&(f=i[i.length-1],f[0]!="break"||f[1]||i.pop()),[n[0]?r(n[0]):null,i]})]},"function":d,defun:d,block:function(n){if(n)return nt(["block",y(n)])},binary:function(n,t,i){return l(["binary",n,r(t),r(i)],function(n){return o(r(n),this)},function(){return function(){if(n=="=="||n=="!="){var u=r(t),f=r(i);return u&&u[0]=="unary-prefix"&&u[1]=="!"&&u[2][0]=="num"?t=["num",+!u[2][1]]:f&&f[0]=="unary-prefix"&&f[1]=="!"&&f[2][0]=="num"&&(i=["num",+!f[2][1]]),["binary",n,t,i]}}()||this})},conditional:function(n,t,i){return p(r(n),r(t),r(i))},"try":function(n,t,i){return["try",y(n),t!=null?[t[0],y(t[1])]:null,i!=null?y(i):null]},"unary-prefix":function(n,t){t=r(t);var i=["unary-prefix",n,t];return n=="!"&&(i=o(i,u(t))),l(i,function(n){return r(n)},function(){return i})},name:function(n){switch(n){case"true":return["unary-prefix","!",["num",0]];case"false":return["unary-prefix","!",["num",1]]}},"while":ft,assign:function(n,t,i){t=r(t),i=r(i);return n===!0&&t[0]==="name"&&i[0]==="binary"&&~["+","-","/","*","%",">>","<<",">>>","|","^","&"].indexOf(i[1])&&i[2][0]==="name"&&i[2][1]===t[1]?[this[0],i[1],t,i[3]]:[this[0],n,t,i]},call:function(n,u){return(n=r(n),t.unsafe&&n[0]=="dot"&&n[1][0]=="string"&&n[2]=="toString")?n[1]:[this[0],n,i(u,r)]},num:function(n){return isFinite(n)?[this[0],n]:["binary","/",n===1/0?["num",1]:n===-1/0?["unary-prefix","-",["num",1]]:["num",0],["num",0]]}},function(){return r(et(r(et(n))))})}function kt(n){function f(n,i){var u=t,r;return t=n,r=i(),t=u,r}function o(n,t,u){return[this[0],n,t,f(u.scope,rt(i,u,r))]}var u=e(),r=u.walk,t;return u.with_walkers({directive:function(n){if(t.active_directive(n))return["block"];t.directives.push(n)},toplevel:function(n){return[this[0],f(this.scope,rt(i,n,r))]},"function":o,defun:o},function(){return r(p(n))})}function g(n,t){var i=0,r=0;return n=n.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g,function(n){switch(n){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case'"':return++i,'"';case"'":return++r,"'";case"\0":return"\\0"}return n}),t&&(n=nt(n)),i>r?"'"+n.replace(/\x27/g,"\\'")+"'":'"'+n.replace(/\x22/g,'\\"')+'"'}function nt(n){return n.replace(/[\u0080-\uffff]/g,function(n){for(var t=n.charCodeAt(0).toString(16);t.length<4;)t="0"+t;return"\\u"+t})}function v(n,t){function yt(n){var i=g(n,t.ascii_only);return t.inline_script&&(i=i.replace(/<\x2fscript([>\/\t\n\f\r ])/gi,"<\\/script$1")),i}function p(n){return n=n.toString(),t.ascii_only&&(n=nt(n)),n}function w(n){return n==null&&(n=""),a&&(n=ht(" ",t.indent_start+at*t.indent_level)+n),n}function ct(n,t){t==null&&(t=1),at+=t;try{return n.apply(null,c(arguments,1))}finally{at-=t}}function kt(n){return n=n.toString(),n.charAt(n.length-1)}function pt(n){return n.toString().charAt(0)}function h(n){var r,t,i;if(a)return n.join(" ");for(r=[],t=0;t=0?i.push("0x"+n.toString(16).toLowerCase(),"0"+n.toString(8)):i.push("-0x"+(-n).toString(16).toLowerCase(),"-0"+(-n).toString(8)),(t=/^(.*?)(0+)$/.exec(n))&&i.push(t[1]+"e"+t[2].length)):(t=/^0?\.(0+)(.*)$/.exec(n))&&i.push(t[2]+"e-"+(t[1].length+t[2].length),r.substr(r.indexOf("."))),wt(i)}function ni(n){var t,i;if(n==null)return";";if(n[0]=="do")return d([n]);for(t=n;;)if(i=t[0],i=="if"){if(!t[3])return o(["block",[n]]);t=t[3]}else if(i=="while"||i=="do")t=t[2];else if(i=="for"||i=="for-in")t=t[4];else break;return o(n)}function bt(n,t,r,u,f){var e=u||"function";return n&&(e+=" "+p(n)),e+="("+k(i(t,p))+")",e=h([e,d(r)]),!f&&b(this)?"("+e+")":e}function et(n){switch(n[0]){case"with":case"while":return f(n[2])||et(n[2]);case"for":case"for-in":return f(n[4])||et(n[4]);case"if":return f(n[2])&&!n[3]?!0:n[3]?f(n[3])?!0:et(n[3]):et(n[2]);case"directive":return!0}}function lt(n,t){for(var e,r,f=[],s=n.length-1,u=0;u<=s;++u)e=n[u],r=o(e),r!=";"&&(a||u!=s||et(e)||(r=r.replace(/;+\s*$/,"")),f.push(r));return t?f:i(f,w)}function ti(n){var t=n.length;return t==0?"{}":"{"+l+i(n,function(n,i){var r=n[1].length>0,u=ct(function(){return w(n[0]?h(["case",o(n[0])+":"]):"default:")},.5)+(r?l+ct(function(){return lt(n[1]).join(l)}):"");return!a&&r&&i0?w(n):n}).join(l)},block:d,"var":function(n){return"var "+k(i(n,gt))+";"},"const":function(n){return"const "+k(i(n,gt))+";"},"try":function(n,t,i){var r=["try",d(n)];return t&&r.push("catch","("+t[0]+")",d(t[1])),i&&r.push("finally",d(i)),h(r)},"throw":function(n){return h(["throw",o(n)])+";"},"new":function(n,t){return t=t.length>0?"("+k(i(t,function(n){return v(n,"seq")}))+")":"",h(["new",v(n,"seq","binary","conditional","assign",function(n){var t=e(),i={};try{t.with_walkers({call:function(){throw i;},"function":function(){return this}},function(){t.walk(n)})}catch(r){if(r===i)return!0;throw r;}})+t])},"switch":function(n,t){return h(["switch","("+o(n)+")",ti(t)])},"break":function(n){var t="break";return n!=null&&(t+=" "+p(n)),t+";"},"continue":function(n){var t="continue";return n!=null&&(t+=" "+p(n)),t+";"},conditional:function(n,t,i){return h([v(n,"assign","seq","conditional"),"?",v(t,"seq"),":",v(i,"seq")])},assign:function(n,t,i){return n&&n!==!0?n+="=":n="=",h([o(t),n,v(i,"seq")])},dot:function(n){var t=o(n),i=1;for(n[0]=="num"?/[a-f.]/i.test(t)||(t+="."):n[0]!="function"&&b(n)&&(t="("+t+")");iy[i[1]]||i[0]=="function"&&b(this))&&(f="("+f+")"),s(r[0],["assign","conditional","seq"])||r[0]=="binary"&&y[n]>=y[r[1]]&&!(r[1]==n&&s(n,["&&","||","*"]))?u="("+u+")":!a&&t.inline_script&&(n=="<"||n=="<<")&&r[0]=="regexp"&&/^script/i.test(r[1])&&(u=" "+u),h([f,n,u])},"unary-prefix":function(n,t){var i=o(t);return t[0]=="num"||t[0]=="unary-prefix"&&!r(ft,n+t[1])||!b(t)||(i="("+i+")"),n+(u.is_alphanumeric_char(n.charAt(0))?" ":"")+i},"unary-postfix":function(n,t){var i=o(t);return t[0]=="num"||t[0]=="unary-postfix"&&!r(ft,n+t[1])||!b(t)||(i="("+i+")"),i+n},sub:function(n,t){var i=o(n);return b(n)&&(i="("+i+")"),i+"["+o(t)+"]"},object:function(n){var u=b(this),r;return n.length==0?u?"({})":"{}":(r="{"+l+ct(function(){return i(n,function(n){if(n.length==3)return w(bt(n[0],n[1][2],n[1][3],n[2],!0));var i=n[0],r=v(n[1],"seq");return t.quote_keys?i=yt(i):(typeof i=="number"||!a&&+i+""==i)&&parseFloat(i)>=0?i=dt(+i):it(i)||(i=yt(i)),w(h(a&&t.space_colon?[i,":",r]:[i+":",r]))}).join(","+l)})+l+w("}"),u?"("+r+")":r)},regexp:function(n,i){return t.ascii_only&&(n=nt(n)),"/"+n+"/"+i},array:function(n){return n.length==0?"[]":h(["[",k(i(n,function(t,i){return!a&&t[0]=="atom"&&t[1]=="undefined"?i===n.length-1?",":"":v(t,"seq")})),"]"])},stat:function(n){return n!=null?o(n).replace(/;*\s*$/,";"):";"},seq:function(){return k(i(c(arguments),o))},label:function(n,t){return h([p(n),":",o(t)])},"with":function(n,t){return h(["with","("+o(n)+")",o(t)])},atom:function(n){return p(n)},directive:function(n){return g(n)+";"}},function(){return o(n)})}function dt(n,t){var i=[0];return u.parse(function(){function s(n){return n.pos-r}function h(n){r=n.pos,i.push(r)}function o(){var n=e.apply(this,arguments);n:{if(f&&f.type=="keyword")break n;if(s(n)>t)switch(n.type){case"keyword":case"atom":case"name":case"punc":h(n);break n}}return f=n,n}var e=u.tokenizer(n),r=0,f;return o.context=function(){return e.context.apply(this,arguments)},o}()),i.map(function(t,r){return n.substring(t,i[r+1]||n.length)}).join("\n")}function ht(n,t){if(t<=0)return"";if(t==1)return n;var i=ht(n,t>>1);return i+=i,t&1&&(i+=n),i}function tt(n,t){var u={},i;n===!0&&(n={});for(i in t)r(t,i)&&(u[i]=n&&r(n,i)?n[i]:t[i]);return u}function it(n){return/^[a-z_$][a-z0-9_$]*$/i.test(n)&&n!="this"&&!r(u.KEYWORDS_ATOM,n)&&!r(u.RESERVED_WORDS,n)&&!r(u.KEYWORDS,n)}function r(n,t){return Object.prototype.hasOwnProperty.call(n,t)}var u=n("./parse-js"),rt=u.curry,c=u.slice,s=u.member,ut=u.is_identifier_char,y=u.PRECEDENCE,ft=u.OPERATORS,lt=function(){var n=ct();return function(t){var r="",i=54;do r+=n.charAt(t%i),t=Math.floor(t/i),i=64;while(t>0);return r}}(),w,l,ot,st,i;d.prototype={has:function(n){for(var t=this;t;t=t.parent)if(r(t.names,n))return t},has_mangled:function(n){for(var t=this;t;t=t.parent)if(r(t.rev_mangled,n))return t},toJSON:function(){return{names:this.names,uses_eval:this.uses_eval,uses_with:this.uses_with}},next_mangled:function(){for(;;){var n=lt(++this.cname),t;if((t=this.has_mangled(n),!t||this.refs[t.rev_mangled[n]]!==t)&&(t=this.has(n),!t||t===this||this.refs[n]!==t||t.has_mangled(n))&&(!r(this.refs,n)||this.refs[n]!=null)&&it(n))return n}},set_mangle:function(n,t){return this.rev_mangled[t]=n,this.mangled[n]=t},get_mangled:function(n,t){if(this.uses_eval||this.uses_with)return n;var i=this.has(n);return i?r(i.mangled,n)?i.mangled[n]:t?i.set_mangle(n,i.next_mangled()):n:n},references:function(n){return n&&!this.parent||this.uses_with||this.uses_eval||this.refs[n]},define:function(n,t){if(n!=null)return t!="var"&&r(this.names,n)||(this.names[n]=t||"var"),n},active_directive:function(n){return s(n,this.directives)||this.parent&&this.parent.active_directive(n)}},w=function(){},l=function(){function n(i){switch(i[0]){case"string":case"num":return i[1];case"name":case"atom":switch(i[1]){case"true":return!0;case"false":return!1;case"null":return null}break;case"unary-prefix":switch(i[1]){case"!":return!n(i[2]);case"typeof":return typeof n(i[2]);case"~":return~n(i[2]);case"-":return-n(i[2]);case"+":return+n(i[2])}break;case"binary":var r=i[2],u=i[3];switch(i[1]){case"&&":return n(r)&&n(u);case"||":return n(r)||n(u);case"|":return n(r)|n(u);case"&":return n(r)&n(u);case"^":return n(r)^n(u);case"+":return n(r)+n(u);case"*":return n(r)*n(u);case"/":return n(r)/n(u);case"%":return n(r)%n(u);case"-":return n(r)-n(u);case"<<":return n(r)<>":return n(r)>>n(u);case">>>":return n(r)>>>n(u);case"==":return n(r)==n(u);case"===":return n(r)===n(u);case"!=":return n(r)!=n(u);case"!==":return n(r)!==n(u);case"<":return n(r)":return n(r)>n(u);case">=":return n(r)>=n(u);case"in":return n(r)in n(u);case"instanceof":return n(r)instanceof n(u)}}throw t;}var t={};return function(i,r,u){var f,e,o;try{f=n(i);switch(typeof f){case"string":e=["string",f];break;case"number":e=["num",f];break;case"boolean":e=["name",String(f)];break;default:if(f===null){e=["atom","null"];break}throw new Error("Can't handle constant of type: "+typeof f);}return r.call(i,e,f)}catch(s){if(s===t){if(i[0]=="binary"&&(i[1]=="==="||i[1]=="!==")&&(k(i[2])&&k(i[3])||h(i[2])&&h(i[3])))i[1]=i[1].substr(0,2);else if(u&&i[0]=="binary"&&(i[1]=="||"||i[1]=="&&"))try{o=n(i[2]),i=i[1]=="&&"&&(o?i[3]:o)||i[1]=="||"&&(o?o:i[3])||i}catch(c){}return u?u.call(i,i):null}throw s;}}}(),ot=u.array_to_hash(["name","array","object","string","dot","sub","call","regexp","defun"]),st=u.array_to_hash(["if","while","do","for","for-in","with"]),function(){function t(n){this.v=n}function n(n){this.v=n}i=function(i,f,e){function c(){var r=f.call(e,i[o],o);r instanceof t?(r=r.v,r instanceof n?h.push.apply(h,r.v):h.push(r)):r!=u&&(r instanceof n?s.push.apply(s,r.v):s.push(r))}var s=[],h=[],o;if(i instanceof Array)for(o=0;o=0&&n>1;return i?-t:t}var r=n("./base64"),i=5,u=1<>>=i,t>0&&(u|=e),s+=r.encode(u);while(t>0);return s},t.decode=function(n){var u=0,l=n.length,o=0,h=0,c,t;do{if(u>=l)throw new Error("Expected more digits in base 64 VLQ value.");t=r.decode(n.charAt(u++)),c=!!(t&e),t&=f,o=o+(t<0?t-e>1?i(e,t,r,u,f):u[e]:e-n>1?i(n,e,r,u,f):n<0?null:u[n]}t.search=function(n,t,r){return t.length>0?i(-1,t.length,n,t,r):null}}),define("source-map/source-map-consumer",function(n,t){function r(n){var t=n;typeof n=="string"&&(t=JSON.parse(n.replace(/^\)\]\}'/,"")));var r=i.getArg(t,"version"),e=i.getArg(t,"sources"),o=i.getArg(t,"names"),u=i.getArg(t,"sourceRoot",null),s=i.getArg(t,"mappings"),h=i.getArg(t,"file");if(r!==this._version)throw new Error("Unsupported version: "+r);this._names=f.fromArray(o),this._sources=f.fromArray(e),this._sourceRoot=u,this.file=h,this._generatedMappings=[],this._originalMappings=[],this._parseMappings(s,u)}var i=n("./util"),e=n("./binary-search"),f=n("./array-set").ArraySet,u=n("./base64-vlq");r.prototype._version=3,Object.defineProperty(r.prototype,"sources",{get:function(){return this._sources.toArray().map(function(n){return this._sourceRoot?i.join(this._sourceRoot,n):n},this)}}),r.prototype._parseMappings=function(n,t){for(var c=1,s=0,l=0,a=0,h=0,v=0,o=/^[,;]/,r=n,e,f;r.length>0;)if(r.charAt(0)===";")c++,r=r.slice(1),s=0;else if(r.charAt(0)===",")r=r.slice(1);else{if(e={},e.generatedLine=c,f=u.decode(r),e.generatedColumn=s+f.value,s=e.generatedColumn,r=f.rest,r.length>0&&!o.test(r.charAt(0))){if(f=u.decode(r),e.source=t?i.join(t,this._sources.at(h+f.value)):this._sources.at(h+f.value),h+=f.value,r=f.rest,r.length===0||o.test(r.charAt(0)))throw new Error("Found a source, but no line and column");if(f=u.decode(r),e.originalLine=l+f.value,l=e.originalLine,e.originalLine+=1,r=f.rest,r.length===0||o.test(r.charAt(0)))throw new Error("Found a source and line, but no column");f=u.decode(r),e.originalColumn=a+f.value,a=e.originalColumn,r=f.rest,r.length>0&&!o.test(r.charAt(0))&&(f=u.decode(r),e.name=this._names.at(v+f.value),v+=f.value,r=f.rest)}this._generatedMappings.push(e),this._originalMappings.push(e)}this._originalMappings.sort(this._compareOriginalPositions)},r.prototype._compareOriginalPositions=function(n,t){if(n.source>t.source)return 1;if(n.source0)||!(n.column>=0)||t||i||r)&&(!n||!("line"in n)||!("column"in n)||!t||!("line"in t)||!("column"in t)||!(n.line>0)||!(n.column>=0)||!(t.line>0)||!(t.column>=0)||!i))throw new Error("Invalid mapping.");},i.prototype._serializeMappings=function(){var r=0,f=1,e=0,o=0,s=0,h=0,t="",n,i,c;for(this._mappings.sort(function(n,t){var i=n.generated.line-t.generated.line;return i===0?n.generated.column-t.generated.column:i}),i=0,c=this._mappings.length;i0&&(t+=",");t+=u.encode(n.generated.column-r),r=n.generated.column,n.source&&n.original&&(t+=u.encode(this._sources.indexOf(n.source)-h),h=this._sources.indexOf(n.source),t+=u.encode(n.original.line-1-o),o=n.original.line-1,t+=u.encode(n.original.column-e),e=n.original.column,n.name&&(t+=u.encode(this._names.indexOf(n.name)-s),s=this._names.indexOf(n.name)))}return t},i.prototype.toJSON=function(){var n={version:this._version,file:this._file,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._sourceRoot&&(n.sourceRoot=this._sourceRoot),n},i.prototype.toString=function(){return JSON.stringify(this)},t.SourceMapGenerator=i}),define("source-map/source-node",function(n,t){function i(n,t,i,r){this.children=[],this.line=n,this.column=t,this.source=i,r!=null&&this.add(r)}var r=n("./source-map-generator").SourceMapGenerator;i.prototype.add=function(n){if(Array.isArray(n))n.forEach(function(n){this.add(n)},this);else if(n instanceof i||typeof n=="string")n&&this.children.push(n);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+n);return this},i.prototype.prepend=function(n){if(Array.isArray(n))for(var t=n.length-1;t>=0;t--)this.prepend(n[t]);else if(n instanceof i||typeof n=="string")this.children.unshift(n);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+n);return this},i.prototype.walk=function(n){this.children.forEach(function(t){t instanceof i?t.walk(n):t!==""&&n(t,{source:this.source,line:this.line,column:this.column})},this)},i.prototype.join=function(n){var t,i,r=this.children.length;if(r>0){for(t=[],i=0;i=0;)if(t[i]==n)return!0;return!1}function pu(n,t){for(var i=0,r=t.length;i>1);return i+=i,t&1&&(i+=n),i}function te(n,t){this.msg=n,this.defs=t}function di(n,t,i){var u,r;if(n===!0&&(n={}),u=n||{},i)for(r in u)if(u.hasOwnProperty(r)&&!t.hasOwnProperty(r))throw new te("`"+r+"` is not a supported option",t);for(r in t)t.hasOwnProperty(r)&&(u[r]=n&&n.hasOwnProperty(r)?n[r]:t[r]);return u}function ie(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);return n}function ti(){}function dr(n,t){n.indexOf(t)<0&&n.push(t)}function lr(n,t){return n.replace(/\{(.+?)\}/g,function(n,i){return t[i]})}function wu(n,t){for(var i=n.length;--i>=0;)n[i]===t&&n.splice(i,1)}function af(n,t){function r(n,i){for(var r=[],u=0,f=0,e=0;u=0})}function d(n){function e(n){if(n.length==1)return i+="return str === "+JSON.stringify(n[0])+";";i+="switch(str){";for(var t=0;t3){for(r.sort(function(n,t){return t.length-n.length}),i+="switch(str.length){",t=0;t=0;)o+="this."+t[f]+" = props."+t[f]+";";if(s=r&&new r,(s&&s.initialize||i&&i.initialize)&&(o+="this.initialize();"),o+="}}",u=new Function(o)(),s&&(u.prototype=s,u.BASE=r),r&&r.SUBCLASSES.push(u),u.prototype.CTOR=u,u.PROPS=t||null,u.SELF_PROPS=h,u.SUBCLASSES=[],n&&(u.prototype.TYPE=u.TYPE=n),i)for(f in i)i.hasOwnProperty(f)&&(/^\$/.test(f)?u[f.substr(1)]=i[f]:u.prototype[f]=i[f]);return u.DEFMETHOD=function(n,t){this.prototype[n]=t},u}function tr(n,t){n.body instanceof w?n.body._walk(t):n.body.forEach(function(n){n._walk(t)})}function g(n){this.visit=n,this.stack=[]}function wf(n){return n>=97&&n<=122||n>=65&&n<=90||n>=170&&cu.letter.test(String.fromCharCode(n))}function hi(n){return n>=48&&n<=57}function ce(n){return hi(n)||wf(n)}function le(n){return cu.non_spacing_mark.test(n)||cu.space_combining_mark.test(n)}function ae(n){return cu.connector_punctuation.test(n)}function lu(n){return/^[a-z_$][a-z0-9_$]*$/i.test(n)&&!ef(n)}function bf(n){return n==36||n==95||wf(n)}function au(n){var t=n.charCodeAt(0);return bf(t)||hi(t)||t==8204||t==8205||le(n)||ae(n)}function ve(n){return ue.test(n)?parseInt(n.substr(2),16):fe.test(n)?parseInt(n.substr(1),8):ee.test(n)?parseFloat(n):void 0}function kf(n,t,i,r){this.message=n,this.line=t,this.col=i,this.pos=r,this.stack=(new Error).stack}function df(n,t,i,r,u){e.warn("ERROR: {message} [{file}:{line},{col}]",{message:n,file:t,line:i,col:r});throw new kf(n,i,r,u);}function gf(n,t,i){return n.type==t&&(i==null||n.value==i)}function ye(n,t){function f(){return i.text.charAt(i.pos)}function r(n,t){var r=i.text.charAt(i.pos++);if(n&&!r)throw vu;return r=="\n"?(i.newline_before=i.newline_before||!t,++i.line,i.col=0):++i.col,r}function h(n,t){var r=i.text.indexOf(n,i.pos);if(t&&r==-1)throw vu;return r}function b(){i.tokline=i.line,i.tokcol=i.col,i.tokpos=i.pos}function u(n,r,u){var f,e,o;if(i.regex_allowed=n=="operator"&&!ne[r]||n=="keyword"&&of(r)||n=="punc"&&se(r),f={type:n,value:r,line:i.tokline,col:i.tokcol,pos:i.tokpos,endpos:i.pos,nlb:i.newline_before,file:t},!u)for(f.comments_before=i.comments_before,i.comments_before=[],e=0,o=f.comments_before.length;e0;--n)i=parseInt(r(!0),16),isNaN(i)&&e("Invalid hex-character pattern in string"),t=t<<4|i;return t}function g(){r();var n=h("\n"),t;return n==-1?(t=i.text.substr(i.pos),i.pos=i.text.length):(t=i.text.substring(i.pos,n),i.pos=n),u("comment1",t,!0)}function y(){for(var i=!1,t="",n,o=!1,u;(n=f())!=null;)if(i)n!="u"&&e("Expecting UnicodeEscapeSequence -- uXXXX"),n=a(),au(n)||e("Unicode char: "+n.charCodeAt(0)+" is not valid in identifier"),t+=n,i=!1;else if(n=="\\")o=i=!0,r();else if(au(n))t+=r();else break;return kr(t)&&o&&(u=t.charCodeAt(0).toString(16).toUpperCase(),t="\\u"+"0000".substr(u.length)+u+t.slice(1)),t}function w(n){function t(n){if(!f())return n;var i=n+f();return pf(i)?(r(),t(i)):n}return u("operator",t(n||r()))}function tt(){r();var n=i.regex_allowed;switch(f()){case"/":return i.comments_before.push(g()),i.regex_allowed=n,o();case"*":return i.comments_before.push(nt()),i.regex_allowed=n,o()}return i.regex_allowed?p(""):w("/")}function it(){return r(),hi(f().charCodeAt(0))?l("."):u("punc",".")}function rt(){var n=y();return hu(n)?u("atom",n):kr(n)?pf(n)?u("operator",n):u("keyword",n):u("name",n)}function s(n,t){return function(i){try{return t(i)}catch(r){if(r===vu)e(n);else throw r;}}}function o(n){var t,i;if(n!=null)return p(n);if(k(),b(),t=f(),!t)return u("eof");i=t.charCodeAt(0);switch(i){case 34:case 39:return d();case 46:return it();case 47:return tt()}if(hi(i))return l();if(he(t))return u("punc",r());if(re(t))return w();if(i==92||bf(i))return rt();e("Unexpected character '"+t+"'")}var i={text:n.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/\uFEFF/g,""),filename:t,pos:0,tokpos:0,line:1,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]},d=s("Unterminated string constant",function(){for(var e=r(),f="",n,t,i;;){if(n=r(!0),n=="\\")t=0,i=null,n=c(function(n){if(n>="0"&&n<="7")if(i){if(i<="3"&&t<=2||i>="4"&&t<=1)return++t}else return i=n,++t;return!1}),n=t>0?String.fromCharCode(parseInt(n,8)):a(!0);else if(n==e)break;f+=n}return u("string",f)}),nt=s("Unterminated multiline comment",function(){r();var e=h("*/",!0),t=i.text.substring(i.pos,e),f=t.split("\n"),n=f.length;return i.pos=e+2,i.line+=n-1,n>1?i.col=f[n-1].length:i.col+=f[n-1].length,i.col+=2,i.newline_before=i.newline_before||t.indexOf("\n")>=0,u("comment2",t,!0)}),p=s("Unterminated regular expression",function(n){for(var f=!1,t,i=!1,e;t=r(!0);)if(f)n+="\\"+t,f=!1;else if(t=="[")i=!0,n+=t;else if(t=="]"&&i)i=!1,n+=t;else if(t!="/"||i)t=="\\"?f=!0:n+=t;else break;return e=y(),u("regexp",new RegExp(n,e))});return o.context=function(n){return n&&(i=n),i},o}function ke(n,t){function r(n,t){return gf(i.token,n,t)}function ti(){return i.peeked||(i.peeked=i.input())}function u(){return i.prev=i.token,i.peeked?(i.token=i.peeked,i.peeked=null):i.token=i.input(),i.in_directives=i.in_directives&&(i.token.type=="string"||r("punc",";")),i.token}function c(){return i.prev}function d(n,t,r,u){var f=i.input.context();df(n,f.filename,t!=null?t:f.tokline,r!=null?r:f.tokcol,u!=null?u:f.tokpos)}function sr(n,t){d(t,n.line,n.col)}function g(n){n==null&&(n=i.token),sr(n,"Unexpected token: "+n.type+" ("+n.value+")")}function ai(n,t){if(r(n,t))return u();sr(i.token,"Unexpected token "+i.token.type+" «"+i.token.value+"», expected "+n+" «"+t+"»")}function e(n){return ai("punc",n)}function pi(){return!t.strict&&(i.token.nlb||r("eof")||r("punc","}"))}function tt(){r("punc",";")?u():pi()||g()}function ct(){e("(");var n=p(!0);return e(")"),n}function bi(n){return function(){var r=i.token,t=n(),u=c();return t.start=r,t.end=u,t}}function iu(){var n=st(ni),t;return pu(function(t){return t.name==n.name},i.labels)&&d("Label "+n.name+" defined twice"),e(":"),i.labels.push(n),t=w(),i.labels.pop(),new kt({body:t,label:n})}function ri(n){return new h({body:(n=p(!0),tt(),n)})}function hr(n){var t=null;return pi()||(t=st(fr,!0)),t!=null?pu(function(n){return n.name==t.name},i.labels)||d("Undefined label "+t.name):i.in_loop==0&&d(n.TYPE+" not inside a loop or switch"),tt(),new n({label:t})}function hu(){e("(");var n=null;return!r("punc",";")&&(n=r("keyword","var")?(u(),lr(!0)):p(!0,!0),r("operator","in"))?(n instanceof gt&&n.definitions.length>1&&d("Only one variable declaration allowed in for..in loop"),u(),lu(n)):cu(n)}function cu(n){var t,i;return e(";"),t=r("punc",";")?null:p(!0),e(";"),i=r("punc",")")?null:p(!0),e(")"),new v({init:n,condition:t,step:i,body:bt(w)})}function lu(n){var t=n instanceof gt?n.definitions[0].name:null,i=p(!0);return e(")"),new ut({init:n,name:t,object:i,body:bt(w)})}function au(){var t=ct(),i=w(),n=null;return r("keyword","else")&&(u(),n=w()),new et({condition:t,body:i,alternative:n})}function wt(){e("{");for(var n=[];!r("punc","}");)r("eof")&&g(),n.push(w());return u(),n}function vu(){e("{");for(var o=[],t=null,n=null,f;!r("punc","}");)r("eof")&&g(),r("keyword","case")?(n&&(n.end=c()),t=[],n=new ir({start:(f=i.token,u(),f),expression:p(!0),body:t}),o.push(n),e(":")):r("keyword","default")?(n&&(n.end=c()),t=[],n=new ru({start:(f=i.token,u(),e(":"),f),body:t}),o.push(n)):(t||g(),t.push(w()));return n&&(n.end=c()),u(),o}function yu(){var s=wt(),t=null,f=null,o,n;return r("keyword","catch")&&(n=i.token,u(),e("("),o=st(tf),e(")"),t=new rr({start:n,argname:o,body:wt(),end:c()})),r("keyword","finally")&&(n=i.token,u(),f=new vr({start:n,body:wt(),end:c()})),t||f||d("Missing catch/finally blocks"),new yi({body:s,bcatch:t,bfinally:f})}function cr(n,t){for(var f=[];;){if(f.push(new ur({start:i.token,name:st(t?su:ou),value:r("operator","=")?(u(),p(!1,n)):null,end:c()})),!r("punc",","))break;u()}return f}function ff(){var n=i.token,t;switch(n.type){case"name":return st(a);case"num":t=new ki({start:n,end:n,value:n.value});break;case"string":t=new rt({start:n,end:n,value:n.value});break;case"regexp":t=new pr({start:n,end:n,value:n.value});break;case"atom":switch(n.value){case"false":t=new br({start:n,end:n});break;case"true":t=new si({start:n,end:n});break;case"null":t=new rf({start:n,end:n})}}return u(),t}function tr(n,t,f){for(var s=!0,o=[];!r("punc",n);){if(s?s=!1:e(","),t&&r("punc",n))break;r("punc",",")&&f?o.push(new ot({start:i.token,end:i.token})):o.push(p(!1))}return u(),o}function ef(){var n=i.token;u();switch(n.type){case"num":case"string":case"name":case"operator":case"keyword":case"atom":return n.value;default:g()}}function of(){var n=i.token;u();switch(n.type){case"name":case"operator":case"keyword":case"atom":return n.value;default:g()}}function st(n,t){if(!r("name"))return t||d("Name expected"),null;var f=i.token.value,e=new(f=="this"?er:n)({name:String(i.token.value),start:i.token,end:i.token});return u(),e}function dr(n,t,i){return t!="++"&&t!="--"||nu(i)||d("Invalid use of "+t+" operator"),new n({operator:t,expression:i})}function hf(n){return hi(fi(!0),0,n)}function nu(n){if(!t.strict)return!0;switch(n[0]+""){case"dot":case"sub":case"new":case"call":return!0;case"name":return n[1]!="this"}}function bt(n){++i.in_loop;var t=n();return--i.in_loop,t}var i,w,pt,gi,wr,kr,nt,fi,hi,gr,or,p;t=di(t,{strict:!1,filename:null,toplevel:null}),i={input:typeof n=="string"?ye(n,t.filename):n,token:null,prev:null,peeked:null,in_function:0,in_directives:!0,in_loop:0,labels:[]},i.token=u(),w=bi(function(){var n,f,t;(r("operator","/")||r("operator","/="))&&(i.peeked=null,i.token=i.input(i.token.value.substr(1)));switch(i.token.type){case"string":return(f=i.in_directives,t=ri(),f&&t.body instanceof rt&&!r("punc",","))?new ii({value:t.body.value}):t;case"num":case"regexp":case"operator":case"atom":return ri();case"name":return gf(ti(),"punc",":")?iu():ri();case"punc":switch(i.token.value){case"{":return new o({start:i.token,body:wt(),end:c()});case"[":case"(":return ri();case";":return u(),new l;default:g()}case"keyword":switch(n=i.token.value,u(),n){case"break":return hr(ht);case"continue":return hr(vi);case"debugger":return tt(),new nr;case"do":return new ar({body:bt(w),condition:(ai("keyword","while"),n=ct(),tt(),n)});case"while":return new ci({condition:ct(),body:bt(w)});case"for":return hu();case"function":return pt(!0);case"if":return au();case"return":return i.in_function==0&&d("'return' outside of function"),new ft({value:r("punc",";")?(u(),null):pi()?null:(n=p(!0),tt(),n)});case"switch":return new at({expression:ct(),body:bt(vu)});case"throw":return i.token.nlb&&d("Illegal newline after 'throw'"),new tu({value:(n=p(!0),tt(),n)});case"try":return yu();case"var":return n=lr(),tt(),n;case"const":return n=wu(),tt(),n;case"with":return new li({expression:ct(),body:w()});default:g()}}}),pt=function(n,t){var f=r("name")?st(n?gu:t===bu?vf:nf):null;return n&&!f&&g(),e("("),t||(t=n?ui:dt),new t({name:f,argnames:function(n,t){while(!r("punc",")"))n?n=!1:e(","),t.push(st(du));return u(),t}(!0,[]),body:function(n,t){++i.in_function,i.in_directives=!0,i.in_loop=0,i.labels=[];var r=wt();return--i.in_function,i.in_loop=n,i.labels=t,r}(i.in_loop,i.labels)})};var lr=function(n){return new gt({start:c(),definitions:cr(n,!1),end:c()})},wu=function(){return new ku({start:c(),definitions:cr(!1,!0),end:c()})},uf=function(){var f=i.token,t,n;return ai("operator","new"),t=gi(!1),r("punc","(")?(u(),n=tr(")")):n=[],nt(new vt({start:f,expression:t,args:n,end:c()}),!0)};return gi=function(n){var t,f,o;if(r("operator","new"))return uf();if(t=i.token,r("punc")){switch(t.value){case"(":return u(),f=p(!0),f.start=t,f.end=i.token,e(")"),nt(f,n);case"[":return nt(wr(),n);case"{":return nt(kr(),n)}g()}if(r("keyword","function"))return u(),o=pt(!1),o.start=t,o.end=c(),nt(o,n);if(be[i.token.type])return nt(ff(),n);g()},wr=bi(function(){return e("["),new ei({elements:tr("]",!t.strict,!0)})}),kr=bi(function(){var s,n;for(e("{"),s=!0,n=[];!r("punc","}");){if(s?s=!1:e(","),!t.strict&&r("punc","}"))break;var o=i.token,h=o.type,f=ef();if(h=="name"&&!r("punc",":")){if(f=="get"){n.push(new eu({start:o,key:f,value:pt(!1,bu),end:c()}));continue}if(f=="set"){n.push(new fu({start:o,key:f,value:pt(!1,bu),end:c()}));continue}}e(":"),n.push(new uu({start:o,key:f,value:p(!1),end:c()}))}return u(),new oi({properties:n})}),nt=function(n,t){var i=n.start,f;return r("punc",".")?(u(),nt(new yt({start:i,expression:n,property:of(),end:c()}),t)):r("punc","[")?(u(),f=p(!0),e("]"),nt(new wi({start:i,expression:n,property:f,end:c()}),t)):t&&r("punc","(")?(u(),nt(new b({start:i,expression:n,args:tr(")"),end:c()}),!0)):n},fi=function(n){var f=i.token,e,t;if(r("operator")&&pe(f.value))return u(),e=dr(it,f.value,fi(n)),e.start=f,e.end=c(),e;for(t=gi(n);r("operator")&&ne(i.token.value)&&!i.token.nlb;)t=dr(yr,i.token.value,t),t.start=f,t.end=i.token,u();return t},hi=function(n,t,e){var o=r("operator")?i.token.value:null,s,h;return(o=="in"&&e&&(o=null),s=o!=null?sf[o]:null,s!=null&&s>t)?(u(),h=hi(fi(!0),s,e),hi(new f({start:n.start,left:n,operator:o,right:h,end:h.end}),t,e)):n},gr=function(n){var o=i.token,t=hf(n),f;return r("operator","?")?(u(),f=p(!1),e(":"),new y({start:o,condition:t,consequent:f,alternative:p(!1,n),end:ti()})):t},or=function(n){var e=i.token,t=gr(n),f=i.token.value;if(r("operator")&&we(f)){if(nu(t))return u(),new k({start:e,left:t,operator:f,right:or(n),end:ti()});d("Invalid assignment")}return t},p=function(n,t){var e=i.token,f=or(t);return n&&r("punc",",")?(u(),new s({start:e,car:f,cdr:p(!0,t),end:ti()})):f},function(){for(var e=i.token,u=[],f,n;!r("eof");)u.push(w());return f=c(),n=t.toplevel,n?(n.body=n.body.concat(u),n.end=f):n=new lt({start:e,body:u,end:f}),n}()}function or(n,t){g.call(this),this.before=n,this.after=t}function hf(n,t,i){this.name=i.name,this.orig=[i],this.scope=n,this.references=[],this.global=!1,this.mangled_name=null,this.undeclared=!1,this.constant=!1,this.index=t}function de(n){function a(n){return n.replace(/[\u0080-\uffff]/g,function(n){for(var t=n.charCodeAt(0).toString(16);t.length<4;)t="0"+t;return"\\u"+t})}function tt(t){var i=0,r=0;return t=t.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g,function(n){switch(n){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case'"':return++i,'"';case"'":return++r,"'";case"\0":return"\\0"}return n}),n.ascii_only&&(t=a(t)),i>r?"'"+t.replace(/\x27/g,"\\'")+"'":'"'+t.replace(/\x22/g,'\\"')+'"'}function it(t){var i=tt(t);return n.inline_script&&(i=i.replace(/<\x2fscript([>\/\t\n\f\r ])/gi,"<\\/script$1")),i}function rt(t){return t=t.toString(),n.ascii_only&&(t=a(t)),t}function ut(t){return lf(" ",n.indent_start+r-t*n.indent_level)}function ft(){return h.charAt(h.length-1)}function et(){n.max_line_len&&i>n.max_line_len&&t("\n")}function t(t){var r,a,e,u;t=String(t),r=t.charAt(0),l&&((!r||";}".indexOf(r)<0)&&!/[;]$/.test(h)&&(n.semicolons||p(r)?(s+=";",i++,o++):(s+="\n",o++,f++,i=0),n.beautify||(c=!1)),l=!1,et()),c&&(a=ft(),(au(a)&&(au(r)||r=="\\")||/^[\+\-\/]$/.test(r)&&r==a)&&(s+=" ",i++,o++),c=!1),e=t.split(/\r?\n/),u=e.length-1,f+=u,u==0?i+=e[u].length:i=e[u].length,o+=t.length,h=t,s+=t}function st(){l=!1,t(";")}function y(){return r+n.indent_level}function ht(n){var i;return t("{"),k(),b(y(),function(){i=n()}),w(),t("}"),i}function ct(n){t("(");var i=n();return t(")"),i}function lt(n){t("[");var i=n();return t("]"),i}function at(){t(","),v()}function vt(){t(":"),n.space_colon&&v()}function nt(){return s}var p,g,u;n=di(n,{indent_start:0,indent_level:4,quote_keys:!1,space_colon:!0,ascii_only:!1,inline_script:!1,width:80,max_line_len:32e3,ie_proof:!0,beautify:!1,source_map:null,bracketize:!1,semicolons:!0,comments:!1},!0);var r=0,i=0,f=1,o=0,s="";var c=!1,l=!1,h=null;p=d("( [ + * / - , .");var v=n.beautify?function(){t(" ")}:function(){c=!0},w=n.beautify?function(i){n.beautify&&t(ut(i?.5:0))}:ti,b=n.beautify?function(n,t){var i,u;return n===!0&&(n=y()),i=r,r=n,u=t(),r=i,u}:function(n,t){return t()},k=n.beautify?function(){t("\n")}:ti,ot=n.beautify?function(){t(";")}:function(){l=!0};return g=n.source_map?function(t,r){try{t&&n.source_map.add(t.file||"?",f,i,t.line,t.col,!r&&t.type=="name"?t.value:r)}catch(u){e.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]",{file:t.file,line:t.line,col:t.col,cline:f,ccol:i,name:r||""})}}:ti,u=[],{get:nt,toString:nt,indent:w,indentation:function(){return r},current_width:function(){return i-r},should_break:function(){return n.width&&this.current_width()>=n.width},newline:k,print:t,space:v,comma:at,colon:vt,last:function(){return h},semicolon:ot,force_semicolon:st,to_ascii:a,print_name:function(n){t(rt(n))},print_string:function(n){t(it(n))},next_indent:y,with_indent:b,with_block:ht,with_parens:ct,with_square:lt,add_mapping:g,option:function(t){return n[t]},line:function(){return f},col:function(){return i},pos:function(){return o},push_node:function(n){u.push(n)},pop_node:function(){return u.pop()},stack:function(){return u},parent:function(n){return u[u.length-2-(n||0)]}}}function yu(n,t){if(!(this instanceof yu))return new yu(n,t);or.call(this,this.before,this.after),this.options=di(n,{sequences:!t,properties:!t,dead_code:!t,drop_debugger:!t,unsafe:!t,unsafe_comps:!1,conditionals:!t,comparisons:!t,evaluate:!t,booleans:!t,loops:!t,unused:!t,hoist_funs:!t,hoist_vars:!1,if_return:!t,join_vars:!t,cascade:!t,side_effects:!t,warnings:!0,global_defs:{}},!0)}function uo(n){function u(n,t,u,f,e,o){if(r){var s=r.originalPositionFor({line:f,column:e});n=s.source,f=s.line,e=s.column,o=s.name}i.addMapping({generated:{line:t,column:u},original:{line:f,column:e},source:n,name:o})}n=di(n,{file:null,root:null,orig:null});var i=new t.SourceMapGenerator({file:n.file,sourceRoot:n.root}),r=n.orig&&new t.SourceMapConsumer(n.orig);return{add:u,get:function(){return i},toString:function(){return i.toString()}}}var cr,gr,e,vu,u;i.UglifyJS=n,cr=function(){function n(n,f,e){function c(){var c=f(n[o],o),l=c instanceof r;return l&&(c=c.v),c instanceof i?(c=c.v,c instanceof t?h.push.apply(h,e?c.v.slice().reverse():c.v):h.push(c)):c!==u&&(c instanceof t?s.push.apply(s,e?c.v.slice().reverse():c.v):s.push(c)),l}var s=[],h=[],o;if(n instanceof Array){if(e){for(o=n.length;--o>=0;)if(c())break;s.reverse(),h.reverse()}else for(o=0;o SymbolDef for all variables/functions defined in this scope",functions:"[Object/S] like `variables`, but only lists function declarations",uses_with:"[boolean/S] tells whether this scope uses the `with` statement",uses_eval:"[boolean/S] tells whether this scope contains a direct call to the global `eval`",parent_scope:"[AST_Scope?/S] link to the parent scope",enclosed:"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes",cname:"[integer/S] current index for mangling variables (used internally by the mangler)"}},st),lt=r("Toplevel","globals",{$documentation:"The toplevel scope",$propdoc:{globals:"[Object/S] a map of name -> SymbolDef for all undeclared names"},wrap_commonjs:function(n,t){var u=this,i,r;return t&&(u.figure_out_scope(),i=[],u.walk(new g(function(n){n instanceof wt&&n.definition().global&&(pu(function(t){return t.name==n.name},i)||i.push(n))}))),r="(function(exports, global){ global['"+n+"'] = exports; '$ORIG'; '$EXPORTS'; }({}, (function(){return this}())))",r=ke(r),r.transform(new or(function(n){if(n instanceof h&&(n=n.body,n instanceof rt))switch(n.getValue()){case"$ORIG":return cr.splice(u.body);case"$EXPORTS":var t=[];return i.forEach(function(n){t.push(new h({body:new k({left:new wi({expression:new a({name:"exports"}),property:new rt({value:n.name})}),operator:"=",right:new a(n)})}))}),cr.splice(t)}}))}},c),nt=r("Lambda","name argnames uses_arguments",{$documentation:"Base class for functions",$propdoc:{name:"[AST_SymbolDeclaration?] the name of this function",argnames:"[AST_SymbolFunarg*] array of function arguments",uses_arguments:"[boolean/S] tells whether this function accesses the arguments array"},_walk:function(n){return n._visit(this,function(){this.name&&this.name._walk(n),this.argnames.forEach(function(t){t._walk(n)}),tr(this,n)})}},c),bu=r("Accessor",null,{$documentation:"A setter/getter function"},nt),dt=r("Function",null,{$documentation:"A function expression"},nt),ui=r("Defun",null,{$documentation:"A function definition"},nt),nu=r("Jump",null,{$documentation:"Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)"},w),fi=r("Exit","value",{$documentation:"Base class for “exits” (`return` and `throw`)",$propdoc:{value:"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return"},_walk:function(n){return n._visit(this,this.value&&function(){this.value._walk(n)})}},nu),ft=r("Return",null,{$documentation:"A `return` statement"},fi),tu=r("Throw",null,{$documentation:"A `throw` statement"},fi),ai=r("LoopControl","label",{$documentation:"Base class for loop control statements (`break` and `continue`)",$propdoc:{label:"[AST_LabelRef?] the label, or null if none"},_walk:function(n){return n._visit(this,this.label&&function(){this.label._walk(n)})}},nu),ht=r("Break",null,{$documentation:"A `break` statement"},ai),vi=r("Continue",null,{$documentation:"A `continue` statement"},ai),et=r("If","condition alternative",{$documentation:"A `if` statement",$propdoc:{condition:"[AST_Node] the `if` condition",alternative:"[AST_Statement?] the `else` part, or null if not present"},_walk:function(n){return n._visit(this,function(){this.condition._walk(n),this.body._walk(n),this.alternative&&this.alternative._walk(n)})}},bt),at=r("Switch","expression",{$documentation:"A `switch` statement",$propdoc:{expression:"[AST_Node] the `switch` “discriminant”"},_walk:function(n){return n._visit(this,function(){this.expression._walk(n),tr(this,n)})}},st),iu=r("SwitchBranch",null,{$documentation:"Base class for `switch` branches"},st),ru=r("Default",null,{$documentation:"A `default` switch branch"},iu),ir=r("Case","expression",{$documentation:"A `case` switch branch",$propdoc:{expression:"[AST_Node] the `case` expression"},_walk:function(n){return n._visit(this,function(){this.expression._walk(n),tr(this,n)})}},iu),yi=r("Try","bcatch bfinally",{$documentation:"A `try` statement",$propdoc:{bcatch:"[AST_Catch?] the catch block, or null if not present",bfinally:"[AST_Finally?] the finally block, or null if not present"},_walk:function(n){return n._visit(this,function(){tr(this,n),this.bcatch&&this.bcatch._walk(n),this.bfinally&&this.bfinally._walk(n)})}},st),rr=r("Catch","argname",{$documentation:"A `catch` node; only makes sense as part of a `try` statement",$propdoc:{argname:"[AST_SymbolCatch] symbol for the exception"},_walk:function(n){return n._visit(this,function(){this.argname._walk(n),tr(this,n)})}},st),vr=r("Finally",null,{$documentation:"A `finally` node; only makes sense as part of a `try` statement"},st),tt=r("Definitions","definitions",{$documentation:"Base class for `var` or `const` nodes (variable declarations/initializations)",$propdoc:{definitions:"[AST_VarDef*] array of variable definitions"},_walk:function(n){return n._visit(this,function(){this.definitions.forEach(function(t){t._walk(n)})})}},w),gt=r("Var",null,{$documentation:"A `var` statement"},tt),ku=r("Const",null,{$documentation:"A `const` statement"},tt),ur=r("VarDef","name value",{$documentation:"A variable declaration; only appears in a AST_Definitions node",$propdoc:{name:"[AST_SymbolVar|AST_SymbolConst] name of the variable",value:"[AST_Node?] initializer, or null of there's no initializer"},_walk:function(n){return n._visit(this,function(){this.name._walk(n),this.value&&this.value._walk(n)})}}),b=r("Call","expression args",{$documentation:"A function call expression",$propdoc:{expression:"[AST_Node] expression to invoke as function",args:"[AST_Node*] array of arguments"},_walk:function(n){return n._visit(this,function(){this.expression._walk(n),this.args.forEach(function(t){t._walk(n)})})}}),vt=r("New",null,{$documentation:"An object instantiation. Derives from a function call since it has exactly the same properties"},b),s=r("Seq","car cdr",{$documentation:"A sequence expression (two comma-separated expressions)",$propdoc:{car:"[AST_Node] first element in sequence",cdr:"[AST_Node] second element in sequence"},$cons:function(n,t){var i=new s(n);return i.car=n,i.cdr=t,i},$from_array:function(n){var i,r,t;if(n.length==0)return null;if(n.length==1)return n[0].clone();for(i=null,r=n.length;--r>=0;)i=s.cons(n[r],i);for(t=i;t;){if(t.cdr&&!t.cdr.cdr){t.cdr=t.cdr.car;break}t=t.cdr}return i},to_array:function(){for(var n=this,t=[];n;){if(t.push(n.car),n.cdr&&!(n.cdr instanceof s)){t.push(n.cdr);break}n=n.cdr}return t},add:function(n){for(var t=this,i;t;){if(!(t.cdr instanceof s))return i=s.cons(t.cdr,n),t.cdr=i;t=t.cdr}},_walk:function(n){return n._visit(this,function(){this.car._walk(n),this.cdr&&this.cdr._walk(n)})}}),pi=r("PropAccess","expression property",{$documentation:'Base class for property access expressions, i.e. `a.foo` or `a["foo"]`',$propdoc:{expression:"[AST_Node] the “container” expression",property:"[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node"}}),yt=r("Dot",null,{$documentation:"A dotted property access expression",_walk:function(n){return n._visit(this,function(){this.expression._walk(n)})}},pi),wi=r("Sub",null,{$documentation:'Index-style property access, i.e. `a["foo"]`',_walk:function(n){return n._visit(this,function(){this.expression._walk(n),this.property._walk(n)})}},pi),pt=r("Unary","operator expression",{$documentation:"Base class for unary expressions",$propdoc:{operator:"[string] the operator",expression:"[AST_Node] expression that this unary operator applies to"},_walk:function(n){return n._visit(this,function(){this.expression._walk(n)})}}),it=r("UnaryPrefix",null,{$documentation:"Unary prefix expression, i.e. `typeof i` or `++i`"},pt),yr=r("UnaryPostfix",null,{$documentation:"Unary postfix expression, i.e. `i++`"},pt),f=r("Binary","left operator right",{$documentation:"Binary expression, i.e. `a + b`",$propdoc:{left:"[AST_Node] left-hand side expression",operator:"[string] the operator",right:"[AST_Node] right-hand side expression"},_walk:function(n){return n._visit(this,function(){this.left._walk(n),this.right._walk(n)})}}),y=r("Conditional","condition consequent alternative",{$documentation:"Conditional expression using the ternary operator, i.e. `a ? b : c`",$propdoc:{condition:"[AST_Node]",consequent:"[AST_Node]",alternative:"[AST_Node]"},_walk:function(n){return n._visit(this,function(){this.condition._walk(n),this.consequent._walk(n),this.alternative._walk(n)})}}),k=r("Assign",null,{$documentation:"An assignment expression — `a = b + 5`"},f),ei=r("Array","elements",{$documentation:"An array literal",$propdoc:{elements:"[AST_Node*] array of elements"},_walk:function(n){return n._visit(this,function(){this.elements.forEach(function(t){t._walk(n)})})}}),oi=r("Object","properties",{$documentation:"An object literal",$propdoc:{properties:"[AST_ObjectProperty*] array of properties"},_walk:function(n){return n._visit(this,function(){this.properties.forEach(function(t){t._walk(n)})})}}),bi=r("ObjectProperty","key value",{$documentation:"Base class for literal object properties",$propdoc:{key:"[string] the property name; it's always a plain string in our AST, no matter if it was a string, number or identifier in original code",value:"[AST_Node] property value. For setters and getters this is an AST_Function."},_walk:function(n){return n._visit(this,function(){this.value._walk(n)})}}),uu=r("ObjectKeyVal",null,{$documentation:"A key: value object property"},bi),fu=r("ObjectSetter",null,{$documentation:"An object setter property"},bi),eu=r("ObjectGetter",null,{$documentation:"An object getter property"},bi),p=r("Symbol","scope name thedef",{$propdoc:{name:"[string] name of this symbol",scope:"[AST_Scope/S] the current scope (not necessarily the definition scope)",thedef:"[SymbolDef/S] the definition of this symbol"},$documentation:"Base class for all symbols"}),vf=r("SymbolAccessor",null,{$documentation:"The name of a property accessor (setter/getter function)"},p),wt=r("SymbolDeclaration","init",{$documentation:"A declaration symbol (symbol in var/const, function name or argument, symbol in catch)",$propdoc:{init:"[AST_Node*/S] array of initializers for this declaration."}},p),ou=r("SymbolVar",null,{$documentation:"Symbol defining a variable"},wt),su=r("SymbolConst",null,{$documentation:"A constant declaration"},wt),du=r("SymbolFunarg",null,{$documentation:"Symbol naming a function argument"},ou),gu=r("SymbolDefun",null,{$documentation:"Symbol defining a function"},wt),nf=r("SymbolLambda",null,{$documentation:"Symbol naming a function expression"},wt),tf=r("SymbolCatch",null,{$documentation:"Symbol naming the exception in catch"},wt),ni=r("Label","references",{$documentation:"Symbol naming a label (declaration)",$propdoc:{references:"[AST_LabelRef*] a list of nodes referring to this label"}},p),a=r("SymbolRef",null,{$documentation:"Reference to some symbol (not definition/declaration)"},p),fr=r("LabelRef",null,{$documentation:"Reference to a label symbol"},p),er=r("This",null,{$documentation:"The `this` symbol"},p),ct=r("Constant",null,{$documentation:"Base class for all constants",getValue:function(){return this.value}}),rt=r("String","value",{$documentation:"A string literal",$propdoc:{value:"[string] the contents of this string"}},ct),ki=r("Number","value",{$documentation:"A number literal",$propdoc:{value:"[number] the numeric value"}},ct),pr=r("RegExp","value",{$documentation:"A regexp literal",$propdoc:{value:"[RegExp] the actual regexp"}},ct),wr=r("Atom",null,{$documentation:"Base class for atoms"},ct),rf=r("Null",null,{$documentation:"The `null` atom",value:null},wr),uf=r("NaN",null,{$documentation:"The impossible value",value:NaN},wr),ot=r("Undefined",null,{$documentation:"The `undefined` value",value:function(){}()},wr),yf=r("Infinity",null,{$documentation:"The `Infinity` value",value:1/0},wr),ff=r("Boolean",null,{$documentation:"Base class for booleans"},wr),br=r("False",null,{$documentation:"The `false` atom",value:!1},ff),si=r("True",null,{$documentation:"The `true` atom",value:!0},ff);g.prototype={_visit:function(n,t){this.stack.push(n);var i=this.visit(n,t?function(){t.call(n)}:ti);return!i&&t&&t.call(n),this.stack.pop(),i},parent:function(n){return this.stack[this.stack.length-2-(n||0)]},push:function(n){this.stack.push(n)},pop:function(){return this.stack.pop()},self:function(){return this.stack[this.stack.length-1]},find_parent:function(n){for(var r=this.stack,i,t=r.length;--t>=0;)if(i=r[t],i instanceof n)return i},in_boolean_context:function(){for(var i=this.stack,r=i.length,t=i[--r],n;r>0;){if(n=i[--r],n instanceof et&&n.condition===t||n instanceof y&&n.condition===t||n instanceof ri&&n.condition===t||n instanceof v&&n.condition===t||n instanceof it&&n.operator=="!"&&n.expression===t)return!0;if(!(n instanceof f&&(n.operator=="&&"||n.operator=="||")))return!1;t=n}},loopcontrol_target:function(n){var r=this.stack,i,t;if(n){for(i=r.length;--i>=0;)if(t=r[i],t instanceof kt&&t.label.name==n.name)return t.body}else for(i=r.length;--i>=0;)if(t=r[i],t instanceof at||t instanceof v||t instanceof ut||t instanceof ri)return t}},"use strict";var kr="break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with",hu="false null true",ef="abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized this throws transient volatile "+hu+" "+kr,of="return new delete throw else case";kr=d(kr),ef=d(ef),of=d(of),hu=d(hu);var re=d(sr("+-*&%=<>!?|~^")),ue=/^0x[0-9a-f]+$/i,fe=/^0[0-7]+$/,ee=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,pf=d(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),oe=d(sr("  \n\r\t\f\x0b​᠎              ")),se=d(sr("[{(,.;:")),he=d(sr("[]{}(),;:")),io=d(sr("gmsiy")),cu={letter:new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};kf.prototype.toString=function(){return this.message+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")\n\n"+this.stack},vu={};var pe=d(["typeof","void","delete","--","++","!","~","-","+"]),ne=d(["--","++"]),we=d(["=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&="]),sf=function(n,t){for(var f,r,i=0,u=1;i","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),ro=cf(["for","do","while","switch"]),be=cf(["atom","num","string","regexp","name"]);or.prototype=new g,function(n){function t(t,i){t.DEFMETHOD("transform",function(t,r){var u,f;return t.push(this),t.before&&(u=t.before(this,i,r)),u===n&&(t.after?(t.stack[t.stack-1]=u=this.clone(),i(u,t),f=t.after(u,r),f!==n&&(u=f)):(u=this,i(u,t))),t.pop(),u})}function i(n,t){return cr(n,function(n){return n.transform(t,!0)})}t(e,ti),t(kt,function(n,t){n.label=n.label.transform(t),n.body=n.body.transform(t)}),t(h,function(n,t){n.body=n.body.transform(t)}),t(st,function(n,t){n.body=i(n.body,t)}),t(ri,function(n,t){n.condition=n.condition.transform(t),n.body=n.body.transform(t)}),t(v,function(n,t){n.init&&(n.init=n.init.transform(t)),n.condition&&(n.condition=n.condition.transform(t)),n.step&&(n.step=n.step.transform(t)),n.body=n.body.transform(t)}),t(ut,function(n,t){n.init=n.init.transform(t),n.object=n.object.transform(t),n.body=n.body.transform(t)}),t(li,function(n,t){n.expression=n.expression.transform(t),n.body=n.body.transform(t)}),t(fi,function(n,t){n.value&&(n.value=n.value.transform(t))}),t(ai,function(n,t){n.label&&(n.label=n.label.transform(t))}),t(et,function(n,t){n.condition=n.condition.transform(t),n.body=n.body.transform(t),n.alternative&&(n.alternative=n.alternative.transform(t))}),t(at,function(n,t){n.expression=n.expression.transform(t),n.body=i(n.body,t)}),t(ir,function(n,t){n.expression=n.expression.transform(t),n.body=i(n.body,t)}),t(yi,function(n,t){n.body=i(n.body,t),n.bcatch&&(n.bcatch=n.bcatch.transform(t)),n.bfinally&&(n.bfinally=n.bfinally.transform(t))}),t(rr,function(n,t){n.argname=n.argname.transform(t),n.body=i(n.body,t)}),t(tt,function(n,t){n.definitions=i(n.definitions,t)}),t(ur,function(n,t){n.value&&(n.value=n.value.transform(t))}),t(nt,function(n,t){n.name&&(n.name=n.name.transform(t)),n.argnames=i(n.argnames,t),n.body=i(n.body,t)}),t(b,function(n,t){n.expression=n.expression.transform(t),n.args=i(n.args,t)}),t(s,function(n,t){n.car=n.car.transform(t),n.cdr=n.cdr.transform(t)}),t(yt,function(n,t){n.expression=n.expression.transform(t)}),t(wi,function(n,t){n.expression=n.expression.transform(t),n.property=n.property.transform(t)}),t(pt,function(n,t){n.expression=n.expression.transform(t)}),t(f,function(n,t){n.left=n.left.transform(t),n.right=n.right.transform(t)}),t(y,function(n,t){n.condition=n.condition.transform(t),n.consequent=n.consequent.transform(t),n.alternative=n.alternative.transform(t)}),t(ei,function(n,t){n.elements=i(n.elements,t)}),t(oi,function(n,t){n.properties=i(n.properties,t)}),t(bi,function(n,t){n.value=n.value.transform(t)})}(),hf.prototype={unmangleable:function(n){return this.global||this.undeclared||!(n&&n.eval)&&(this.scope.uses_eval||this.scope.uses_with)},mangle:function(n){this.mangled_name||this.unmangleable(n)||(this.mangled_name=this.scope.next_mangled(n))}},lt.DEFMETHOD("figure_out_scope",function(){var i=this,n=i.parent_scope=null,r=new gi,e=0,t=new g(function(i,u){var l,o,f,s,h;if(i instanceof c)return i.init_scope_vars(e),l=i.parent_scope=n,++e,n=i,u(),n=l,--e,!0;if(i instanceof ii)return i.scope=n,dr(n.directives,i.value),!0;if(i instanceof li){for(o=n;o;o=o.parent_scope)o.uses_with=!0;return}if(i instanceof kt){if(f=i.label,r.has(f.name))throw new Error(lr("Label {name} defined twice",f));return r.set(f.name,f),u(),r.del(f.name),!0}if(i instanceof wt&&i.init_scope_vars(),i instanceof p&&(i.scope=n),i instanceof ni&&(i.thedef=i,i.init_scope_vars()),i instanceof nf?((i.scope=n.parent_scope).def_function(i),i.init.push(t.parent())):i instanceof gu?((i.scope=n.parent_scope).def_function(i),i.init.push(t.parent())):i instanceof ou||i instanceof su?(s=n.def_variable(i),s.constant=i instanceof su,s=t.parent(),s.value&&i.init.push(s)):i instanceof tf&&n.def_variable(i),i instanceof fr){if(h=r.get(i.name),!h)throw new Error(lr("Undefined label {name} [{line},{col}]",{name:i.name,line:i.start.line,col:i.start.col}));i.thedef=h}});i.walk(t);var u=null,f=i.globals=new gi,t=new g(function(n,r){var c,e,h,s,o;if(n instanceof nt)return c=u,u=n,r(),u=c,!0;if(n instanceof fr)return n.reference(),!0;if(n instanceof a){if(e=n.name,h=n.scope.find_variable(e),h)n.thedef=h;else{if(f.has(e)?s=f.get(e):(s=new hf(i,f.size(),n),s.undeclared=!0,f.set(e,s)),n.thedef=s,e=="eval"&&t.parent()instanceof b)for(o=n.scope;o&&!o.uses_eval;o=o.parent_scope)o.uses_eval=!0;e=="arguments"&&(u.uses_arguments=!0)}return n.reference(),!0}});i.walk(t)}),c.DEFMETHOD("init_scope_vars",function(n){this.directives=[],this.variables=new gi,this.functions=new gi,this.uses_with=!1,this.uses_eval=!1,this.parent_scope=null,this.enclosed=[],this.cname=-1,this.nesting=n}),c.DEFMETHOD("strict",function(){return this.has_directive("use strict")}),nt.DEFMETHOD("init_scope_vars",function(){c.prototype.init_scope_vars.apply(this,arguments),this.uses_arguments=!1}),a.DEFMETHOD("reference",function(){var t=this.definition(),n;for(t.references.push(this),n=this.scope;n;){if(dr(n.enclosed,t),n===t.scope)break;n=n.parent_scope}this.frame=this.scope.nesting-t.scope.nesting}),wt.DEFMETHOD("init_scope_vars",function(){this.init=[]}),ni.DEFMETHOD("init_scope_vars",function(){this.references=[]}),fr.DEFMETHOD("reference",function(){this.thedef.references.push(this)}),c.DEFMETHOD("find_variable",function(n){return n instanceof p&&(n=n.name),this.variables.get(n)||this.parent_scope&&this.parent_scope.find_variable(n)}),c.DEFMETHOD("has_directive",function(n){return this.parent_scope&&this.parent_scope.has_directive(n)||(this.directives.indexOf(n)>=0?this:null)}),c.DEFMETHOD("def_function",function(n){this.functions.set(n.name,this.def_variable(n))}),c.DEFMETHOD("def_variable",function(n){var t;return this.variables.has(n.name)?(t=this.variables.get(n.name),t.orig.push(n)):(t=new hf(this,this.variables.size(),n),this.variables.set(n.name,t),t.global=!this.parent_scope),n.thedef=t}),c.DEFMETHOD("next_mangled",function(n){var f=this.enclosed,o=f.length,t,r,i,e;n:for(;;)if(t=u(++this.cname),lu(t)){for(r=o;--r>=0;)if(i=f[r],e=i.mangled_name||i.unmangleable(n)&&i.name,t==e)continue n;return t}}),c.DEFMETHOD("references",function(n){return n instanceof p&&(n=n.definition()),this.enclosed.indexOf(n)<0?null:n}),p.DEFMETHOD("unmangleable",function(n){return this.definition().unmangleable(n)}),vf.DEFMETHOD("unmangleable",function(){return!0}),ni.DEFMETHOD("unmangleable",function(){return!1}),p.DEFMETHOD("unreferenced",function(){return this.definition().references.length==0&&!(this.scope.uses_eval||this.scope.uses_with)}),p.DEFMETHOD("undeclared",function(){return this.definition().undeclared}),fr.DEFMETHOD("undeclared",function(){return!1}),ni.DEFMETHOD("undeclared",function(){return!1}),p.DEFMETHOD("definition",function(){return this.thedef}),p.DEFMETHOD("global",function(){return this.definition().global}),lt.DEFMETHOD("_default_mangler_options",function(n){return di(n,{except:[],eval:!1})}),lt.DEFMETHOD("mangle_names",function(n){n=this._default_mangler_options(n);var t=-1,i=[],r=new g(function(f,e){var s,h,o;if(f instanceof kt)return s=t,e(),t=s,!0;if(f instanceof c){h=r.parent(),f.variables.each(function(t){n.except.indexOf(t.name)<0&&i.push(t)});return}if(f instanceof ni){do o=u(++t);while(!lu(o));return f.mangled_name=o,!0}});this.walk(r),i.forEach(function(t){t.mangle(n)})}),lt.DEFMETHOD("compute_char_frequency",function(n){n=this._default_mangler_options(n);var t=new g(function(t){t instanceof ct?u.consider(t.print_to_string()):t instanceof ft?u.consider("return"):t instanceof tu?u.consider("throw"):t instanceof vi?u.consider("continue"):t instanceof ht?u.consider("break"):t instanceof nr?u.consider("debugger"):t instanceof ii?u.consider(t.value):t instanceof ci?u.consider("while"):t instanceof ar?u.consider("do while"):t instanceof et?(u.consider("if"),t.alternative&&u.consider("else")):t instanceof gt?u.consider("var"):t instanceof ku?u.consider("const"):t instanceof nt?u.consider("function"):t instanceof v?u.consider("for"):t instanceof ut?u.consider("for in"):t instanceof at?u.consider("switch"):t instanceof ir?u.consider("case"):t instanceof ru?u.consider("default"):t instanceof li?u.consider("with"):t instanceof fu?u.consider("set"+t.key):t instanceof eu?u.consider("get"+t.key):t instanceof uu?u.consider(t.key):t instanceof vt?u.consider("new"):t instanceof er?u.consider("this"):t instanceof yi?u.consider("try"):t instanceof rr?u.consider("catch"):t instanceof vr?u.consider("finally"):t instanceof p&&t.unmangleable(n)?u.consider(t.name):t instanceof pt||t instanceof f?u.consider(t.operator):t instanceof yt&&u.consider(t.property)});this.walk(t),u.sort()}),u=function(){function r(){n=Object.create(null),t=u.split("").map(function(n){return n.charCodeAt(0)}),t.forEach(function(t){n[t]=0})}function i(n){var r="",i=54;do r+=String.fromCharCode(t[n%i]),n=Math.floor(n/i),i=64;while(n>0);return r}var u="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789",t,n;return i.consider=function(t){for(var r,i=t.length;--i>=0;)r=t.charCodeAt(i),r in n&&++n[r]},i.sort=function(){t=af(t,function(t,i){return hi(t)&&!hi(i)?1:hi(i)&&!hi(t)?-1:n[i]-n[t]})},i.reset=r,r(),i.get=function(){return t},i.freq=function(){return n},i}(),lt.DEFMETHOD("scope_warnings",function(n){n=di(n,{undeclared:!1,unreferenced:!0,assign_to_global:!0,func_arguments:!0,nested_defuns:!0,eval:!0});var t=new g(function(i){if(n.undeclared&&i instanceof a&&i.undeclared()&&e.warn("Undeclared symbol: {name} [{file}:{line},{col}]",{name:i.name,file:i.start.file,line:i.start.line,col:i.start.col}),n.assign_to_global){var r=null;i instanceof k&&i.left instanceof a?r=i.left:i instanceof ut&&i.init instanceof a&&(r=i.init),r&&(r.undeclared()||r.global()&&r.scope!==r.definition().scope)&&e.warn("{msg}: {name} [{file}:{line},{col}]",{msg:r.undeclared()?"Accidental global?":"Assignment to global",name:r.name,file:r.start.file,line:r.start.line,col:r.start.col})}n.eval&&i instanceof a&&i.undeclared()&&i.name=="eval"&&e.warn("Eval is used [{file}:{line},{col}]",i.start),n.unreferenced&&(i instanceof wt||i instanceof ni)&&i.unreferenced()&&e.warn("{type} {name} is declared but not referenced [{file}:{line},{col}]",{type:i instanceof ni?"Label":"Symbol",name:i.name,file:i.start.file,line:i.start.line,col:i.start.col}),n.func_arguments&&i instanceof nt&&i.uses_arguments&&e.warn("arguments used in function {name} [{file}:{line},{col}]",{name:i.name?i.name.name:"anonymous",file:i.start.file,line:i.start.line,col:i.start.col}),n.nested_defuns&&i instanceof ui&&!(t.parent()instanceof c)&&e.warn('Function {name} declared in nested statement "{type}" [{file}:{line},{col}]',{name:i.name.name,type:t.parent().TYPE,file:i.start.file,line:i.start.line,col:i.start.col})});this.walk(t)}),function(){function n(n,t){n.DEFMETHOD("print",function(n){var i=this;n.push_node(i),i.needs_parens(n)?n.with_parens(function(){i.add_comments(n),i.add_source_map(n),t(i,n)}):(i.add_comments(n),i.add_source_map(n),t(i,n)),n.pop_node()})}function r(n,t){n.DEFMETHOD("needs_parens",t)}function a(n){var t=n.parent();return t instanceof pt?!0:t instanceof f&&!(t instanceof k)?!0:t instanceof b&&t.expression===this?!0:t instanceof y&&t.condition===this?!0:t instanceof pi&&t.expression===this?!0:void 0}function d(n,t,i){var r=n.length-1;n.forEach(function(n,u){n instanceof l||(i.indent(),n.print(i),u==r&&t||(i.newline(),t&&i.newline()))})}function u(n,t){n.length>0?t.with_block(function(){d(n,!1,t)}):t.print("{}")}function ui(n,t){if(t.option("bracketize")){c(n.body,t);return}if(!n.body)return t.semicolon();if(n.body instanceof ar&&t.option("ie_proof")){c(n.body,t);return}for(var i=n.body;;)if(i instanceof et){if(!i.alternative){c(n.body,t);return}i=i.alternative}else if(i instanceof bt)i=i.body;else break;n.body.print(t)}function st(n,t){t.option("bracketize")?!n||n instanceof l?t.print("{}"):n instanceof o?n.print(t):t.with_block(function(){t.indent(),n.print(t),t.newline()}):!n||n instanceof l?t.force_semicolon():n.print(t)}function wt(n){for(var r=n.stack(),u=r.length,i=r[--u],t=r[--u];u>0;){if(t instanceof w&&t.body===i)return!0;if(t instanceof s&&t.car===i||t instanceof b&&t.expression===i||t instanceof yt&&t.expression===i||t instanceof wi&&t.expression===i||t instanceof y&&t.condition===i||t instanceof f&&t.left===i||t instanceof yr&&t.expression===i)i=t,t=r[--u];else return!1}}function ni(n,t){return n.args.length==0&&!t.option("beautify")}function si(n){for(var i=n[0],r=i.length,t=1;t=0?i.push("0x"+n.toString(16).toLowerCase(),"0"+n.toString(8)):i.push("-0x"+(-n).toString(16).toLowerCase(),"-0"+(-n).toString(8)),(t=/^(.*?)(0+)$/.exec(n))&&i.push(t[1]+"e"+t[2].length)):(t=/^0?\.(0+)(.*)$/.exec(n))&&i.push(t[2]+"e-"+(t[1].length+t[2].length),r.substr(r.indexOf("."))),si(i)}function c(n,t){if(n instanceof o){n.print(t);return}t.with_block(function(){t.indent(),n.print(t),t.newline()})}function t(n,t){n.DEFMETHOD("add_source_map",function(n){t(this,n)})}function i(n,t){t.add_mapping(n.start)}e.DEFMETHOD("print_to_string",function(n){var t=de(n);return this.print(t),t.get()}),e.DEFMETHOD("add_comments",function(n){var r=n.option("comments"),u=this,t,i;r&&(t=u.start,t&&!t._comments_dumped&&(t._comments_dumped=!0,i=t.comments_before,r.test?i=i.filter(function(n){return r.test(n.value)}):typeof r=="function"&&(i=i.filter(function(n){return r(u,n)})),i.forEach(function(i){i.type=="comment1"?(n.print("//"+i.value+"\n"),n.indent()):i.type=="comment2"&&(n.print("/*"+i.value+"*/"),t.nlb?(n.print("\n"),n.indent()):n.space())})))}),r(e,function(){return!1}),r(dt,function(n){return wt(n)}),r(oi,function(n){return wt(n)}),r(pt,function(n){var t=n.parent();return t instanceof pi&&t.expression===this}),r(s,function(n){var t=n.parent();return t instanceof b||t instanceof pt||t instanceof f||t instanceof ur||t instanceof yt||t instanceof ei||t instanceof bi||t instanceof y}),r(f,function(n){var t=n.parent(),s,r;if(t instanceof b&&t.expression===this||t instanceof pt||t instanceof pi&&t.expression===this)return!0;if(t instanceof f){var u=t.operator,e=sf[u],i=this.operator,o=sf[i];if(e>o||e==o&&this===t.right&&!(i==u&&(i=="*"||i=="&&"||i=="||")))return!0}if(this.operator=="in"&&((t instanceof v||t instanceof ut)&&t.init===this||t instanceof ur&&(s=n.parent(1),r=n.parent(2),(r instanceof v||r instanceof ut)&&r.init===s)))return!0}),r(pi,function(n){var t=n.parent();if(t instanceof vt&&t.expression===this)try{this.walk(new g(function(n){if(n instanceof b)throw t;}))}catch(i){if(i!==t)throw i;return!0}}),r(b,function(n){var t=n.parent();return t instanceof vt&&t.expression===this}),r(vt,function(n){var t=n.parent();if(ni(this,n)&&(t instanceof yt||t instanceof b&&t.expression===this))return!0}),r(k,a),r(y,a),n(ii,function(n,t){t.print_string(n.value),t.semicolon()}),n(nr,function(n,t){t.print("debugger"),t.semicolon()}),bt.DEFMETHOD("_do_print_body",function(n){st(this.body,n)}),n(w,function(n,t){n.body.print(t),t.semicolon()}),n(lt,function(n,t){d(n.body,!0,t),t.print("")}),n(kt,function(n,t){n.label.print(t),t.colon(),n.body.print(t)}),n(h,function(n,t){n.body.print(t),t.semicolon()}),n(o,function(n,t){u(n.body,t)}),n(l,function(n,t){t.semicolon()}),n(ar,function(n,t){t.print("do"),t.space(),n._do_print_body(t),t.space(),t.print("while"),t.space(),t.with_parens(function(){n.condition.print(t)}),t.semicolon()}),n(ci,function(n,t){t.print("while"),t.space(),t.with_parens(function(){n.condition.print(t)}),t.space(),n._do_print_body(t)}),n(v,function(n,t){t.print("for"),t.space(),t.with_parens(function(){n.init?(n.init.print(t),t.print(";"),t.space()):t.print(";"),n.condition?(n.condition.print(t),t.print(";"),t.space()):t.print(";"),n.step&&n.step.print(t)}),t.space(),n._do_print_body(t)}),n(ut,function(n,t){t.print("for"),t.space(),t.with_parens(function(){n.init.print(t),t.space(),t.print("in"),t.space(),n.object.print(t)}),t.space(),n._do_print_body(t)}),n(li,function(n,t){t.print("with"),t.space(),t.with_parens(function(){n.expression.print(t)}),t.space(),n._do_print_body(t)}),nt.DEFMETHOD("_do_print",function(n,t){var i=this;t||n.print("function"),i.name&&(n.space(),i.name.print(n)),n.with_parens(function(){i.argnames.forEach(function(t,i){i&&n.comma(),t.print(n)})}),n.space(),u(i.body,n)}),n(nt,function(n,t){n._do_print(t)}),fi.DEFMETHOD("_do_print",function(n,t){n.print(t),this.value&&(n.space(),this.value.print(n)),n.semicolon()}),n(ft,function(n,t){n._do_print(t,"return")}),n(tu,function(n,t){n._do_print(t,"throw")}),ai.DEFMETHOD("_do_print",function(n,t){n.print(t),this.label&&(n.space(),this.label.print(n)),n.semicolon()}),n(ht,function(n,t){n._do_print(t,"break")}),n(vi,function(n,t){n._do_print(t,"continue")}),n(et,function(n,t){t.print("if"),t.space(),t.with_parens(function(){n.condition.print(t)}),t.space(),n.alternative?(ui(n,t),t.space(),t.print("else"),t.space(),st(n.alternative,t)):n._do_print_body(t)}),n(at,function(n,t){t.print("switch"),t.space(),t.with_parens(function(){n.expression.print(t)}),t.space(),n.body.length>0?t.with_block(function(){n.body.forEach(function(n,i){i&&t.newline(),t.indent(!0),n.print(t)})}):t.print("{}")}),iu.DEFMETHOD("_do_print_body",function(n){this.body.length>0&&(n.newline(),this.body.forEach(function(t){n.indent(),t.print(n),n.newline()}))}),n(ru,function(n,t){t.print("default:"),n._do_print_body(t)}),n(ir,function(n,t){t.print("case"),t.space(),n.expression.print(t),t.print(":"),n._do_print_body(t)}),n(yi,function(n,t){t.print("try"),t.space(),u(n.body,t),n.bcatch&&(t.space(),n.bcatch.print(t)),n.bfinally&&(t.space(),n.bfinally.print(t))}),n(rr,function(n,t){t.print("catch"),t.space(),t.with_parens(function(){n.argname.print(t)}),t.space(),u(n.body,t)}),n(vr,function(n,t){t.print("finally"),t.space(),u(n.body,t)}),tt.DEFMETHOD("_do_print",function(n,t){n.print(t),n.space(),this.definitions.forEach(function(t,i){i&&n.comma(),t.print(n)});var i=n.parent(),r=i instanceof v||i instanceof ut,u=r&&i.init===this;u||n.semicolon()}),n(gt,function(n,t){n._do_print(t,"var")}),n(ku,function(n,t){n._do_print(t,"const")}),n(ur,function(n,t){n.name.print(t),n.value&&(t.space(),t.print("="),t.space(),n.value.print(t))}),n(b,function(n,t){(n.expression.print(t),n instanceof vt&&ni(n,t))||t.with_parens(function(){n.args.forEach(function(n,i){i&&t.comma(),n.print(t)})})}),n(vt,function(n,t){t.print("new"),t.space(),b.prototype.print.call(n,t)}),s.DEFMETHOD("_do_print",function(n){this.car.print(n),this.cdr&&(n.comma(),n.should_break()&&(n.newline(),n.indent()),this.cdr.print(n))}),n(s,function(n,t){n._do_print(t)}),n(yt,function(n,t){var i=n.expression;i.print(t),i instanceof ki&&(/[xa-f.]/i.test(t.last())||t.print(".")),t.print("."),t.add_mapping(n.end),t.print_name(n.property)}),n(wi,function(n,t){n.expression.print(t),t.print("["),n.property.print(t),t.print("]")}),n(it,function(n,t){var i=n.operator;t.print(i),/^[a-z]/i.test(i)&&t.space(),n.expression.print(t)}),n(yr,function(n,t){n.expression.print(t),t.print(n.operator)}),n(f,function(n,t){n.left.print(t),t.space(),t.print(n.operator),t.space(),n.right.print(t)}),n(y,function(n,t){n.condition.print(t),t.space(),t.print("?"),t.space(),n.consequent.print(t),t.space(),t.colon(),n.alternative.print(t)}),n(ei,function(n,t){t.with_square(function(){var i=n.elements,r=i.length;r>0&&t.space(),i.forEach(function(n,i){i&&t.comma(),n instanceof ot||n.print(t)}),r>0&&t.space()})}),n(oi,function(n,t){n.properties.length>0?t.with_block(function(){n.properties.forEach(function(n,i){i&&(t.print(","),t.newline()),t.indent(),n.print(t)}),t.newline()}):t.print("{}")}),n(uu,function(n,t){var i=n.key;t.option("quote_keys")?t.print_string(i):(typeof i=="number"||!t.option("beautify")&&+i+""==i)&&parseFloat(i)>=0?t.print(ri(i)):lu(i)?t.print_name(i):t.print_string(i),t.colon(),n.value.print(t)}),n(fu,function(n,t){t.print("set"),n.value._do_print(t,!0)}),n(eu,function(n,t){t.print("get"),n.value._do_print(t,!0)}),n(p,function(n,t){var i=n.definition();t.print_name(i?i.mangled_name||i.name:n.name)}),n(ot,function(n,t){t.print("void 0")}),n(yf,function(n,t){t.print("1/0")}),n(uf,function(n,t){t.print("0/0")}),n(er,function(n,t){t.print("this")}),n(ct,function(n,t){t.print(n.getValue())}),n(rt,function(n,t){t.print_string(n.getValue())}),n(ki,function(n,t){t.print(ri(n.getValue()))}),n(pr,function(n,t){var i=n.getValue().toString();t.option("ascii_only")&&(i=t.to_ascii(i)),t.print(i)}),t(e,ti),t(ii,i),t(nr,i),t(p,i),t(nu,i),t(bt,i),t(kt,ti),t(nt,i),t(at,i),t(iu,i),t(o,i),t(lt,ti),t(vt,i),t(yi,i),t(rr,i),t(vr,i),t(tt,i),t(ct,i),t(bi,function(n,t){t.add_mapping(n.start,n.key)})}(),yu.prototype=new or,ie(yu.prototype,{option:function(n){return this.options[n]},warn:function(){this.options.warnings&&e.warn.apply(e,arguments)},before:function(n,t){if(n._squeezed)return n;if(n instanceof c&&(n.drop_unused(this),n=n.hoist_declarations(this)),t(n,this),n=n.optimize(this),n instanceof c){var i=this.options.warnings;this.options.warnings=!1,n.drop_unused(this),this.options.warnings=i}return n._squeezed=!0,n}}),function(){function t(n,t){n.DEFMETHOD("optimize",function(n){var r=this,i;return r._optimized?r:(i=t(r,n),i._optimized=!0,i===r)?i:i.transform(n)})}function n(n,t,i){return i||(i={}),t&&(i.start||(i.start=t.start),i.end||(i.end=t.end)),new n(i)}function tr(t,i,r){if(i instanceof e)return i.transform(t);switch(typeof i){case"string":return n(rt,r,{value:i}).optimize(t);case"number":return n(isNaN(i)?uf:ki,r,{value:i}).optimize(t);case"boolean":return n(i?si:br,r);case"undefined":return n(ot,r).optimize(t);default:if(i===null)return n(rf,r).optimize(t);if(i instanceof RegExp)return n(pr,r).optimize(t);throw new Error(lr("Can't handle constant of type: {type}",{type:typeof i}));}}function u(n){if(n===null)return[];if(n instanceof o)return n.body;if(n instanceof l)return[];if(n instanceof w)return[n];throw new Error("Can't convert thing to statement array");}function ni(n){return n===null?!0:n instanceof l?!0:n instanceof o?n.body.length==0:!1}function p(n){return n instanceof at?n:n instanceof v||n instanceof ut||n instanceof ri?n.body instanceof o?n.body:n:n}function ti(t,i){function c(n){var t=[];return n.reduce(function(n,i){return i instanceof o?(e=!0,n.push.apply(n,c(i.body))):i instanceof l?e=!0:i instanceof ii?t.indexOf(i.value)<0?(n.push(i),t.push(i.value)):e=!0:n.push(i),n},[])}function a(t,i){var v=i.self(),a=v instanceof nt,s=[],y,f,w,b,c,l;n:for(y=t.length;--y>=0;){f=t[y];switch(!0){case a&&f instanceof ft&&!f.value&&s.length==0:e=!0;continue n;case f instanceof et:if(f.body instanceof ft){if((a&&s.length==0||s[0]instanceof ft&&!s[0].value)&&!f.body.value&&!f.alternative){e=!0,w=n(h,f.condition,{body:f.condition}),s.unshift(w);continue n}if(s[0]instanceof ft&&f.body.value&&s[0].value&&!f.alternative){e=!0,f=f.clone(),f.alternative=s[0],s[0]=f.transform(i);continue n}if((s.length==0||s[0]instanceof ft)&&f.body.value&&!f.alternative&&a){e=!0,f=f.clone(),f.alternative=s[0]||n(ft,f,{value:n(ot,f)}),s[0]=f.transform(i);continue n}if(!f.body.value&&a){e=!0,f=f.clone(),f.condition=f.condition.negate(i),f.body=n(o,f,{body:u(f.alternative).concat(s)}),f.alternative=null,s=[f.transform(i)];continue n}if(s.length==1&&a&&s[0]instanceof h&&(!f.alternative||f.alternative instanceof h)){e=!0,s.push(n(ft,s[0],{value:n(ot,s[0])}).transform(i)),s=u(f.alternative).concat(s),s.unshift(f);continue n}}if(c=r(f.body),l=c instanceof ai?i.loopcontrol_target(c.label):null,c&&(c instanceof ft&&!c.value&&a||c instanceof vi&&v===p(l)||c instanceof ht&&l instanceof o&&v===l)){c.label&&wu(c.label.thedef.references,c.label),e=!0,b=u(f.body).slice(0,-1),f=f.clone(),f.condition=f.condition.negate(i),f.body=n(o,f,{body:s}),f.alternative=n(o,f,{body:b}),s=[f.transform(i)];continue n}if(c=r(f.alternative),l=c instanceof ai?i.loopcontrol_target(c.label):null,c&&(c instanceof ft&&!c.value&&a||c instanceof vi&&v===p(l)||c instanceof ht&&l instanceof o&&v===l)){c.label&&wu(c.label.thedef.references,c.label),e=!0,f=f.clone(),f.body=n(o,f.body,{body:u(f.body).concat(s)}),f.alternative=n(o,f.alternative,{body:u(f.alternative).slice(0,-1)}),s=[f.transform(i)];continue n}s.unshift(f);break;default:s.unshift(f)}}return s}function y(n,t){var i=!1,f=n.length,u=t.self();return n=n.reduce(function(n,f){if(i)bt(t,f,n);else{if(f instanceof ai){var e=t.loopcontrol_target(f.label);f instanceof ht&&e instanceof o&&p(e)===u||f instanceof vi&&p(e)===u?f.label&&wu(f.label.thedef.references,f.label):n.push(f)}else n.push(f);r(f)&&(i=!0)}return n},[]),e=n.length!=f,n}function w(t,i){function f(){r=s.from_array(r),r&&u.push(n(h,r,{body:r})),r=[]}if(t.length<2)return t;var r=[],u=[];return t.forEach(function(n){n instanceof h?r.push(n.body):(f(),u.push(n))}),f(),u=b(u,i),e=u.length!=t.length,u}function b(t,i){function r(n){e.pop();var t=u.body;return t instanceof s?t.add(n):t=s.cons(t,n),t.transform(i)}var e=[],u=null;return t.forEach(function(t){if(u)if(t instanceof v){var i={};try{u.body.walk(new g(function(n){if(n instanceof f&&n.operator=="in")throw i;})),!t.init||t.init instanceof tt?t.init||(t.init=u.body,e.pop()):t.init=r(t.init)}catch(o){if(o!==i)throw o;}}else t instanceof et?t.condition=r(t.condition):t instanceof li?t.expression=r(t.expression):t instanceof fi&&t.value?t.value=r(t.value):t instanceof fi?t.value=r(n(ot,t)):t instanceof at&&(t.expression=r(t.expression));e.push(t),u=t instanceof h?t:null}),e}function k(n){var t=null;return n.reduce(function(n,i){return i instanceof tt&&t&&t.TYPE==i.TYPE?(t.definitions=t.definitions.concat(i.definitions),e=!0):i instanceof v&&t instanceof tt&&(!i.init||i.init.TYPE==t.TYPE)?(e=!0,n.pop(),i.init?i.init.definitions=t.definitions.concat(i.init.definitions):i.init=t,n.push(i),t=i):(t=i,n.push(i)),n},[])}var e;do e=!1,t=c(t),i.option("dead_code")&&(t=y(t,i)),i.option("if_return")&&(t=a(t,i)),i.option("sequences")&&(t=w(t,i)),i.option("join_vars")&&(t=k(t,i));while(e);return t}function bt(n,t,i){n.warn("Dropping unreachable code [{file}:{line},{col}]",t.start),t.walk(new g(function(t){return t instanceof tt?(n.warn("Declarations in unreachable code! [{file}:{line},{col}]",t.start),t.remove_initializers(),i.push(t),!0):t instanceof ui?(i.push(t),!0):t instanceof c?!0:void 0}))}function i(n,t){return n.print_to_string().length>t.print_to_string().length?t:n}function r(n){return n&&n.aborts()}function hi(t,i){function e(r){r=u(r),t.body instanceof o?(t.body=t.body.clone(),t.body.body=r.concat(t.body.body.slice(1)),t.body=t.body.transform(i)):t.body=n(o,t.body,{body:r}).transform(i),hi(t,i)}var r=t.body instanceof o?t.body.body[0]:t.body;r instanceof et&&(r.body instanceof ht&&i.loopcontrol_target(r.body.label)===t?(t.condition=t.condition?n(f,t.condition,{left:t.condition,operator:"&&",right:r.condition.negate(i)}):r.condition.negate(i),e(r.alternative)):r.alternative instanceof ht&&i.loopcontrol_target(r.alternative.label)===t&&(t.condition=t.condition?n(f,t.condition,{left:t.condition,operator:"&&",right:r.condition}):r.condition,e(r.body)))}function di(t,i){return i.option("booleans")&&i.in_boolean_context()?n(si,t):t}var rr,ur;t(e,function(n){return n}),e.DEFMETHOD("equivalent_to",function(n){return this.print_to_string()==n.print_to_string()}),function(n){var t=["!","delete"],i=["in","instanceof","==","!=","===","!==","<","<=",">=",">"];n(e,function(){return!1}),n(it,function(){return hr(this.operator,t)}),n(f,function(){return hr(this.operator,i)||(this.operator=="&&"||this.operator=="||")&&this.left.is_boolean()&&this.right.is_boolean()}),n(y,function(){return this.consequent.is_boolean()&&this.alternative.is_boolean()}),n(k,function(){return this.operator=="="&&this.right.is_boolean()}),n(s,function(){return this.cdr.is_boolean()}),n(si,function(){return!0}),n(br,function(){return!0})}(function(n,t){n.DEFMETHOD("is_boolean",t)}),function(n){n(e,function(){return!1}),n(rt,function(){return!0}),n(it,function(){return this.operator=="typeof"}),n(f,function(){return this.operator=="+"&&(this.left.is_string()||this.right.is_string())}),n(k,function(){return this.operator=="="&&this.right.is_string()})}(function(n,t){n.DEFMETHOD("is_string",t)}),function(n){function t(n){return n._eval()}e.DEFMETHOD("evaluate",function(t){if(!t.option("evaluate"))return[this];try{var r=this._eval(),f=tr(t,r,this);return[i(f,this),r]}catch(u){if(u!==n)throw u;return[this]}}),n(w,function(){throw new Error(lr("Cannot evaluate a statement [{file}:{line},{col}]",this.start));}),n(dt,function(){return[this]}),n(e,function(){throw n;}),n(ct,function(){return this.getValue()}),n(it,function(){var i=this.expression;switch(this.operator){case"!":return!t(i);case"typeof":return typeof t(i);case"void":return void t(i);case"~":return~t(i);case"-":return-t(i);case"+":return+t(i)}throw n;}),n(f,function(){var i=this.left,r=this.right;switch(this.operator){case"&&":return t(i)&&t(r);case"||":return t(i)||t(r);case"|":return t(i)|t(r);case"&":return t(i)&t(r);case"^":return t(i)^t(r);case"+":return t(i)+t(r);case"*":return t(i)*t(r);case"/":return t(i)/t(r);case"%":return t(i)%t(r);case"-":return t(i)-t(r);case"<<":return t(i)<>":return t(i)>>t(r);case">>>":return t(i)>>>t(r);case"==":return t(i)==t(r);case"===":return t(i)===t(r);case"!=":return t(i)!=t(r);case"!==":return t(i)!==t(r);case"<":return t(i)":return t(i)>t(r);case">=":return t(i)>=t(r);case"in":return t(i)in t(r);case"instanceof":return t(i)instanceof t(r)}throw n;}),n(y,function(){return t(this.condition)?t(this.consequent):t(this.alternative)}),n(a,function(){var r=this.definition(),i;if(r&&r.constant&&(i=r.orig[0],i&&(i=i.init[0]),i=i&&i.value,i))return t(i);throw n;})}(function(n,t){n.DEFMETHOD("_eval",t)}),function(t){function r(t){return n(it,t,{operator:"!",expression:t})}t(e,function(){return r(this)}),t(w,function(){throw new Error("Cannot negate a statement");}),t(dt,function(){return r(this)}),t(it,function(){return this.operator=="!"?this.expression:r(this)}),t(s,function(n){var t=this.clone();return t.cdr=t.cdr.negate(n),t}),t(y,function(n){var t=this.clone();return t.consequent=t.consequent.negate(n),t.alternative=t.alternative.negate(n),i(r(this),t)}),t(f,function(n){var t=this.clone(),u=this.operator;if(n.option("unsafe_comps"))switch(u){case"<=":return t.operator=">",t;case"<":return t.operator=">=",t;case">=":return t.operator="<",t;case">":return t.operator="<=",t}switch(u){case"==":return t.operator="!=",t;case"!=":return t.operator="==",t;case"===":return t.operator="!==",t;case"!==":return t.operator="===",t;case"&&":return t.operator="||",t.left=t.left.negate(n),t.right=t.right.negate(n),i(r(this),t);case"||":return t.operator="&&",t.left=t.left.negate(n),t.right=t.right.negate(n),i(r(this),t)}return r(this)})}(function(n,t){n.DEFMETHOD("negate",function(n){return t.call(this,n)})}),function(n){n(e,function(){return!0}),n(l,function(){return!1}),n(ct,function(){return!1}),n(er,function(){return!1}),n(st,function(){for(var n=this.body.length;--n>=0;)if(this.body[n].has_side_effects())return!0;return!1}),n(h,function(){return this.body.has_side_effects()}),n(ui,function(){return!0}),n(dt,function(){return!1}),n(f,function(){return this.left.has_side_effects()||this.right.has_side_effects()}),n(k,function(){return!0}),n(y,function(){return this.condition.has_side_effects()||this.consequent.has_side_effects()||this.alternative.has_side_effects()}),n(pt,function(){return this.operator=="delete"||this.operator=="++"||this.operator=="--"||this.expression.has_side_effects()}),n(a,function(){return!1}),n(oi,function(){for(var n=this.properties.length;--n>=0;)if(this.properties[n].has_side_effects())return!0;return!1}),n(bi,function(){return this.value.has_side_effects()}),n(ei,function(){for(var n=this.elements.length;--n>=0;)if(this.elements[n].has_side_effects())return!0;return!1}),n(pi,function(){return!0}),n(s,function(){return this.car.has_side_effects()||this.cdr.has_side_effects()})}(function(n,t){n.DEFMETHOD("has_side_effects",t)}),function(n){n(w,function(){return null}),n(nu,function(){return this}),n(o,function(){var n=this.body.length;return n>0&&r(this.body[n-1])}),n(et,function(){return this.alternative&&r(this.body)&&r(this.alternative)})}(function(n,t){n.DEFMETHOD("aborts",t)}),t(ii,function(t){return t.scope.has_directive(t.value)!==t.scope?n(l,t):t}),t(nr,function(t,i){return i.option("drop_debugger")?n(l,t):t}),t(kt,function(t,i){return t.body instanceof ht&&i.loopcontrol_target(t.body.label)===t.body?n(l,t):t.label.references.length==0?t.body:t}),t(st,function(n,t){return n.body=ti(n.body,t),n}),t(o,function(t,i){t.body=ti(t.body,i);switch(t.body.length){case 1:return t.body[0];case 0:return n(l,t)}return t}),c.DEFMETHOD("drop_unused",function(t){var i=this,f,e;if(t.option("unused")&&!(i instanceof lt)&&!i.uses_eval){var r=[],u=this,y=new g(function(n,t){if(n!==i){if(n instanceof ui)return!0;if(n instanceof tt&&u===i)return n.definitions.forEach(function(n){n.value&&n.value.has_side_effects()&&n.value.walk(y)}),!0;if(n instanceof a)return dr(r,n.definition()),!0;if(n instanceof c){var f=u;return u=n,t(),u=f,!0}}});for(i.walk(y),f=0;f=0;)if(b=d[p],b.unreferenced())d.pop(),t.warn("Dropping unused function argument {name} [{file}:{line},{col}]",{name:b.name,file:b.start.file,line:b.start.line,col:b.start.col});else break;if(u instanceof ui&&u!==i)return hr(u.name.definition(),r)?u:(t.warn("Dropping unused function {name} [{file}:{line},{col}]",{name:u.name.name,file:u.name.start.file,line:u.name.start.line,col:u.name.start.col}),n(l,u));if(u instanceof tt&&!(e.parent()instanceof ut)){for(w=u.definitions.filter(function(n){if(hr(n.name.definition(),r))return!0;var i={name:n.name.name,file:n.name.start.file,line:n.name.start.line,col:n.name.start.col};return n.value&&n.value.has_side_effects()?(n._unused_side_effects=!0,t.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]",i),!0):(t.warn("Dropping unused variable {name} [{file}:{line},{col}]",i),!1)}),w=af(w,function(n,t){return!n.value&&t.value?-1:!t.value&&n.value?1:0}),y=[],p=0;p0&&(y.push(k.value),k.value=s.from_array(y),y=[]),++p);return(y=y.length>0?n(o,u,{body:[n(h,u,{body:s.from_array(y)})]}):null,w.length==0&&!y)?n(l,u):w.length==0?y:(u.definitions=w,y&&(y.body.unshift(u),u=y),u)}return u instanceof v&&u.init instanceof o?(f(u,this),g=u.init.body.slice(0,-1),u.init=u.init.body.slice(-1)[0].body,g.push(u),a?cr.splice(g):n(o,u,{body:g})):u instanceof c&&u!==i?u:void 0}),i.transform(e)}}),c.DEFMETHOD("hoist_declarations",function(t){var e=t.option("hoist_funs"),r=t.option("hoist_vars"),i=this,f;if(e||r){var o=[],u=[],s=new gi,a=0,y=0;i.walk(new g(function(n){return n instanceof c&&n!==i?!0:n instanceof gt?(++y,!0):void 0})),r=r&&y>1,f=new or(function(t){if(t!==i){if(t instanceof ii)return o.push(t),n(l,t);if(t instanceof ui&&e)return u.push(t),n(l,t);if(t instanceof gt&&r){t.definitions.forEach(function(n){s.set(n.name.name,n),++a});var y=t.to_assignments(),p=f.parent();return p instanceof ut&&p.init===t?y==null?t.definitions[0].name:y:p instanceof v&&p.init===t?y:y?n(h,t,{body:y}):n(l,t)}if(t instanceof c)return t}}),i=i.transform(f),a>0&&u.unshift(n(gt,i,{definitions:s.map(function(n){return n=n.clone(),n.value=null,n})})),i.body=o.concat(u,i.body)}return i}),t(h,function(t,i){return i.option("side_effects")&&!t.body.has_side_effects()?(i.warn("Dropping side-effect-free statement [{file}:{line},{col}]",t.start),n(l,t)):t}),t(ri,function(t,i){var r=t.condition.evaluate(i),u;if(t.condition=r[0],!i.option("loops"))return t;if(r.length>1){if(r[1])return n(v,t,{body:t.body});if(t instanceof ci){if(i.option("dead_code"))return u=[],bt(i,t.body,u),n(o,t,{body:u})}else return t.body}return t}),t(ci,function(t,i){return i.option("loops")?(t=ri.prototype.optimize.call(t,i),t instanceof ci&&(hi(t,i),t=n(v,t,t).transform(i)),t):t}),t(v,function(t,i){var r=t.condition,u;return(r&&(r=r.evaluate(i),t.condition=r[0]),!i.option("loops"))?t:r&&r.length>1&&!r[1]&&i.option("dead_code")?(u=[],t.init instanceof w?u.push(t.init):t.init&&u.push(n(h,t.init,{body:t.init})),bt(i,t.body,u),n(o,t,{body:u})):(hi(t,i),t)}),t(et,function(t,u){var a,e,s,c,v,p,w;if(!u.option("conditionals"))return t;if(a=t.condition.evaluate(u),t.condition=a[0],a.length>1)if(a[1]){if(u.warn("Condition always true [{file}:{line},{col}]",t.condition.start),u.option("dead_code"))return e=[],t.alternative&&bt(u,t.alternative,e),e.push(t.body),n(o,t,{body:e}).transform(u)}else if(u.warn("Condition always false [{file}:{line},{col}]",t.condition.start),u.option("dead_code"))return e=[],bt(u,t.body,e),t.alternative&&e.push(t.alternative),n(o,t,{body:e}).transform(u);return(ni(t.alternative)&&(t.alternative=null),s=t.condition.negate(u),c=i(t.condition,s)===s,t.alternative&&c&&(c=!1,t.condition=s,v=t.body,t.body=t.alternative||n(l),t.alternative=v),ni(t.body)&&ni(t.alternative))?n(h,t.condition,{body:t.condition}).transform(u):t.body instanceof h&&t.alternative instanceof h?n(h,t,{body:n(y,t,{condition:t.condition,consequent:t.body.body,alternative:t.alternative.body})}).transform(u):ni(t.alternative)&&t.body instanceof h?c?n(h,t,{body:n(f,t,{operator:"||",left:s,right:t.body.body})}).transform(u):n(h,t,{body:n(f,t,{operator:"&&",left:t.condition,right:t.body.body})}).transform(u):t.body instanceof l&&t.alternative&&t.alternative instanceof h?n(h,t,{body:n(f,t,{operator:"||",left:t.condition,right:t.alternative.body})}).transform(u):t.body instanceof fi&&t.alternative instanceof fi&&t.body.TYPE==t.alternative.TYPE?n(t.body.CTOR,t,{value:n(y,t,{condition:t.condition,consequent:t.body.value||n(ot,t.body).optimize(u),alternative:t.alternative.value||n(ot,t.alternative).optimize(u)})}).transform(u):(t.body instanceof et&&!t.body.alternative&&!t.alternative&&(t.condition=n(f,t.condition,{operator:"&&",left:t.condition,right:t.body.condition}).transform(u),t.body=t.body.body),r(t.body)&&t.alternative)?(p=t.alternative,t.alternative=null,n(o,t,{body:[t,p]}).transform(u)):r(t.alternative)?(w=t.body,t.body=t.alternative,t.condition=c?s:t.condition.negate(u),t.alternative=null,n(o,t,{body:[t,w]}).transform(u)):t}),t(at,function(t,i){var r,u;return t.body.length==0&&i.option("conditionals")?n(h,t,{body:t.expression}).transform(i):(r=t.body[t.body.length-1],r&&(u=r.body[r.body.length-1],u instanceof ht&&p(i.loopcontrol_target(u.label))===t&&r.body.pop()),t)}),t(ir,function(n,t){return n.body=ti(n.body,t),n}),t(yi,function(n,t){return n.body=ti(n.body,t),n}),tt.DEFMETHOD("remove_initializers",function(){this.definitions.forEach(function(n){n.value=null})}),tt.DEFMETHOD("to_assignments",function(){var t=this.definitions.reduce(function(t,i){if(i.value){var r=n(a,i.name,i.name);t.push(n(k,i,{operator:"=",left:r,right:i.value}))}return t},[]);return t.length==0?null:s.from_array(t)}),t(tt,function(t){return t.definitions.length==0?n(l,t):t}),t(dt,function(n,t){return n=nt.prototype.optimize.call(n,t),t.option("unused")&&n.name&&n.name.unreferenced()&&(n.name=null),n}),t(b,function(t,i){if(i.option("unsafe")){var r=t.expression;if(r instanceof a&&r.undeclared())switch(r.name){case"Array":if(t.args.length!=1)return n(ei,t,{elements:t.args});break;case"Object":if(t.args.length==0)return n(oi,t,{properties:[]});break;case"String":return n(f,t,{left:t.args[0],operator:"+",right:n(rt,t,{value:""})})}else if(r instanceof yt&&r.property=="toString"&&t.args.length==0)return n(f,t,{left:n(rt,t,{value:""}),operator:"+",right:r.expression}).transform(i)}return i.option("side_effects")&&t.expression instanceof dt&&t.args.length==0&&!st.prototype.has_side_effects.call(t.expression)?n(ot,t).transform(i):t}),t(vt,function(t,i){if(i.option("unsafe")){var r=t.expression;if(r instanceof a&&r.undeclared())switch(r.name){case"Object":case"RegExp":case"Function":case"Error":case"Array":return n(b,t,t)}}return t}),t(s,function(n,t){return t.option("side_effects")?n.car.has_side_effects()?t.option("cascade")&&(n.car instanceof k&&!n.car.left.has_side_effects()&&n.car.left.equivalent_to(n.cdr)||!n.car.has_side_effects()&&!n.cdr.has_side_effects()&&n.car.equivalent_to(n.cdr))?n.car:n:n.cdr:n}),pt.DEFMETHOD("lift_sequences",function(n){if(n.option("sequences")&&this.expression instanceof s){var i=this.expression,t=i.to_array();return this.expression=t.pop(),t.push(this),s.from_array(t).transform(n)}return this}),t(yr,function(n,t){return n.lift_sequences(t)}),t(it,function(t,r){t=t.lift_sequences(r);var u=t.expression;if(r.option("booleans")&&r.in_boolean_context()){switch(t.operator){case"!":if(u instanceof it&&u.operator=="!")return u.expression;break;case"typeof":return r.warn("Boolean expression always true [{file}:{line},{col}]",t.start),n(si,t)}u instanceof f&&t.operator=="!"&&(t=i(t,u.negate(r)))}return t.evaluate(r)[0]}),f.DEFMETHOD("lift_sequences",function(n){var i,t;if(n.option("sequences")){if(this.left instanceof s)return i=this.left,t=i.to_array(),this.left=t.pop(),t.push(this),s.from_array(t).transform(n);if(this.right instanceof s&&!(this.operator=="||"||this.operator=="&&")&&!this.left.has_side_effects())return i=this.right,t=i.to_array(),this.right=t.pop(),t.push(this),s.from_array(t).transform(n)}return this}),rr=d("== === != !== * & | ^"),t(f,function(t,r){function s(n){n&&(t.operator=n);var i=t.left;t.left=t.right,t.right=i}var u,e,o,h;if(rr(t.operator)&&t.right instanceof ct&&!(t.left instanceof ct)&&s(),t=t.lift_sequences(r),r.option("comparisons"))switch(t.operator){case"===":case"!==":(t.left.is_string()&&t.right.is_string()||t.left.is_boolean()&&t.right.is_boolean())&&(t.operator=t.operator.substr(0,2));case"==":case"!=":t.left instanceof rt&&t.left.value=="undefined"&&t.right instanceof it&&t.right.operator=="typeof"&&(t.right.expression instanceof a&&t.right.expression.undeclared()||(t.left=t.right.expression,t.right=n(ot,t.left).optimize(r),t.operator.length==2&&(t.operator+="=")))}if(r.option("booleans")&&r.in_boolean_context())switch(t.operator){case"&&":if(u=t.left.evaluate(r),e=t.right.evaluate(r),u.length>1&&!u[1]||e.length>1&&!e[1])return r.warn("Boolean && always false [{file}:{line},{col}]",t.start),n(br,t);if(u.length>1&&u[1])return e[0];if(e.length>1&&e[1])return u[0];break;case"||":if(u=t.left.evaluate(r),e=t.right.evaluate(r),u.length>1&&u[1]||e.length>1&&e[1])return r.warn("Boolean || always true [{file}:{line},{col}]",t.start),n(si,t);if(u.length>1&&!u[1])return e[0];if(e.length>1&&!e[1])return u[0];break;case"+":if(u=t.left.evaluate(r),e=t.right.evaluate(r),u.length>1&&u[0]instanceof rt&&u[1]||e.length>1&&e[0]instanceof rt&&e[1])return r.warn("+ in boolean context always true [{file}:{line},{col}]",t.start),n(si,t)}if(o=t.evaluate(r),o.length>1&&i(o[0],t)!==t)return o[0];if(r.option("comparisons")){(!(r.parent()instanceof f)||r.parent()instanceof k)&&(h=n(it,t,{operator:"!",expression:t.negate(r)}),t=i(t,h));switch(t.operator){case"<":s(">");break;case"<=":s(">=")}}return t}),t(a,function(t,i){if(t.undeclared()){var r=i.option("global_defs");if(r&&r.hasOwnProperty(t.name))return tr(i,r[t.name],t);switch(t.name){case"undefined":return n(ot,t);case"NaN":return n(uf,t);case"Infinity":return n(yf,t)}}return t}),t(ot,function(t,i){var r,u,f;return i.option("unsafe")&&(r=i.find_parent(c),u=r.find_variable("undefined"),u)?(f=n(a,t,{name:"undefined",scope:r,thedef:u}),f.reference(),f):t}),ur=["+","-","/","*","%",">>","<<",">>>","|","^","&"],t(k,function(n,t){return n=n.lift_sequences(t),n.operator=="="&&n.left instanceof a&&n.right instanceof f&&n.right.left instanceof a&&n.right.left.name==n.left.name&&hr(n.right.operator,ur)&&(n.operator=n.right.operator+"=",n.right=n.right.right),n}),t(y,function(t,r){var h,f,o,u,e;return r.option("conditionals")?t.condition instanceof s?(h=t.condition.car,t.condition=t.condition.cdr,s.cons(h,t)):(f=t.condition.evaluate(r),f.length>1)?f[1]?(r.warn("Condition always true [{file}:{line},{col}]",t.start),t.consequent):(r.warn("Condition always false [{file}:{line},{col}]",t.start),t.alternative):(o=f[0].negate(r),i(f[0],o)===o&&(t=n(y,t,{condition:o,consequent:t.alternative,alternative:t.consequent})),u=t.consequent,e=t.alternative,u instanceof k&&e instanceof k&&u.operator==e.operator&&u.left.equivalent_to(e.left)&&(t=n(k,t,{operator:u.operator,left:u.left,right:n(y,t,{condition:t.condition,consequent:u.right,alternative:e.right})})),t):t}),t(ff,function(t,i){if(i.option("booleans")){var r=i.parent();return r instanceof f&&(r.operator=="=="||r.operator=="!=")?(i.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]",{operator:r.operator,value:t.value,file:r.start.file,line:r.start.line,col:r.start.col}),n(ki,t,{value:+t.value})):n(it,t,{operator:"!",expression:n(ki,t,{value:1-t.value})})}return t}),t(wi,function(t,i){var r=t.property;return r instanceof rt&&i.option("properties")&&(r=r.getValue(),lu(r))?n(yt,t,{expression:t.expression,property:r}):t}),t(ei,di),t(oi,di),t(pr,di)}(),function(){function p(n){return new(n.prefix?it:yr)({start:i(n),end:r(n),operator:n.operator,expression:t(n.argument)})}function i(n){return new gr({file:n.loc&&n.loc.source,line:n.loc&&n.loc.start.line,col:n.loc&&n.loc.start.column,pos:n.start,endpos:n.start})}function r(n){return new gr({file:n.loc&&n.loc.source,line:n.loc&&n.loc.end.line,col:n.loc&&n.loc.end.column,pos:n.end,endpos:n.end})}function n(n,u,f){var e="function From_Moz_"+n+"(M){\n";return e+="return new mytype({\nstart: my_start_token(M),\nend: my_end_token(M)",f&&f.split(/\s*,\s*/).forEach(function(n){var t=/([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(n);if(!t)throw new Error("Can't understand property map: "+n);var i="M."+t[1],r=t[2],u=t[3];if(e+=",\n"+u+": ",r=="@")e+=i+".map(from_moz)";else if(r==">")e+="from_moz("+i+")";else if(r=="=")e+=i;else if(r=="%")e+="from_moz("+i+").body";else throw new Error("Can't understand operator in propmap: "+n);}),e+="\n})}",e=new Function("mytype","my_start_token","my_end_token","from_moz","return("+e+")")(u,i,r,t),c[n]=e}function t(n){u.push(n);var t=n!=null?c[n.type](n):null;return u.pop(),t}var c={TryStatement:function(n){return new yi({start:i(n),end:r(n),body:t(n.block).body,bcatch:t(n.handlers[0]),bfinally:n.finalizer?new vr(t(n.finalizer)):null})},CatchClause:function(n){return new rr({start:i(n),end:r(n),argname:t(n.param),body:t(n.body).body})},ObjectExpression:function(n){return new oi({start:i(n),end:r(n),properties:n.properties.map(function(n){var u=n.key,e=u.type=="Identifier"?u.name:u.value,f={start:i(u),end:r(n.value),key:e,value:t(n.value)};switch(n.kind){case"init":return new uu(f);case"set":return f.value.name=t(u),new fu(f);case"get":return f.value.name=t(u),new eu(f)}})})},SequenceExpression:function(n){return s.from_array(n.expressions.map(t))},MemberExpression:function(n){return new(n.computed?wi:yt)({start:i(n),end:r(n),property:n.computed?t(n.property):n.property.name,expression:t(n.object)})},SwitchCase:function(n){return new(n.test?ir:ru)({start:i(n),end:r(n),expression:t(n.test),body:n.consequent.map(t)})},Literal:function(n){var u=n.value,t={start:i(n),end:r(n)};if(u===null)return new rf(t);switch(typeof u){case"string":return t.value=u,new rt(t);case"number":return t.value=u,new ki(t);case"boolean":return new(u?si:br)(t);default:return t.value=u,new pr(t)}},UnaryExpression:p,UpdateExpression:p,Identifier:function(n){var t=u[u.length-2];return new(n.name=="this"?er:t.type=="LabeledStatement"?ni:t.type=="VariableDeclarator"&&t.id===n?t.kind=="const"?su:ou:t.type=="FunctionExpression"?t.id===n?nf:du:t.type=="FunctionDeclaration"?t.id===n?gu:du:t.type=="CatchClause"?tf:t.type=="BreakStatement"||t.type=="ContinueStatement"?fr:a)({start:i(n),end:r(n),name:n.name})}},u;n("Node",e),n("Program",lt,"body@body"),n("Function",dt,"id>name, params@argnames, body%body"),n("EmptyStatement",l),n("BlockStatement",o,"body@body"),n("ExpressionStatement",h,"expression>body"),n("IfStatement",et,"test>condition, consequent>body, alternate>alternative"),n("LabeledStatement",kt,"label>label, body>body"),n("BreakStatement",ht,"label>label"),n("ContinueStatement",vi,"label>label"),n("WithStatement",li,"object>expression, body>body"),n("SwitchStatement",at,"discriminant>expression, cases@body"),n("ReturnStatement",ft,"argument>value"),n("ThrowStatement",tu,"argument>value"),n("WhileStatement",ci,"test>condition, body>body"),n("DoWhileStatement",ar,"test>condition, body>body"),n("ForStatement",v,"init>init, test>condition, update>step, body>body"),n("ForInStatement",ut,"left>init, right>object, body>body"),n("DebuggerStatement",nr),n("FunctionDeclaration",ui,"id>name, params@argnames, body%body"),n("VariableDeclaration",gt,"declarations@definitions"),n("VariableDeclarator",ur,"id>name, init>value"),n("ThisExpression",er),n("ArrayExpression",ei,"elements@elements"),n("FunctionExpression",dt,"id>name, params@argnames, body%body"),n("BinaryExpression",f,"operator=operator, left>left, right>right"),n("AssignmentExpression",k,"operator=operator, left>left, right>right"),n("LogicalExpression",f,"operator=operator, left>left, right>right"),n("ConditionalExpression",y,"test>condition, consequent>consequent, alternate>alternative"),n("NewExpression",vt,"callee>expression, arguments@args"),n("CallExpression",b,"callee>expression, arguments@args"),u=null,e.from_mozilla_ast=function(n){var r=u,i;return u=[],i=t(n),u=r,i}}(),n.array_to_hash=cf,n.slice=ge,n.characters=sr,n.member=hr,n.find_if=pu,n.repeat_string=lf,n.DefaultsError=te,n.defaults=di,n.merge=ie,n.noop=ti,n.MAP=cr,n.push_uniq=dr,n.string_template=lr,n.remove=wu,n.mergeSort=af,n.set_difference=no,n.set_intersection=to,n.makePredicate=d,n.Dictionary=gi,n.DEFNODE=r,n.AST_Token=gr,n.AST_Node=e,n.AST_Statement=w,n.AST_Debugger=nr,n.AST_Directive=ii,n.AST_SimpleStatement=h,n.walk_body=tr,n.AST_Block=st,n.AST_BlockStatement=o,n.AST_EmptyStatement=l,n.AST_StatementWithBody=bt,n.AST_LabeledStatement=kt,n.AST_DWLoop=ri,n.AST_Do=ar,n.AST_While=ci,n.AST_For=v,n.AST_ForIn=ut,n.AST_With=li,n.AST_Scope=c,n.AST_Toplevel=lt,n.AST_Lambda=nt,n.AST_Accessor=bu,n.AST_Function=dt,n.AST_Defun=ui,n.AST_Jump=nu,n.AST_Exit=fi,n.AST_Return=ft,n.AST_Throw=tu,n.AST_LoopControl=ai,n.AST_Break=ht,n.AST_Continue=vi,n.AST_If=et,n.AST_Switch=at,n.AST_SwitchBranch=iu,n.AST_Default=ru,n.AST_Case=ir,n.AST_Try=yi,n.AST_Catch=rr,n.AST_Finally=vr,n.AST_Definitions=tt,n.AST_Var=gt,n.AST_Const=ku,n.AST_VarDef=ur,n.AST_Call=b,n.AST_New=vt,n.AST_Seq=s,n.AST_PropAccess=pi,n.AST_Dot=yt,n.AST_Sub=wi,n.AST_Unary=pt,n.AST_UnaryPrefix=it,n.AST_UnaryPostfix=yr,n.AST_Binary=f,n.AST_Conditional=y,n.AST_Assign=k,n.AST_Array=ei,n.AST_Object=oi,n.AST_ObjectProperty=bi,n.AST_ObjectKeyVal=uu,n.AST_ObjectSetter=fu,n.AST_ObjectGetter=eu,n.AST_Symbol=p,n.AST_SymbolAccessor=vf,n.AST_SymbolDeclaration=wt,n.AST_SymbolVar=ou,n.AST_SymbolConst=su,n.AST_SymbolFunarg=du,n.AST_SymbolDefun=gu,n.AST_SymbolLambda=nf,n.AST_SymbolCatch=tf,n.AST_Label=ni,n.AST_SymbolRef=a,n.AST_LabelRef=fr,n.AST_This=er,n.AST_Constant=ct,n.AST_String=rt,n.AST_Number=ki,n.AST_RegExp=pr,n.AST_Atom=wr,n.AST_Null=rf,n.AST_NaN=uf,n.AST_Undefined=ot,n.AST_Infinity=yf,n.AST_Boolean=ff,n.AST_False=br,n.AST_True=si,n.TreeWalker=g,n.KEYWORDS=kr,n.KEYWORDS_ATOM=hu,n.RESERVED_WORDS=ef,n.KEYWORDS_BEFORE_EXPRESSION=of,n.OPERATOR_CHARS=re,n.RE_HEX_NUMBER=ue,n.RE_OCT_NUMBER=fe,n.RE_DEC_NUMBER=ee,n.OPERATORS=pf,n.WHITESPACE_CHARS=oe,n.PUNC_BEFORE_EXPRESSION=se,n.PUNC_CHARS=he,n.REGEXP_MODIFIERS=io,n.UNICODE=cu,n.is_letter=wf,n.is_digit=hi,n.is_alphanumeric_char=ce,n.is_unicode_combining_mark=le,n.is_unicode_connector_punctuation=ae,n.is_identifier=lu,n.is_identifier_start=bf,n.is_identifier_char=au,n.parse_js_number=ve,n.JS_Parse_Error=kf,n.js_error=df,n.is_token=gf,n.EX_EOF=vu,n.tokenizer=ye,n.UNARY_PREFIX=pe,n.UNARY_POSTFIX=ne,n.ASSIGNMENT=we,n.PRECEDENCE=sf,n.STATEMENTS_WITH_LABELS=ro,n.ATOMIC_START_TOKEN=be,n.parse=ke,n.TreeTransformer=or,n.SymbolDef=hf,n.base54=u,n.OutputStream=de,n.Compressor=yu,n.SourceMap=uo})({},function(){return n}());var r=n.UglifyJS;r.AST_Node.warn_function=function(n){i.error("uglifyjs2 WARN: "+n)},n.minify=function(n,t,i){var u,h,f,o,s;return t=r.defaults(t,{outSourceMap:null,sourceRoot:null,inSourceMap:null,fromString:!1,warnings:!1}),typeof n=="string"&&(n=[n]),u=null,n.forEach(function(n){var f=t.fromString?n:e.readFileSync(n,"utf8");u=r.parse(f,{filename:t.fromString?i:n,toplevel:u})}),u.figure_out_scope(),h=r.Compressor({warnings:t.warnings}),u=u.transform(h),u.figure_out_scope(),u.compute_char_frequency(),u.mangle_names(),f=null,o=null,t.inSourceMap&&(o=e.readFileSync(t.inSourceMap,"utf8")),t.outSourceMap&&(f=r.SourceMap({file:t.outSourceMap,orig:o,root:t.sourceRoot})),s=r.OutputStream({source_map:f}),u.print(s),{code:s+"",map:f+""}},n.describe_ast=function(){function t(i){n.print("AST_"+i.TYPE);var r=i.SELF_PROPS.filter(function(n){return!/^\$/.test(n)});r.length>0&&(n.space(),n.with_parens(function(){r.forEach(function(t,i){i&&n.space(),n.print(t)})})),i.documentation&&(n.space(),n.print_string(i.documentation)),i.SUBCLASSES.length>0&&(n.space(),n.with_block(function(){i.SUBCLASSES.forEach(function(i){n.indent(),t(i),n.newline()})}))}var n=r.OutputStream({beautify:!0});return t(r.AST_Node),n+""}}),define("parse",["./esprima"],function(n){"use strict";function r(n,t){var u,i;if(n){if(t.call(null,n)===!1)return!1;for(u in n)if(n.hasOwnProperty(u)&&(i=n[u],typeof i=="object"&&i!==null&&r(i,t)===!1))return!1}}function u(n){if(n&&n.type==="ArrayExpression"&&n.elements){var t=[];return n.elements.some(function(n){n.type==="Literal"&&t.push(n.value)}),t.length?t:undefined}}function t(i,r,u,f){f=f||{};var h,s,c,e=[],o="",l=[],a=!0,v=n.parse(u);if(t.recurse(v,function(n,t,r,u){return u||(u=[]),n!=="define"||r&&r!==i||(a=!1),r?l.push({name:r,deps:u}):e=e.concat(u),!!f.findNestedDependencies},f),f.insertNeedsDefine&&a&&(o+='require.needsDefine("'+i+'");'),e.length||l.length){for(h=0;h1?["require","exports","module"]:["require"]).concat(t))),t},t.findAnonDefineFactory=function(n){var t;return r(n,function(n){var r,u;if(n&&n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&n.callee.name==="define"&&n[i]){if(r=n[i][0],r&&r.type==="FunctionExpression")return t=r,!1;if(u=n[i][1],r.type==="Literal"&&u&&u.type==="FunctionExpression")return t=u,!1}}),t},t.findConfig=function(fileName,fileContents){var jsConfig,foundConfig=null,astRoot=n.parse(fileContents,{range:!0});return r(astRoot,function(n){var r,f=n&&n.callee,u=t.hasRequire(n);if(u&&(u==="require"||u==="requirejs"||u==="requireConfig"||u==="requirejsConfig")){if(r=n[i]&&n[i][0],r&&r.type==="ObjectExpression")return jsConfig=t.nodeToString(fileContents,r),!1}else if(r=t.getRequireObjectLiteral(n),r)return jsConfig=t.nodeToString(fileContents,r),!1}),jsConfig&&(foundConfig=eval("("+jsConfig+")")),foundConfig},t.getRequireObjectLiteral=function(n){if(n.id&&n.id.type==="Identifier"&&(n.id.name==="require"||n.id.name==="requirejs")&&n.init&&n.init.type==="ObjectExpression")return n.init},t.findDependencies=function(i,r,u){var f=[],e=n.parse(r);return t.recurse(e,function(n,t,i,r){r&&(f=f.concat(r))},u),f},t.findCjsDependencies=function(t,u){var f=[];return r(n.parse(u),function(n){var t;n&&n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&n.callee.name==="require"&&n[i]&&n[i].length===1&&(t=n[i][0],t.type==="Literal"&&f.push(t.value))}),f},t.hasDefDefine=function(n){return n.type==="FunctionDeclaration"&&n.id&&n.id.type==="Identifier"&&n.id.name==="define"},t.hasDefineAmd=function(n){return n&&n.type==="AssignmentExpression"&&n.left&&n.left.type==="MemberExpression"&&n.left.object&&n.left.object.name==="define"&&n.left.property&&n.left.property.name==="amd"},t.hasRequire=function(n){var i,t=n&&n.callee;return n&&n.type==="CallExpression"&&t&&(t.type==="Identifier"&&(t.name==="require"||t.name==="requirejs")?i=t.name:t.type==="MemberExpression"&&t.object&&t.object.type==="Identifier"&&(t.object.name==="require"||t.object.name==="requirejs")&&t.property&&t.property.name==="config"&&(i=t.object.name+"Config")),i},t.hasDefine=function(n){return n&&n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&n.callee.name==="define"},t.usesAmdOrRequireJs=function(u,f){var e;return r(n.parse(f),function(n){var r,f,u;t.hasDefDefine(n)?r="declaresDefine":t.hasDefineAmd(n)?r="defineAmd":(f=t.hasRequire(n),f?(u=n[i]&&n[i][0],u&&(u.type==="ObjectExpression"||u.type==="ArrayExpression")&&(r=f)):t.hasDefine(n)&&(r="define")),r&&(e||(e={}),e[r]=!0)}),e},t.usesCommonJs=function(t,u){var f=null,e=!1;return r(n.parse(u),function(n){var r,t=n.expression;n.type==="Identifier"&&(n.name==="__dirname"||n.name==="__filename")?r=n.name.substring(2):n.type==="VariableDeclarator"&&n.id&&n.id.type==="Identifier"&&n.id.name==="exports"?r="varExports":t&&t.type==="AssignmentExpression"&&t.left&&t.left.type==="MemberExpression"&&t.left.object?t.left.object.name==="module"&&t.left.property&&t.left.property.name==="exports"?r="moduleExports":t.left.object.name==="exports"&&t.left.property&&(r="exports"):n&&n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&n.callee.name==="require"&&n[i]&&n[i].length===1&&n[i][0].type==="Literal"&&(r="require"),r&&(r==="varExports"?e=!0:r==="exports"&&e||(f||(f={}),f[r]=!0))}),f},t.findRequireDepNames=function(n,t){r(n,function(n){var r;n&&n.type==="CallExpression"&&n.callee&&n.callee.type==="Identifier"&&n.callee.name==="require"&&n[i]&&n[i].length===1&&(r=n[i][0],r.type==="Literal"&&t.push(r.value))})},t.parseNode=function(n,r){var e,f,c,s,o,h=n&&n[i],l=t.hasRequire(n);if(l==="require"||l==="requirejs")return(s=n[i]&&n[i][0],s.type!=="ArrayExpression"&&s.type==="ObjectExpression"&&(s=n[i][1]),f=u(s),!f)?void 0:r("require",null,null,f);if(t.hasDefine(n)&&h&&h.length){if(e=h[0],f=h[1],o=h[2],e.type==="ArrayExpression"?(o=f,f=e,e=null):e.type==="FunctionExpression"?(o=e,e=f=null):e.type!=="Literal"&&(e=f=o=null),e&&e.type==="Literal"&&f&&(f.type==="FunctionExpression"?(o=f,f=null):f.type==="ObjectExpression"&&(f=o=null)),f&&f.type==="ArrayExpression")f=u(f);else if(o&&o.type==="FunctionExpression")c=t.getAnonDepsFromNode(o),c.length&&(f=c);else if(f||o)return;return e&&e.type==="Literal"&&(e=e.value),r("define",null,e,f)}},t.nodeToString=function(n,t){var i=t.range;return n.substring(i[0],i[1])},t.getLicenseComments=function(t,i){var f,c,s,r,u,h,e=n.parse(i,{comment:!0}),l="",a={},o=i.indexOf("\r")===-1?"\n":"\r\n";if(e.comments)for(u=0;u=e.comments.length)r+=o;else{for(h=u+1;h1?g||(l=v?[v]:[],g=!0):l.push(a))}}),!l.length)?o:(l.reverse(),l.forEach(function(n){n.needsId&&f&&(p+="'"+f+"',"),n.depAction==="scan"&&(w=t.getAnonDeps(e,o.substring(n.defineRange[0],n.defineEndRange[1])),a=w.length?"["+w.map(function(n){return"'"+n+"'"})+"]":"[]",a+=",",n.nameCommaRange?o=o.substring(0,n.nameCommaRange[1])+a+o.substring(n.nameCommaRange[1],o.length):p+=a),p&&(o=o.substring(0,n.parenRange[1])+p+o.substring(n.parenRange[1],o.length)),u&&!n.namespaceExists&&(o=o.substring(0,n.defineRange[0])+u+"."+o.substring(n.defineRange[0],o.length)),s&&s(n)}),h.useSourceUrl&&(o='eval("'+r.jsEscape(o)+"\\n//@ sourceURL="+(e.indexOf("/")===0?"":"/")+e+'");\n'),o)}}}),define("pragma",["parse","logger"],function(n,t){"use strict";function r(){}function u(n,t){r.prototype=n;var u=new r,i;if(r.prototype=null,t)for(i in t)t.hasOwnProperty(i)&&!u.hasOwnProperty(i)&&(u[i]=t[i]);return u}var i={conditionalRegExp:/(exclude|include)Start\s*\(\s*["'](\w+)["']\s*,(.*)\)/,useStrictRegExp:/['"]use strict['"];/g,hasRegExp:/has\s*\(\s*['"]([^'"]+)['"]\s*\)/g,nsRegExp:/(^|[^\.])(requirejs|require|define)(\.config)?\s*\(/g,nsWrapRegExp:/\/\*requirejs namespace: true \*\//,apiDefRegExp:/var requirejs, require, define;/,defineCheckRegExp:/typeof\s+define\s*===\s*["']function["']\s*&&\s*define\s*\.\s*amd/g,defineTypeFirstCheckRegExp:/\s*["']function["']\s*===\s*typeof\s+define\s*&&\s*define\s*\.\s*amd/g,defineJQueryRegExp:/typeof\s+define\s*===\s*["']function["']\s*&&\s*define\s*\.\s*amd\s*&&\s*define\s*\.\s*amd\s*\.\s*jQuery/g,defineHasRegExp:/typeof\s+define\s*==(=)?\s*['"]function['"]\s*&&\s*typeof\s+define\.amd\s*==(=)?\s*['"]object['"]\s*&&\s*define\.amd/g,defineTernaryRegExp:/typeof\s+define\s*===\s*['"]function["']\s*&&\s*define\s*\.\s*amd\s*\?\s*define/,amdefineRegExp:/if\s*\(\s*typeof define\s*\!==\s*'function'\s*\)\s*\{\s*[^\{\}]+amdefine[^\{\}]+\}/g,removeStrict:function(n,t){return t.useStrict?n:n.replace(i.useStrictRegExp,"")},namespace:function(n,t){return t&&(n=n.replace(i.nsRegExp,"$1"+t+".$2$3("),n=n.replace(i.defineTernaryRegExp,"typeof "+t+".define === 'function' && "+t+".define.amd ? "+t+".define"),n=n.replace(i.defineJQueryRegExp,"typeof "+t+".define === 'function' && "+t+".define.amd && "+t+".define.amd.jQuery"),n=n.replace(i.defineHasRegExp,"typeof "+t+".define === 'function' && typeof "+t+".define.amd === 'object' && "+t+".define.amd"),n=n.replace(i.defineCheckRegExp,"typeof "+t+".define === 'function' && "+t+".define.amd"),n=n.replace(i.defineTypeFirstCheckRegExp,"'function' === typeof "+t+".define && "+t+".define.amd"),i.apiDefRegExp.test(n)&&n.indexOf("if (typeof "+t+" === 'undefined')")===-1&&(n="var "+t+";(function () { if (typeof "+t+" === 'undefined') {\n"+t+" = {};\n"+n+"\n"+t+".requirejs = requirejs;"+t+".require = require;"+t+".define = define;\n}\n}());"),i.nsWrapRegExp.test(n)&&(n=n.replace(i.nsWrapRegExp,""),n="(function () {\nvar require = "+t+".require,requirejs = "+t+".requirejs,define = "+t+".define;\n"+n+"\n}());")),n},process:function(fileName,fileContents,config,onLifecycleName,pluginCollector){var foundIndex=-1,startIndex=0,lineEndIndex,conditionLine,matches,type,marker,condition,isTrue,endRegExp,endMatches,endMarkerIndex,shouldInclude,startLength,lifecycleHas,deps,i,dep,moduleName,collectorMod,lifecyclePragmas,pragmas=config.pragmas,hasConfig=config.has,kwArgs=pragmas;if(onLifecycleName&&(lifecyclePragmas=config["pragmas"+onLifecycleName],lifecycleHas=config["has"+onLifecycleName],lifecyclePragmas&&(pragmas=u(pragmas||{},lifecyclePragmas)),lifecycleHas&&(hasConfig=u(hasConfig||{},lifecycleHas))),hasConfig&&(fileContents=fileContents.replace(i.hasRegExp,function(n,t){return hasConfig.hasOwnProperty(t)?!!hasConfig[t]:n})),!config.skipPragmas)while((foundIndex=fileContents.indexOf("//>>",startIndex))!==-1)if(lineEndIndex=fileContents.indexOf("\n",foundIndex),lineEndIndex===-1&&(lineEndIndex=fileContents.length-1),startIndex=lineEndIndex+1,conditionLine=fileContents.substring(foundIndex,lineEndIndex+1),matches=conditionLine.match(i.conditionalRegExp),matches){type=matches[1],marker=matches[2],condition=matches[3],isTrue=!1;try{isTrue=!!eval("("+condition+")")}catch(e){throw"Error in file: "+fileName+". Conditional comment: "+conditionLine+" failed with this error: "+e;}if(endRegExp=new RegExp("\\/\\/\\>\\>\\s*"+type+"End\\(\\s*['\"]"+marker+"['\"]\\s*\\)","g"),endMatches=endRegExp.exec(fileContents.substring(startIndex,fileContents.length)),endMatches)endMarkerIndex=startIndex+endRegExp.lastIndex-endMatches[0].length,lineEndIndex=fileContents.indexOf("\n",endMarkerIndex),lineEndIndex===-1&&(lineEndIndex=fileContents.length-1),shouldInclude=type==="exclude"&&!isTrue||type==="include"&&isTrue,startLength=startIndex-foundIndex,fileContents=fileContents.substring(0,foundIndex)+(shouldInclude?fileContents.substring(startIndex,endMarkerIndex):"")+fileContents.substring(lineEndIndex+1,fileContents.length),startIndex=foundIndex;else throw"Error in file: "+fileName+". Cannot find end marker for conditional comment: "+conditionLine;}if(config.optimizeAllPluginResources&&pluginCollector)try{if(deps=n.findDependencies(fileName,fileContents),deps.length)for(i=0;i=2)i=arguments[1];else if(r){while(!(t in this))t++;i=this[t++]}for(;td.indexOf("/"))?r=it+d:t.trace(a+"\n URL not a relative URL, skipping: "+r),k=r.split("/"),b=k.length-1;b>0;b--)k[b]==="."?k.splice(b,1):k[b]===".."&&b!==0&&k[b-1]!==".."&&(k.splice(b-1,2),b-=1);return"url("+k.join("/")+")"}),o.push(nt),tt)}catch(ft){return t.warn(i+"\n Cannot inline css import, skipping: "+a),u}}),{importList:o,skippedList:s,fileContents:u}}var s,l=/\@import\s+(url\()?\s*([^);]+)\s*(\))?([\w, ]*)(;)?/g,a=/\/\*[^\*]*@import[^\*]*\*\//g,v=/\url\(\s*([^\)]+)\s*\)?/g;return s={jsFile:function(n,t,i,u,f){t||(t=r.readFile(n)),t=s.js(n,t,i,u,f),r.saveUtf8File(i,t)},js:function(n,r,e,o,h){var l,a,v=String(o.optimize).split("."),c=v[0],p=v[1]==="keepLines",y="";if(o=o||{},r=f.process(n,r,o,"OnSave",h),c&&c!=="none"){if(l=i[c]||s.optimizers[c],!l)throw new Error('optimizer with name of "'+c+'" not found for this environment');if(a=o[c]||{},o.generateSourceMaps&&(a.generateSourceMaps=!!o.generateSourceMaps),o.preserveLicenseComments)try{y=u.getLicenseComments(n,r)}catch(w){t.error("Cannot parse file: "+n+" for comments. Skipping it. Error is:\n"+w.toString())}r=y+l(n,r,e,p,a)}return r},cssFile:function(n,i,u){var l=r.readFile(n),o=c(n,l,u.cssImportIgnore,{}),f=o.skippedList.length?l:o.fileContents,e,s,a,h;o.skippedList.length&&t.warn("Cannot inline @imports for "+n+",\nthe following files had media queries in them:\n"+o.skippedList.join("\n"));try{if(u.optimizeCss.indexOf(".keepComments")===-1)for(e=0;(e=f.indexOf("/*",e))!==-1;){if(s=f.indexOf("*/",e+2),s===-1)throw"Improper comment in CSS file: "+n;h=f.substring(e,s),u.preserveLicenseComments&&(h.indexOf("license")!==-1||h.indexOf("opyright")!==-1||h.indexOf("(c)")!==-1)?e=s:(f=f.substring(0,e)+f.substring(s+2,f.length),e=0)}u.optimizeCss.indexOf(".keepLines")===-1?(f=f.replace(/[\r\n]/g,""),f=f.replace(/\s+/g," "),f=f.replace(/\{\s/g,"{"),f=f.replace(/\s\}/g,"}")):(f=f.replace(/(\r\n)+/g,"\r\n"),f=f.replace(/(\n)+/g,"\n"))}catch(v){f=l,t.error("Could not optimized CSS file: "+n+", error: "+v)}return r.saveUtf8File(i,f),a="\n"+i.replace(u.dir,"")+"\n----------------\n",o.importList.push(n),a+=o.importList.map(function(n){return n.replace(u.dir,"")}).join("\n"),{importList:o.importList,buildText:a+"\n"}},css:function(n,i){var c="",h=[],l=i.dir&&i.removeCombined,u,f,e,o;if(i.optimizeCss.indexOf("standard")!==-1){if(o=r.getFilteredFileList(n,/\.css$/,!0),o)for(u=0;u-1;s--)if(a=o[s],a){for(l=o.length-s;l>-1;l--)i+=p;i+=a+"\n"}e.error(i)}if(c=t.stack,typeof n=="string"&&n.indexOf("stacktrace=true")!==-1?i+="\n"+c:!u&&c&&(u=y.exec(c),u&&(i+="\n"+u[0]||"")),e.level>e.ERROR)throw new Error(i);else e.error(i),g(1)})},t._run=function(c){var g,it,at,y,rt,ot,l,a,p,st,ut,w,ht,b,ct,lt,ft,nt,vt={},k="",et={};return f().start(function(){var f;if(d(),l=t.createConfig(c),y=l.paths,l.logLevel&&e.logLevel(l.logLevel),l.dir&&!l.keepBuildDir&&i.exists(l.dir)&&i.deleteFile(l.dir),!l.out&&!l.cssIn)if(i.copyDir(l.appDir||l.baseUrl,l.dir,/\w/,!0),g={},l.appDir)for(f in y)u(y,f)&&(g[f]=y[f].replace(l.appDir,l.dir));else for(f in y)u(y,f)&&(y[f].indexOf(l.baseUrl)===0?g[f]=y[f].replace(l.baseUrl,l.dirBaseUrl):(g[f]=y[f]==="empty:"?"empty:":f.replace(/\./g,"/"),p=y[f],p.indexOf("/")!==0&&p.indexOf(":")===-1&&(p=l.baseUrl+p),ut=l.dirBaseUrl+g[f],p!=="empty:"&&(i.exists(p)&&i.isDirectory(p)?i.copyDir(p,ut,/\w/,!0):(p+=".js",ut+=".js",i.copyFile(p,ut)))));n({baseUrl:l.baseUrl,paths:y,packagePaths:l.packagePaths,packages:l.packages}),st=n.s.contexts._,a=l.modules,a&&a.forEach(function(n){if(n.name&&(n._sourcePath=st.nameToUrl(n.name),!i.exists(n._sourcePath)&&!n.create&&n.name.indexOf("!")===-1))throw new Error("ERROR: module path does not exist: "+n._sourcePath+" for module named: "+n.name+". Path is relative to: "+i.absPath("."));}),l.out?(n(l),l.cssIn||(l.modules[0]._buildPath=typeof l.out=="function"?"FUNCTION":l.out)):l.cssIn||(ot={baseUrl:l.dirBaseUrl,paths:g},r.mixin(ot,l),n(ot),a&&a.forEach(function(n){n.name&&(n._buildPath=st.nameToUrl(n.name,null),n.create||i.copyFile(n._sourcePath,n._buildPath))})),l.optimizeCss&&l.optimizeCss!=="none"&&l.dir&&(k+=h.css(l.dir,l))}).then(function(){var n=[];if(a)return n=a.map(function(n,i){return function(){return l._buildPathToModuleIndex[n._buildPath]=i,t.traceDependencies(n,l).then(function(t){n.layer=t})}}),f.serial(n)}).then(function(){var n;if(a)return n=a.map(function(n){return function(){if(n.exclude)return n.excludeLayers=[],f.serial(n.exclude.map(function(i,r){return function(){var u=t.findBuildModule(i,a);if(u)n.excludeLayers[r]=u;else return t.traceDependencies({name:i},l).then(function(t){n.excludeLayers[r]={layer:t}})}}))}}),f.serial(n)}).then(function(){if(a)return f.serial(a.map(function(n){return function(){return n.exclude&&n.exclude.forEach(function(i,r){var o=n.excludeLayers[r].layer,e=o.buildPathMap,f;for(f in e)u(e,f)&&t.removeModulePath(f,e[f],n.layer)}),n.excludeShallow&&n.excludeShallow.forEach(function(i){var r=o(n.layer.buildPathMap,i);r&&t.removeModulePath(i,r,n.layer)}),t.flattenModule(n,n.layer,l).then(function(t){n._buildPath==="FUNCTION"?n._buildText=t.text:i.saveUtf8File(n._buildPath+"-temp",t.text),k+=t.buildText})}}))}).then(function(){var r;if(a&&a.forEach(function(n){var t=n._buildPath;t!=="FUNCTION"&&(i.exists(t)&&i.deleteFile(t),i.renameFile(t+"-temp",t),l.removeCombined&&n.layer.buildFilePaths.forEach(function(n){i.exists(n)&&!a.some(function(t){return t._buildPath===n})&&i.deleteFile(n)}))}),l.removeCombined&&!l.out&&l.dir&&i.deleteEmptyDirs(l.dir),l.out&&!l.cssIn)it=l.modules[0]._buildPath,it==="FUNCTION"?l.modules[0]._buildText=h.js(it,l.modules[0]._buildText,null,l):h.jsFile(it,null,it,l);else if(!l.cssIn){at=i.getFilteredFileList(l.dir,/\.js$/,!0),at.forEach(function(n){var e,f,u;r=n.replace(l.dir,""),r=r.substring(0,r.length-3),u=o(l._buildPathToModuleIndex,n),u=u===0||u>0?u:-1,(u>-1||!l.skipDirOptimize||l.normalizeDirDefines==="all"||l.cjsTranslate)&&(nt=i.readFile(n),l.cjsTranslate&&(nt=v.convert(n,nt)),u===-1&&l.normalizeDirDefines==="all"&&(nt=t.toTransport(l.namespace,null,n,nt)),f=u>-1?l.modules[u].override:null,e=f?t.createOverrideConfig(l,f):l,(u>-1||!l.skipDirOptimize)&&h.jsFile(n,nt,n,e,et))}),b=n.s.contexts._;for(r in et)if(u(et,r))for(ht=b.makeModuleMap(r),ct=et[r],rt=0;rt1&&s(ut,w)&&(l.push(w),ut[w]=!0));if(nt.length||l.length){if(l.length&&(c+="Loader plugin"+(l.length===1?"":"s")+" did not call the load callback in the build: "+l.join(", ")+"\n"),c+="Module loading did not complete for: "+nt.join(", "),ft){c+="\nThe following modules share the same URL. This could be a misconfiguration if that URL only has one anonymous module in it:";for(f in h)u(h,f)&&(c+="\n"+f+": "+h[f].join(", "))}throw new Error(c);}return d})},t.createOverrideConfig=function(n,i){var f={};return r.mixin(f,n,!0),r.eachProp(i,function(e,o){u(t.objProps,o)?(f[o]={},r.mixin(f[o],n[o],!0),r.mixin(f[o],i[o],!0)):f[o]=i[o]}),f},t.flattenModule=function(i,r,e){var h,l="";return f().start(function(){var tt,y,a,p,g,w,d,it,k,nt,ut,ft=r.context,rt=[],et={};return i.override&&(e=t.createOverrideConfig(e,i.override)),k=e.namespace||"",nt=k?k+".":"",ut=i.stubModules&&i.stubModules._byName||{},l+="\n"+(e.dir?i._buildPath.replace(e.dir,""):i._buildPath)+"\n----------------\n",r.existingRequireUrl&&(tt=r.buildFilePaths.indexOf(r.existingRequireUrl),tt!==-1&&(r.buildFilePaths.splice(tt,1),r.buildFilePaths.unshift(r.existingRequireUrl))),h="",f.serial(r.buildFilePaths.map(function(i){return function(){return a=r.buildFileToModule[i],g=r.context.config.pkgs&&o(r.context.config.pkgs,a),g&&(a+="/"+g.main),f().start(function(){if(w=ft.makeModuleMap(a),d=w.prefix&&o(ft.defined,w.prefix),d){d.onLayerEnd&&s(et,w.prefix)&&(rt.push(d),et[w.prefix]=!0),d.write&&(it=function(n){h+="\n"+c(n),e.onBuildWrite&&(h=e.onBuildWrite(a,i,h))},it.asModule=function(n,u){h+="\n"+c(t.toTransport(k,n,i,u,r,{useSourceUrl:r.context.config.useSourceUrl})),e.onBuildWrite&&(h=e.onBuildWrite(n,i,h))},d.write(w.prefix,w.name,it));return}return f().start(function(){return u(ut,a)?u(r.context.plugins,a)?'define({load: function(id){throw new Error("Dynamic load not allowed: " + id);}});':"define({});":n._cacheReadAsync(i)}).then(function(n){y=n,e.cjsTranslate&&(y=v.convert(i,y)),e.onBuildRead&&(y=e.onBuildRead(a,i,y)),k&&(y=b.namespace(y,k)),y=t.toTransport(k,a,i,y,r,{useSourceUrl:e.useSourceUrl}),g&&(y=c(y)+"\n"+(nt+"define('"+g.name+"', ['"+a+"'], function (main) { return main; });\n")),e.onBuildWrite&&(y=e.onBuildWrite(a,i,y)),h+="\n"+c(y)})}).then(function(){l+=i.replace(e.dir,"")+"\n",a&&s(r.modulesWithNames,a)&&!e.skipModuleInsertion&&(p=e.shim&&o(e.shim,a),h+=p?"\n"+nt+'define("'+a+'", '+(p.deps&&p.deps.length?t.makeJsArrayString(p.deps)+", ":"")+(p.exportsFn?p.exportsFn():"function(){}")+");\n":"\n"+nt+'define("'+a+'", function(){});\n')})}})).then(function(){rt.length&&rt.forEach(function(n){var t;typeof i.out=="string"?t=i.out:typeof i._buildPath=="string"&&(t=i._buildPath);n.onLayerEnd(function(n){h+="\n"+c(n)},{name:i.name,path:t})}),i.insertRequire&&(h+="\n"+nt+'require(["'+i.insertRequire.join('", "')+'"]);\n')})}).then(function(){return{text:e.wrap?e.wrap.start+h+e.wrap.end:h,buildText:l}})},t.makeJsArrayString=function(n){return'["'+n.map(function(n){return r.jsEscape(n)}).join('","')+'"]'},t.toTransport=function(n,t,i,r,u,f){function o(n){u&&(n.needsId||n.foundId===t)&&(u.modulesWithNames[t]=!0)}var e=u&&u.context.config.baseUrl;return e&&(i=i.replace(e,"")),k.toTransport(n,t,i,r,o,f)},t})}function p(n){f=n.replace(/\\/g,"/"),f.indexOf("/")!==-1&&(f=f.split("/"),f.pop(),f=f.join("/"),s("require({baseUrl: '"+f+"'});"))}function tt(){requirejs.optimize=function(n,t,i){k||(h(),k=!0);var r=function(r,u){function f(n){return requirejs._buildReset&&(requirejs._buildReset(),requirejs._cacheReset()),n}n.logLevel=n.hasOwnProperty("logLevel")?n.logLevel:u.SILENT,requirejs._buildReset&&(requirejs._buildReset(),requirejs._cacheReset()),r(n).then(f,f).then(t,i)};requirejs({context:"build"},["build","logger"],r)},requirejs.tools={useLib:function(n,t){t||(t=n,n="uselib"),g[n]||(h(),g[n]=!0);var i=requirejs({context:n});i(["build"],function(){t(i)})}},requirejs.define=define}var u,r,e,w,a,s,b,f,v,it,c,l,k,d,o="",g={},nt=t,y=typeof i!="undefined"?i:null;if(typeof navigator!="undefined"&&typeof document!="undefined"||typeof importScripts!="undefined"&&typeof self!="undefined"?(r="browser",y=function(n){return e.readFileSync(n,"utf8")},s=function(string,name){return eval(string)},c=function(){return n.log("x.js exists not applicable in browser env"),!1}):typeof Packages!="undefined"?(r="rhino",u=t[0],u&&u.indexOf("-")===0&&(o=u.substring(1),u=t[1]),b=Packages.org.mozilla.javascript.ContextFactory.getGlobal().enterContext(),s=function(n,t){return b.evaluateString(this,n,t,0,null)},c=function(n){return new java.io.File(n).exists()},typeof n=="undefined"&&(n={log:function(){print.apply(undefined,arguments)}})):typeof process!="undefined"&&(r="node",e=require("fs"),w=require("vm"),a=require("path"),d=e.existsSync||a.existsSync,v=require,it=define,l=require.main,require=undefined,define=undefined,y=function(n){return e.readFileSync(n,"utf8")},s=function(n,t){return w.runInThisContext(this.requirejsVars.require.makeNodeWrapper(n),t?e.realpathSync(t):"")},c=function(n){return d(n)},u=process.argv[2],u&&u.indexOf("-")===0&&(o=u.substring(1),u=process.argv[3])),function(n){function a(n){return ot.call(n)==="[object Function]"}function v(n){return ot.call(n)==="[object Array]"}function e(n,t){if(n)for(var i=0;i-1;i-=1)if(n[i]&&t(n[i],i,n))break}function r(n,t){return bt.call(n,t)}function t(n,t){return r(n,t)&&n[t]}function h(n,t){var i;for(i in n)if(r(n,i)&&t(n[i],i))break}function g(n,t,i,u){return t&&h(t,function(t,f){(i||!r(n,f))&&(u&&typeof t!="string"?(n[f]||(n[f]={}),g(n[f],t,i,u)):n[f]=t)}),n}function u(n,t){return function(){return t.apply(n,arguments)}}function it(){return document.getElementsByTagName("script")}function vt(t){if(!t)return t;var i=n;return e(t.split("."),function(n){i=i[n]}),i}function y(n,t,i,r){var u=new Error(t+"\nhttp://requirejs.org/docs/errors.html#"+n);return u.requireType=n,u.requireModules=r,i&&(u.originalError=i),u}function gt(o){function li(n){for(var i,t=0;n[t];t+=1)if(i=n[t],i===".")n.splice(t,1),t-=1;else if(i==="..")if(t===1&&(n[2]===".."||n[0]===".."))break;else t>0&&(n.splice(t-1,2),t-=2)}function rt(n,i,r){var p,w,f,s,e,h,l,o,b,a,k,u=i&&i.split("/"),d=u,v=c.map,y=v&&v["*"];if(n&&n.charAt(0)==="."&&(i?(d=t(c.pkgs,i)?u=[i]:u.slice(0,u.length-1),n=d.concat(n.split("/")),li(n),w=t(c.pkgs,p=n[0]),n=n.join("/"),w&&n===p+"/"+w.main&&(n=p)):n.indexOf("./")===0&&(n=n.substring(2))),r&&(u||y)&&v){for(s=n.split("/"),e=s.length;e>0;e-=1){if(l=s.slice(0,e).join("/"),u)for(h=u.length;h>0;h-=1)if(f=t(v,u.slice(0,h).join("/")),f&&(f=t(f,l),f)){o=f,b=e;break}if(o)break;!a&&y&&t(y,l)&&(a=t(y,l),k=e)}!o&&a&&(o=a,b=k),o&&(s.splice(0,b,o),n=s.join("/"))}return n}function ii(n){f&&e(it(),function(t){if(t.getAttribute("data-requiremodule")===n&&t.getAttribute("data-requirecontext")===s.contextName)return t.parentNode.removeChild(t),!0})}function bt(n){var i=t(c.paths,n);if(i&&v(i)&&i.length>1)return ii(n),i.shift(),s.require.undef(n),s.require([n]),!0}function ri(n){var i,t=n?n.indexOf("!"):-1;return t>-1&&(i=n.substring(0,t),n=n.substring(t+1,n.length)),[i,n]}function k(n,i,r,u){var a,h,l,o,f=null,c=i?i.name:null,y=n,v=!0,e="";return n||(v=!1,n="_@r"+(hi+=1)),o=ri(n),f=o[0],n=o[1],f&&(f=rt(f,c,u),h=t(w,f)),n&&(f?e=h&&h.normalize?h.normalize(n,function(n){return rt(n,c,u)}):rt(n,c,u):(e=rt(n,c,u),o=ri(e),f=o[0],e=o[1],r=!0,a=s.nameToUrl(e))),l=f&&!h&&!r?"_unnormalized"+(ci+=1):"",{prefix:f,name:e,parentMap:i,unnormalized:!!l,url:a,originalName:y,isDefine:v,id:(f?f+"!"+e:e)+l}}function et(n){var r=n.id,i=t(p,r);return i||(i=p[r]=new s.Module(n)),i}function st(n,i,u){var f=n.id,e=t(p,f);if(r(w,f)&&(!e||e.defineEmitComplete))i==="defined"&&u(w[f]);else et(n).on(i,u)}function nt(n,r){var f=n.requireModules,u=!1;if(r)r(n);else if(e(f,function(i){var r=t(p,i);r&&(r.error=n,r.events.error&&(u=!0,r.emit("error",n)))}),!u)i.onError(n)}function gt(){d.length&&(kt.apply(tt,[tt.length-1,0].concat(d)),d=[])}function ui(n){delete p[n]}function fi(n,i,r){var u=n.map.id;n.error?n.emit("error",n.error):(i[u]=!0,e(n.depMaps,function(u,f){var e=u.id,o=t(p,e);!o||n.depMatched[f]||r[e]||(t(i,e)?(n.defineDep(f,w[e]),n.check()):fi(o,i,r))}),r[u]=!0)}function ni(){var n,t,r,l,a=c.waitSeconds*1e3,u=a&&s.startTime+a<(new Date).getTime(),i=[],v=[],o=!1,w=!0;if(!ct){if(ct=!0,h(p,function(r){if((n=r.map,t=n.id,r.enabled)&&(n.isDefine||v.push(r),!r.error))if(!r.inited&&u)bt(t)?(l=!0,o=!0):(i.push(t),ii(t));else if(!r.inited&&r.fetched&&n.isDefine&&(o=!0,!n.prefix))return w=!1}),u&&i.length)return r=y("timeout","Load timeout for modules: "+i,null,i),r.contextName=s.contextName,nt(r);w&&e(v,function(n){fi(n,{},{})}),(!u||l)&&o&&(f||ht)&&!yt&&(yt=setTimeout(function(){yt=0,ni()},50)),ct=!1}}function ti(n){r(w,n[0])||et(k(n[0],null,!0)).init(n[1],n[2])}function ei(n,t,i,r){n.detachEvent&&!lt?r&&n.detachEvent(r,t):n.removeEventListener(i,t,!1)}function oi(n){var t=n.currentTarget||n.srcElement;return ei(t,s.onScriptLoad,"load","onreadystatechange"),ei(t,s.onScriptError,"error"),{node:t,id:t&&t.getAttribute("data-requiremodule")}}function si(){var n;for(gt();tt.length;){if(n=tt.shift(),n[0]===null)return nt(y("mismatch","Mismatched anonymous define() module: "+n[n.length-1]));ti(n)}}var ct,at,s,ut,yt,c={waitSeconds:7,baseUrl:"./",paths:{},pkgs:{},shim:{},map:{},config:{}},p={},pt={},tt=[],w={},ot={},hi=1,ci=1;return ut={require:function(n){return n.require?n.require:n.require=s.makeRequire(n.map)},exports:function(n){return n.usingExports=!0,n.map.isDefine?n.exports?n.exports:n.exports=w[n.map.id]={}:void 0},module:function(n){return n.module?n.module:n.module={id:n.map.id,uri:n.map.url,config:function(){return c.config&&t(c.config,n.map.id)||{}},exports:w[n.map.id]}}},at=function(n){this.events=t(pt,n.id)||{},this.map=n,this.shim=t(c.shim,n.id),this.depExports=[],this.depMaps=[],this.depMatched=[],this.pluginMaps={},this.depCount=0},at.prototype={init:function(n,t,i,r){if(r=r||{},!this.inited){if(this.factory=t,i)this.on("error",i);else this.events.error&&(i=u(this,function(n){this.emit("error",n)}));this.depMaps=n&&n.slice(0),this.errback=i,this.inited=!0,this.ignore=r.ignore,r.enabled||this.enabled?this.enable():this.check()}},defineDep:function(n,t){this.depMatched[n]||(this.depMatched[n]=!0,this.depCount-=1,this.depExports[n]=t)},fetch:function(){if(!this.fetched){this.fetched=!0,s.startTime=(new Date).getTime();var n=this.map;if(this.shim)s.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],u(this,function(){return n.prefix?this.callPlugin():this.load()}));else return n.prefix?this.callPlugin():this.load()}},load:function(){var n=this.map.url;ot[n]||(ot[n]=!0,s.load(this.map.id,n))},check:function(){if(this.enabled&&!this.enabling){var t,r,u=this.map.id,e=this.depExports,n=this.exports,f=this.factory;if(this.inited){if(this.error)this.emit("error",this.error);else if(!this.defining){if(this.defining=!0,this.depCount<1&&!this.defined){if(a(f)){if(this.events.error)try{n=s.execCb(u,f,e,n)}catch(o){t=o}else n=s.execCb(u,f,e,n);if(this.map.isDefine&&(r=this.module,r&&r.exports!==undefined&&r.exports!==this.exports?n=r.exports:n===undefined&&this.usingExports&&(n=this.exports)),t)return t.requireMap=this.map,t.requireModules=[this.map.id],t.requireType="define",nt(this.error=t)}else n=f;if(this.exports=n,this.map.isDefine&&!this.ignore&&(w[u]=n,i.onResourceLoad))i.onResourceLoad(s,this.map,this.depMaps);delete p[u],this.defined=!0}this.defining=!1,this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var n=this.map,e=n.id,f=k(n.prefix);this.depMaps.push(f),st(f,"defined",u(this,function(f){var o,l,a,v=this.map.name,w=this.map.parentMap?this.map.parentMap.name:null,y=s.makeRequire(n.parentMap,{enableBuildCallback:!0,skipMap:!0});if(this.map.unnormalized){if(f.normalize&&(v=f.normalize(v,function(n){return rt(n,w,!0)})||""),l=k(n.prefix+"!"+v,this.map.parentMap),st(l,"defined",u(this,function(n){this.init([],function(){return n},null,{enabled:!0,ignore:!0})})),a=t(p,l.id),a){if(this.depMaps.push(l),this.events.error)a.on("error",u(this,function(n){this.emit("error",n)}));a.enable()}return}o=u(this,function(n){this.init([],function(){return n},null,{enabled:!0})}),o.error=u(this,function(n){this.inited=!0,this.error=n,n.requireModules=[e],h(p,function(n){n.map.id.indexOf(e+"_unnormalized")===0&&ui(n.map.id)}),nt(n)}),o.fromText=u(this,function(t,u){var f=n.name,h=k(f),l=b;u&&(t=u),l&&(b=!1),et(h),r(c.config,e)&&(c.config[f]=c.config[e]);try{i.exec(t)}catch(a){throw new Error("fromText eval for "+f+" failed: "+a);}l&&(b=!0),this.depMaps.push(h),s.completeLoad(f),y([f],o)}),f.load(n.name,y,o,c)})),s.enable(f,this),this.pluginMaps[f.id]=f},enable:function(){this.enabled=!0,this.enabling=!0,e(this.depMaps,u(this,function(n,i){var f,e,o;if(typeof n=="string"){if(n=k(n,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap),this.depMaps[i]=n,o=t(ut,n.id),o){this.depExports[i]=o(this);return}this.depCount+=1,st(n,"defined",u(this,function(n){this.defineDep(i,n),this.check()})),this.errback&&st(n,"error",this.errback)}f=n.id,e=p[f],r(ut,f)||!e||e.enabled||s.enable(n,this)})),h(this.pluginMaps,u(this,function(n){var i=t(p,n.id);i&&!i.enabled&&s.enable(n,this)})),this.enabling=!1,this.check()},on:function(n,t){var i=this.events[n];i||(i=this.events[n]=[]),i.push(t)},emit:function(n,t){e(this.events[n],function(n){n(t)}),n==="error"&&delete this.events[n]}},s={config:c,contextName:o,registry:p,defined:w,urlFetched:ot,defQueue:tt,Module:at,makeModuleMap:k,nextTick:i.nextTick,configure:function(n){n.baseUrl&&n.baseUrl.charAt(n.baseUrl.length-1)!=="/"&&(n.baseUrl+="/");var t=c.pkgs,i=c.shim,r={paths:!0,config:!0,map:!0};h(n,function(n,t){r[t]?t==="map"?g(c[t],n,!0,!0):g(c[t],n,!0):c[t]=n}),n.shim&&(h(n.shim,function(n,t){v(n)&&(n={deps:n}),(n.exports||n.init)&&!n.exportsFn&&(n.exportsFn=s.makeShimExports(n)),i[t]=n}),c.shim=i),n.packages&&(e(n.packages,function(n){var i;n=typeof n=="string"?{name:n}:n,i=n.location,t[n.name]={name:n.name,location:i||n.name,main:(n.main||"main").replace(wt,"").replace(ft,"")}}),c.pkgs=t),h(p,function(n,t){n.inited||n.map.unnormalized||(n.map=k(t))}),(n.deps||n.callback)&&s.require(n.deps||[],n.callback)},makeShimExports:function(t){function i(){var i;return t.init&&(i=t.init.apply(n,arguments)),i||t.exports&&vt(t.exports)}return i},makeRequire:function(n,u){function e(t,f,h){var c,v,l;return(u.enableBuildCallback&&f&&a(f)&&(f.__requireJsBuild=!0),typeof t=="string")?a(f)?nt(y("requireargs","Invalid require call"),h):n&&r(ut,t)?ut[t](p[n.id]):i.get?i.get(s,t,n):(v=k(t,n,!1,!0),c=v.id,!r(w,c))?nt(y("notloaded",'Module name "'+c+'" has not been loaded yet for context: '+o+(n?"":". Use require([])"))):w[c]:(si(),s.nextTick(function(){si(),l=et(k(null,n)),l.skipMap=u.skipMap,l.init(t,f,h,{enabled:!0}),ni()}),e)}return u=u||{},g(e,{isBrowser:f,toUrl:function(t){var i=t.lastIndexOf("."),r=null;return i!==-1&&(r=t.substring(i,t.length),t=t.substring(0,i)),s.nameToUrl(rt(t,n&&n.id,!0),r)},defined:function(t){return r(w,k(t,n,!1,!0).id)},specified:function(t){return t=k(t,n,!1,!0).id,r(w,t)||r(p,t)}}),n||(e.undef=function(i){gt();var u=k(i,n,!0),r=t(p,i);delete w[i],delete ot[u.url],delete pt[i],r&&(r.events.defined&&(pt[i]=r.events),ui(i))}),e},enable:function(n){var i=t(p,n.id);i&&et(n).enable()},completeLoad:function(n){var u,i,f,e=t(c.shim,n)||{},o=e.exports;for(gt();tt.length;){if(i=tt.shift(),i[0]===null){if(i[0]=n,u)break;u=!0}else i[0]===n&&(u=!0);ti(i)}if(f=t(p,n),!u&&!r(w,n)&&f&&!f.inited)if(!c.enforceDefine||o&&vt(o))ti([n,e.deps||[],e.exportsFn]);else return bt(n)?void 0:nt(y("nodefine","No define call for "+n,null,[n]));ni()},nameToUrl:function(n,r){var l,a,f,y,e,o,h,u,s;if(i.jsExtRegExp.test(n))u=n+(r||"");else{for(l=c.paths,a=c.pkgs,e=n.split("/"),o=e.length;o>0;o-=1)if(h=e.slice(0,o).join("/"),f=t(a,h),s=t(l,h),s){v(s)&&(s=s[0]),e.splice(0,o,s);break}else if(f){y=n===f.name?f.location+"/"+f.main:f.location,e.splice(0,o,y);break}u=e.join("/"),u+=r||(/\?/.test(u)?"":".js"),u=(u.charAt(0)==="/"||u.match(/^[\w\+\.\-]+:/)?"":c.baseUrl)+u}return c.urlArgs?u+((u.indexOf("?")===-1?"?":"&")+c.urlArgs):u},load:function(n,t){i.load(s,n,t)},execCb:function(n,t,i,r){return t.apply(r,i)},onScriptLoad:function(n){if(n.type==="load"||dt.test((n.currentTarget||n.srcElement).readyState)){l=null;var t=oi(n);s.completeLoad(t.id)}},onScriptError:function(n){var t=oi(n);if(!bt(t.id))return nt(y("scripterror","Script error",n,[t.id]))}},s.require=s.makeRequire(),s}function ni(){return l&&l.readyState==="interactive"?l:(at(it(),function(n){if(n.readyState==="interactive")return l=n}),l)}var i,nt,c,p,o,k,l,tt,rt,ut,yt=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,pt=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,ft=/\.js$/,wt=/^\.\//,et=Object.prototype,ot=et.toString,bt=et.hasOwnProperty,st=Array.prototype,ti=st.slice,kt=st.splice,f=!!(typeof window!="undefined"&&navigator&&document),ht=!f&&typeof importScripts!="undefined",dt=f&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,ct="_",lt=typeof opera!="undefined"&&opera.toString()==="[object Opera]",w={},s={},d=[],b=!1;if(typeof define=="undefined"){if(typeof requirejs!="undefined"){if(a(requirejs))return;s=requirejs,requirejs=undefined}typeof require=="undefined"||a(require)||(s=require,require=undefined),i=requirejs=function(n,r,u,f){var o,e,s=ct;return v(n)||typeof n=="string"||(e=n,v(r)?(n=r,r=u,u=f):n=[]),e&&e.context&&(s=e.context),o=t(w,s),o||(o=w[s]=i.s.newContext(s)),e&&o.configure(e),o.require(n,r,u)},i.config=function(n){return i(n)},i.nextTick=typeof setTimeout!="undefined"?function(n){setTimeout(n,4)}:function(n){n()},require||(require=i),i.version="2.1.2",i.jsExtRegExp=/^\/|:|\?|\.js$/,i.isBrowser=f,nt=i.s={contexts:w,newContext:gt},i({}),e(["toUrl","undef","defined","specified"],function(n){i[n]=function(){var t=w[ct];return t.require[n].apply(t,arguments)}}),f&&(c=nt.head=document.getElementsByTagName("head")[0],p=document.getElementsByTagName("base")[0],p&&(c=nt.head=p.parentNode)),i.onError=function(n){throw n;},i.load=function(n,t,i){var u=n&&n.config||{},r;if(f)return r=u.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script"),r.type=u.scriptType||"text/javascript",r.charset="utf-8",r.async=!0,r.setAttribute("data-requirecontext",n.contextName),r.setAttribute("data-requiremodule",t),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||lt?(r.addEventListener("load",n.onScriptLoad,!1),r.addEventListener("error",n.onScriptError,!1)):(b=!0,r.attachEvent("onreadystatechange",n.onScriptLoad)),r.src=i,tt=r,p?c.insertBefore(r,p):c.appendChild(r),tt=null,r;ht&&(importScripts(i),n.completeLoad(t))},f&&at(it(),function(n){return c||(c=n.parentNode),o=n.getAttribute("data-main"),o?(s.baseUrl||(k=o.split("/"),rt=k.pop(),ut=k.length?k.join("/")+"/":"./",s.baseUrl=ut,o=rt),o=o.replace(ft,""),s.deps=s.deps?s.deps.concat(o):[o],!0):void 0}),define=function(n,t,i){var r,u;typeof n!="string"&&(i=t,t=n,n=null),v(t)||(i=t,t=[]),!t.length&&a(i)&&i.length&&(i.toString().replace(yt,"").replace(pt,function(n,i){t.push(i)}),t=(i.length===1?["require"]:["require","exports","module"]).concat(t)),b&&(r=tt||ni(),r&&(n||(n=r.getAttribute("data-requiremodule")),u=w[r.getAttribute("data-requirecontext")])),(u?u.defQueue:d).push([n,t,i])},define.amd={jQuery:!0},i.exec=function(text){return eval(text)},i(s)}}(this),r==="browser"?function(){require.load=function(n,t,i){var r=new XMLHttpRequest;r.open("GET",i,!0),r.send(),r.onreadystatechange=function(){r.readyState===4&&(eval(r.responseText),n.completeLoad(t))}}}():r==="rhino"?function(){"use strict";require.load=function(n,t,i){load(i),n.completeLoad(t)}}():r==="node"&&(this.requirejsVars={require:require,requirejs:require,define:define,nodeRequire:v},require.nodeRequire=v,function(){"use strict";function r(n,t){return s.call(n,t)}function h(n){n()}var t=requirejsVars.nodeRequire,n=requirejsVars.require,u=requirejsVars.define,i=t("fs"),f=t("path"),e=t("vm"),o=i.existsSync||f.existsSync,s=Object.prototype.hasOwnProperty;n.get=function(t,i,u){if(i==="require"||i==="exports"||i==="module")n.onError(new Error("Explicit require of "+i+" is not allowed."));var e,o,f=t.makeModuleMap(i,u);if(i=f.id,r(t.defined,i))e=t.defined[i];else if(e===undefined){o=t.nextTick,t.nextTick=h;try{f.prefix?(t.require([f.originalName]),f=t.makeModuleMap(f.originalName,u),e=t.defined[f.id]):(n.load(t,i,f.url),t.enable(f,u),e=t.defined[i])}finally{t.nextTick=o}}return e},n.nextTick=function(n){process.nextTick(n)},n.makeNodeWrapper=function(n){return"(function (require, requirejs, define) { "+n+"\n}(requirejsVars.require, requirejsVars.requirejs, requirejsVars.define));"},n.load=function(t,f,s){var c,h;if(o(s)){c=i.readFileSync(s,"utf8"),c=n.makeNodeWrapper(c);try{e.runInThisContext(c,i.realpathSync(s))}catch(l){h=new Error("Evaluating "+s+' as module "'+f+'" failed with error: '+l),h.originalError=l,h.moduleName=f,h.fileName=s;return n.onError(h)}}else u(f,function(){var i=r(t.registry,f)&&t.registry[f].map.originalName;try{return(t.config.nodeRequire||n.nodeRequire)(i)}catch(u){h=new Error("Calling node's require(\""+i+'") failed with error: '+u),h.originalError=u,h.moduleName=i;return n.onError(h)}});t.completeLoad(f)},n.exec=function(text){return text=n.makeNodeWrapper(text),eval(text)}}()),o==="o"||u&&/\.js$/.test(u)||(u="main.js"),r==="node"&&l!==module){p(a.resolve(l?l.filename:".")),tt(),module.exports=requirejs;return}if(r==="browser"){p(location.href),tt();return}o==="o"?(h(),require({baseUrl:require.s.contexts._.config.baseUrl,context:"build",catchError:{define:!0}},["env!env/args","build"],function(n,t){t(n)})):o==="v"?n.log("r.js: 2.1.2, RequireJS: "+this.requirejsVars.require.version):o==="convert"?(h(),this.requirejsVars.require(["env!env/args","commonJs","env!env/print"],function(n,t,i){var r,u;if(r=n[0],u=n[1],!r||!u){i("Usage: path/to/commonjs/modules output/dir");return}t.convertDir(n[0],n[1])})):(o==="lib"&&h(),p(u),c(u)?s(y(u),u):rt())})(typeof console!="undefined"?console:undefined,typeof Packages!="undefined"?Array.prototype.slice.call(arguments,0):[],typeof readFile!="undefined"?readFile:undefined); -//@ sourceMappingURL=r.min.js.map \ No newline at end of file diff --git a/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js.map b/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js.map deleted file mode 100644 index 91d3d3d4..00000000 --- a/MapaInversiones.Web/wwwroot/content/dist/js/lib/requirejs/r.min.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ -"version":3, -"file":"r.min.js", -"lineCount":1, -"mappings":"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", -"sources":["r.js"], -"names":["requirejs","require","define","console","args","readFileFunc","showHelp","log","loadLib","prim","jsLibRhinoArgs","pathRegExp","env","Packages","process","navigator","document","importScripts","self","load","name","req","config","replace","match","prefix","indexOf","mod","hasProp","obj","prop","hasOwn","call","lang","Object","prototype","hasOwnProperty","toString","Array","isArray","it","ostring","isFunction","isRegExp","RegExp","falseProp","getOwn","_mixin","dest","source","override","mixin","parameters","slice","arguments","i","l","length","pop","TMP","props","tmp","each","ary","func","eachProp","bind","fn","apply","jsEscape","content","check","p","hideResolutionConflict","Error","notify","value","nextTick","item","op","ok","fail","callback","yes","no","errback","v","push","e","resolve","reject","start","promise","then","next","err","e2","end","serial","prim.serial","result","setTimeout","amd","module","exports","assert","argv","rhinoArgs","concat","file","fileName","eval","readFile","fs","contents","readFileSync","compile","exists","path","status","xhr","XMLHttpRequest","open","send","getLineSeparator","parent","parts","split","join","absPath","normalize","isFile","isDirectory","getFilteredFileList","copyDir","copyFile","renameFile","responseText","readFileAsync","d","onreadystatechange","xhr.onreadystatechange","readyState","statusText","saveUtf8File","fileContents","saveFile","encoding","browser","deleteFile","deleteEmptyDirs","frontSlash","isWindows","charAt","substring","statSync","mkDir","dir","windowsDriveRegExp","test","mkdirSync","mkFullDir","currDir","first","forEach","part","platform","realpathSync","startDir","regExpFilters","makeUnixPaths","files","topDir","regExpInclude","regExpExclude","dirFileArray","stat","filePath","dirFiles","include","exclude","readdirSync","exclusionRegExp","srcDir","destDir","regExpFilter","onlyCopyNew","fileNames","copiedFiles","srcFileName","destFileName","parentDir","mtime","getTime","dirname","writeFileSync","from","to","renameSync","text","rmdirSync","unlinkSync","lineSeparator","java","System","getProperty","io","File","getParentFile","fileObj","getCanonicalPath","backSlashRegExp","startDirIsJavaObject","listFiles","getPath","String","getName","destFile","srcFile","srcChannel","destChannel","lastModified","mkdirs","FileInputStream","getChannel","FileOutputStream","transferFrom","size","close","renameTo","input","BufferedReader","InputStreamReader","stringBuffer","line","StringBuffer","readLine","append","outFile","outWriter","os","getAbsoluteFile","getAbsolutePath","OutputStreamWriter","BufferedWriter","write","code","exit","quit","print","msg","logLevel","level","trace","message","TRACE","_print","info","INFO","warn","WARN","error","ERROR","_sysPrint","logPrefix","condition","sliceSource","isDecimalDigit","ch","isHexDigit","isOctalDigit","isWhiteSpace","charCodeAt","isLineTerminator","isIdentifierStart","Regex","NonAsciiIdentifierStart","isIdentifierPart","NonAsciiIdentifierPart","isFutureReservedWord","id","isStrictModeReservedWord","isRestrictedWord","isKeyword","keyword","strict","nextChar","index","skipComment","blockComment","lineComment","lineNumber","lineStart","throwError","Messages","UnexpectedToken","scanHexEscape","len","toLowerCase","fromCharCode","scanIdentifier","restore","Token","Identifier","Keyword","NullLiteral","BooleanLiteral","scanPunctuator","ch1","ch2","ch3","ch4","Punctuator","scanNumericLiteral","number","NumericLiteral","parseInt","parseFloat","scanStringLiteral","str","quote","unescaped","octal","StringLiteral","scanRegExp","pattern","flags","classMarker","buffer","UnterminatedRegExp","substr","InvalidRegExp","isIdentifierName","token","type","advance","EOF","lex","range","lookahead","pos","peekLineTerminator","found","messageFormat","whole","column","throwErrorTolerant","extra","errors","throwUnexpected","UnexpectedEOS","UnexpectedNumber","UnexpectedString","UnexpectedIdentifier","UnexpectedReserved","StrictReservedWord","expect","expectKeyword","matchKeyword","matchAssign","consumeSemicolon","isLeftHandSide","expr","Syntax","MemberExpression","parseArrayInitialiser","elements","undef","parseAssignmentExpression","ArrayExpression","parsePropertyFunction","param","previousStrict","body","parseFunctionSourceElements","StrictParamName","FunctionExpression","parseObjectPropertyKey","StrictOctalLiteral","createLiteral","parseObjectProperty","key","Property","parseVariableIdentifier","parseObjectInitialiser","properties","property","kind","map","PropertyKind","Data","Get","Set","StrictDuplicateProperty","AccessorDataProperty","AccessorGetSet","ObjectExpression","parsePrimaryExpression","ThisExpression","parseFunctionExpression","state","lastParenthesized","parseExpression","parseArguments","parseNonComputedProperty","parseNonComputedMember","object","parseComputedMember","parseCallMember","CallExpression","parseNewExpression","NewExpression","parseLeftHandSideExpression","parseLeftHandSideExpressionAllowCall","useNew","parsePostfixExpression","StrictLHSPostfix","InvalidLHSInAssignment","UpdateExpression","parseUnaryExpression","StrictLHSPrefix","UnaryExpression","operator","argument","StrictDelete","parseMultiplicativeExpression","BinaryExpression","parseAdditiveExpression","parseShiftExpression","parseRelationalExpression","previousAllowIn","allowIn","parseEqualityExpression","parseBitwiseANDExpression","parseBitwiseXORExpression","parseBitwiseORExpression","parseLogicalANDExpression","LogicalExpression","parseLogicalORExpression","parseConditionalExpression","consequent","ConditionalExpression","StrictLHSAssignment","AssignmentExpression","SequenceExpression","expressions","parseStatementList","list","statement","parseSourceElement","parseBlock","block","BlockStatement","parseVariableDeclaration","init","StrictVarName","VariableDeclarator","parseVariableDeclarationList","parseVariableStatement","declarations","VariableDeclaration","parseConstLetDeclaration","parseEmptyStatement","EmptyStatement","parseExpressionStatement","ExpressionStatement","parseIfStatement","alternate","parseStatement","IfStatement","parseDoWhileStatement","oldInIteration","inIteration","DoWhileStatement","parseWhileStatement","WhileStatement","parseForVariableDeclaration","parseForStatement","update","left","right","InvalidLHSInForIn","ForStatement","ForInStatement","parseContinueStatement","label","IllegalContinue","ContinueStatement","labelSet","UnknownLabel","parseBreakStatement","inSwitch","IllegalBreak","BreakStatement","parseReturnStatement","inFunctionBody","IllegalReturn","ReturnStatement","parseWithStatement","StrictModeWith","WithStatement","parseSwitchCase","SwitchCase","parseSwitchStatement","discriminant","cases","oldInSwitch","SwitchStatement","parseThrowStatement","NewlineAfterThrow","ThrowStatement","parseCatchClause","StrictCatchVariable","CatchClause","parseTryStatement","handlers","finalizer","NoCatchOrFinally","TryStatement","parseDebuggerStatement","DebuggerStatement","labeledBody","parseFunctionDeclaration","Redeclaration","LabeledStatement","sourceElement","sourceElements","directive","firstRestricted","oldLabelSet","oldInFunctionBody","expression","Literal","params","paramSet","StrictFunctionName","StrictParamDupe","FunctionDeclaration","parseSourceElements","parseProgram","Program","addComment","comments","scanComment","comment","collectToken","tokens","TokenName","collectRegex","regex","literal","createRawLiteral","wrapTrackingFunction","loc","parseFunction","isBinary","node","visit","rangeInfo","locInfo","callee","patch","wrapTracking","raw","unpatch","stringToArray","parse","options","program","tolerant","valueOf","version","types","create","freeze","esprima","ast_consolidate","exports.ast_consolidate","oAbstractSyntaxTree","TSourceElementsData","nCategory","ESourceElementCategories","N_OTHER","aCount","EPrimaryExpressionCategories","N_IDENTIFIER_NAMES","N_STRING_LITERALS","N_NULL_AND_BOOLEAN_LITERALS","aIdentifiers","aPrimitiveValues","TPrimitiveValue","nSaving","sName","TSolution","oPrimitiveValues","nSavings","oProcessor","oWeights","EValuePrefixes","A_OTHER_SUBSTITUTABLE_LITERALS","fExamineSyntacticCodeUnit","oSyntacticCodeUnit","bIsGlobal","bIsWhollyExaminable","oSourceElements","oSourceElementData","oScope","oWalker","oWalkers","defun","sIdentifier","aFormalParameterList","fClassifyAsExcludable","fAddIdentifier","dot","oExpression","sIdentifierName","fCountPrimaryExpression","S_STRING","walk","function","S_SYMBOLIC","N_EVAL","return","string","sStringValue","try","oTry","aCatch","var","aVariableDeclarationList","fAddVariable","with","N_WITH","aSourceElementsData","nAfterDirectivePrologue","nPosition","nTo","cContext","oSourceElement","fLambda","N_EXCLUDABLE","aVariableDeclaration","fExamineSourceElements","nFrom","bEnclose","nIndex","cname","oWalkersTransformers","sPrefixed","oSolutionBest","oSolutionCandidate","oSourceElementsData","aVariableDeclarations","cAugmentList","aList","cAddOccurrences","cAddOccurrencesInCategory","keys","fAddOccurrences","cAugmentVariableDeclarations","cSortPrimitiveValues","sPrefixed0","sPrefixed1","nDifference","fEvaluatePrimitiveValue","nLengthOriginal","nLengthSubstitution","nLengthString","make_string","next_mangled","N_VARIABLE_DECLARATION","N_PROPERTY_ACCESSOR","cAddVariableDeclaration","unshift","sort","N_VARIABLE_STATEMENT_AFFIXATION","N_CLOSURE","ast_walker","with_walkers","reverse","splice","scope","oSurveySourceElement","oExamineFunctions","ast_add_scope","is_letter","UNICODE","letter","is_digit","is_unicode_digit","digit","is_alphanumeric_char","is_unicode_combining_mark","combining_mark","is_unicode_connector_punctuation","connector_punctuation","is_identifier_start","is_identifier_char","parse_js_number","num","RE_HEX_NUMBER","RE_OCT_NUMBER","RE_DEC_NUMBER","JS_Parse_Error","col","stack","js_error","is_token","val","tokenizer","$TEXT","peek","S","signal_eof","in_string","EX_EOF","newline_before","find","what","start_token","tokline","tokcol","tokpos","is_comment","ret","regex_allowed","HOP","UNARY_POSTFIX","KEYWORDS_BEFORE_EXPRESSION","PUNC_BEFORE_EXPRESSION","comments_before","nlb","skip_whitespace","WHITESPACE_CHARS","read_while","pred","parse_error","read_num","has_e","after_e","has_x","has_dot","valid","isNaN","read_escaped_char","hex_bytes","n","read_string","with_eof_error","octal_len","read_line_comment","read_multiline_comment","read_name","backslash","escaped","hex","KEYWORDS","toUpperCase","read_regexp","regexp","prev_backslash","in_class","mods","read_operator","grow","bigger","OPERATORS","handle_slash","next_token","handle_dot","read_word","word","KEYWORDS_ATOM","eof_error","cont","ex","force_regexp","PUNC_CHARS","OPERATOR_CHARS","context","next_token.context","nc","NodeWithToken","exigent_mode","embed_tokens","is","peeked","prev","in_directives","croak","ctx","token_error","unexpected","expect_token","punc","can_insert_semicolon","semicolon","as","parenthesised","add_tokens","maybe_embed_tokens","parser","ast","labeled_statement","labels","STATEMENTS_WITH_LABELS","simple_statement","prog1","break_cont","member","in_loop","for_","var_","for_in","regular_for","step","lhs","if_","cond","belse","block_","a","try_","bcatch","bfinally","vardefs","no_in","const_","new_","newexp","expr_atom","expr_list","subscripts","closing","allow_trailing_comma","allow_empty","array_","object_","as_property_name","as_name","function_","allow_calls","curry","maybe_unary","UNARY_PREFIX","make_unary","tag","is_assignable","expr_op","min_prec","prec","PRECEDENCE","expr_ops","maybe_conditional","maybe_assign","ASSIGNMENT","switch_block_","in_function","in_statement","loop","cur","ATOMIC_START_TOKEN","atom","commas","f","Function","array_to_hash","characters","array","RESERVED_WORDS","REGEXP_MODIFIERS","JS_Parse_Error.prototype.toString","b","j","NodeWithToken.prototype.toString","set_logger","exports.set_logger","logger","ast_squeeze_more","with_scope","s","save","_lambda","MAP","w","pro","toplevel","new","ctor","has","jsp","_vardefs","defs","def","_block","statements","out","gen","user","walkers","dive","t","c","throw","switch","branch","break","continue","conditional","assign","lvalue","rvalue","debugger","if","for","for-in","vvar","hash","while","do","binary","unary-prefix","unary-postfix","sub","subscript","rx","seq","Scope","names","mangled","rev_mangled","refs","uses_with","uses_eval","directives","children","base54_digits","DIGITS_OVERRIDE_FOR_TESTING","with_new_scope","current_scope","reference","is_defun","_breacont","having_eval","fixrefs","origin","ast_mangle","get_mangled","newMangle","mangle","except","no_functions","get_define","defines","references","_scope","set_mangle","defaults","at_top","best_of","ast1","ast2","gen_code","last_stat","aborts","boolean_expr","empty","is_string","warn_unreachable","prepare_ifs","redo_if","fi","e_body","redo_if_lambda","redo_if_block","for_side_effects","handler","stop","$stop","restart","$restart","unary","ast_lift_variables","do_body","skip","walker","_toplevel","ast_squeeze","squeeze_1","squeeze_2","negate","not_c","keep_comps","make_conditional","make_real_conditional","when_constant","rmblock","tighten","reduce","dead_code","has_quit","st","no_warnings","make_seqs","make_if","make_real_if","abort_else","_do_while","is_identifier","last","r","unsafe","isFinite","lambda","active_directive","ascii_only","dq","sq","to_ascii","encode_string","inline_script","make_name","indent","beautify","repeat_string","indent_start","indentation","indent_level","with_indent","incr","last_char","first_char","add_spaces","add_commas","space","parenthesize","make","el","needs_parens","DOT_CALL_NO_PARENS","make_num","m","Math","floor","exec","make_then","th","make_block","make_function","no_parens","must_has_semicolon","make_block_statements","noindent","make_switch_block","newline","has_body","make_1vardef","SPLICE_NEEDS_BRACKETS","const","tr","ca","has_call","co","obj_needs_parens","quote_keys","space_colon","stmt","split_lines","max_line_length","splits","current_length","tok","last_split","split_here","custom","prev_token","custom.context","base54","DIGITS","base","has_mangled","mname","toJSON","prior","evaluate","$NOT_CONSTANT","lval","ex2","AtTop","Splice","o","doit","top","MAP.at_top","MAP.splice","uglify","orig_code","strict_semicolons","mangle_options","squeeze_options","gen_options","consolidator","ArraySet","_array","_set","fromArray","ArraySet.fromArray","aArray","set","add","_toSetString","ArraySet.prototype._toSetString","aStr","ArraySet.prototype.add","idx","ArraySet.prototype.has","ArraySet.prototype.indexOf","at","ArraySet.prototype.at","aIdx","toArray","ArraySet.prototype.toArray","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","encode","exports.encode","encoded","vlq","decode","exports.decode","strLen","shift","continuation","charToIntMap","intToCharMap","aNumber","TypeError","aChar","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","mid","cmp","search","exports.search","SourceMapConsumer","aSourceMap","sourceMap","JSON","util","getArg","sources","sourceRoot","mappings","_version","_names","_sources","_sourceRoot","_generatedMappings","_originalMappings","_parseMappings","binarySearch","base64VLQ","defineProperty","get","SourceMapConsumer.prototype._parseMappings","aSourceRoot","generatedLine","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","mappingSeparator","mapping","temp","generatedColumn","rest","originalLine","originalColumn","_compareOriginalPositions","SourceMapConsumer.prototype._compareOriginalPositions","mappingA","mappingB","_compareGeneratedPositions","SourceMapConsumer.prototype._compareGeneratedPositions","_findMapping","SourceMapConsumer.prototype._findMapping","aMappings","aLineName","aColumnName","aComparator","originalPositionFor","SourceMapConsumer.prototype.originalPositionFor","aArgs","needle","generatedPositionFor","SourceMapConsumer.prototype.generatedPositionFor","SourceMapGenerator","_file","_mappings","addMapping","SourceMapGenerator.prototype.addMapping","generated","original","_validateMapping","SourceMapGenerator.prototype._validateMapping","aGenerated","aOriginal","aSource","aName","_serializeMappings","SourceMapGenerator.prototype._serializeMappings","previousGeneratedLine","SourceMapGenerator.prototype.toJSON","SourceMapGenerator.prototype.toString","stringify","SourceNode","aLine","aColumn","aChunks","SourceNode.prototype.add","aChunk","chunk","prepend","SourceNode.prototype.prepend","SourceNode.prototype.walk","aFn","SourceNode.prototype.join","aSep","newChildren","replaceRight","SourceNode.prototype.replaceRight","aPattern","aReplacement","lastChild","SourceNode.prototype.toString","toStringWithSourceMap","SourceNode.prototype.toStringWithSourceMap","char","aDefaultValue","aRoot","aPath","MOZ_SourceMap","global","find_if","DefaultsError","merge","ext","noop","push_uniq","string_template","remove","mergeSort","ai","bi","_ms","set_difference","filter","set_intersection","makePredicate","words","compareTo","arr","cats","cat","Dictionary","_values","_size","DEFNODE","methods","self_props","proto","AST_Node","PROPS","initialize","BASE","SUBCLASSES","CTOR","SELF_PROPS","TYPE","DEFMETHOD","ctor.DEFMETHOD","method","walk_body","visitor","AST_Statement","_walk","TreeWalker","non_spacing_mark","space_combining_mark","filename","AST_Token","x","exp","as_symbol","AST_Label","AST_LabeledStatement","AST_SimpleStatement","AST_LabelRef","AST_Var","definitions","AST_For","AST_ForIn","AST_If","switch_body_","AST_Case","AST_Default","AST_SymbolCatch","AST_Catch","AST_Finally","AST_Try","in_const","AST_VarDef","AST_SymbolConst","AST_SymbolVar","as_atom_node","AST_SymbolRef","AST_Number","AST_String","AST_RegExp","AST_False","AST_True","AST_Null","AST_Undefined","noerror","sym","AST_This","AST_Directive","AST_BlockStatement","AST_EmptyStatement","AST_Break","AST_Continue","AST_Debugger","AST_Do","AST_While","AST_Return","AST_Switch","AST_Throw","AST_With","AST_SymbolDefun","AST_Accessor","AST_SymbolAccessor","AST_SymbolLambda","AST_Defun","AST_Function","AST_SymbolFunarg","AST_Const","AST_New","AST_Array","AST_ObjectGetter","AST_ObjectSetter","AST_ObjectKeyVal","AST_Object","AST_Dot","AST_Sub","AST_Call","AST_UnaryPrefix","AST_UnaryPostfix","AST_Binary","AST_Conditional","AST_Assign","AST_Seq","AST_Toplevel","TreeTransformer","before","after","SymbolDef","orig","mangled_name","undeclared","constant","OutputStream","make_indent","back","maybe_newline","max_line_len","current_col","might_need_semicolon","semicolons","requireSemicolonChars","OUTPUT","current_pos","current_line","might_need_space","force_semicolon","next_indent","with_block","with_parens","with_square","comma","colon","add_mapping","half","save_indentation","source_map","current_width","should_break","width","print_name","print_string","option","opt","push_node","pop_node","Compressor","false_by_default","SourceMap","gen_line","gen_col","orig_line","orig_col","orig_map","generator","root","UglifyJS","backwards","is_last","Last","MAP.last","del","clone","_visit","warn_function","AST_Node.warn","txt","AST_Block","AST_StatementWithBody","AST_DWLoop","AST_Scope","wrap_commonjs","export_all","to_export","wrapped_tl","figure_out_scope","AST_SymbolDeclaration","definition","transform","getValue","AST_Lambda","argnames","arg","AST_Jump","AST_Exit","AST_LoopControl","alternative","AST_SwitchBranch","argname","AST_Definitions","$cons","y","car","cdr","$from_array","cons","to_array","cell","AST_PropAccess","AST_Unary","AST_ObjectProperty","AST_Symbol","AST_Constant","AST_Atom","AST_NaN","AST_Infinity","AST_Boolean","descend","find_parent","in_boolean_context","loopcontrol_target","undefined","_","tw","in_list","do_list","unmangleable","parent_scope","nesting","save_scope","init_scope_vars","thedef","def_function","def_variable","globals","prev_func","g","find_variable","uses_arguments","variables","functions","enclosed","has_directive","frame","symbol","_default_mangler_options","lname","to_mangle","save_nesting","consider","print_to_string","reset","frequency","chars","base54.consider","base54.sort","base54.get","freq","base54.freq","assign_to_global","unreferenced","func_arguments","nested_defuns","DEFPRINT","nodetype","stream","add_comments","add_source_map","PARENS","assign_and_conditional_paren_rules","output","display_body","is_toplevel","print_bracketed","force_statement","first_in_statement","no_constructor_parens","best","DEFMAP","basic_sourcemap_gen","_comments_dumped","p2","po","pp","so","sp","_do_print_body","nokeyword","_do_print","in_for","avoid_semicolon","warnings","_squeezed","drop_unused","hoist_declarations","optimize","save_warnings","OPT","optimizer","compressor","_optimized","make_node","make_node_from_constant","as_statement_array","thing","is_empty","loop_body","tighten_body","eliminate_spurious_blocks","seen_dirs","CHANGED","handle_if_return","in_lambda","ab","lct","eliminate_dead_code","extract_declarations_from_unreachable_code","sequencesize","push_seq","from_array","sequencesize_2","cons_seq","opera","join_consecutive_vars","target","remove_initializers","if_break_in_loop","drop_it","literals_in_boolean_context","commutativeOperators","ASSIGN_OPS","unary_bool","binary_bool","is_boolean","ev","_eval","basic_negation","has_side_effects","tt","in_use","decl","side_effects","_unused_side_effects","hoist_funs","hoist_vars","dirs","hoisted","vars","vars_found","var_decl","to_assignments","negated","negated_is_best","alt","last_branch","assignments","equivalent_to","lift_sequences","ll","rr","ref","From_Moz_Unary","M","my_start_token","my_end_token","from_moz","moznode","moztype","mytype","propmap","moz_to_me","moz","how","my","MOZ_TO_ME","FROM_MOZ_STACK","computed","from_mozilla_ast","AST_Node.from_mozilla_ast","save_stack","UglifyJS.AST_Node.warn_function","minify","exports.minify","inMap","fromString","compute_char_frequency","mangle_names","inSourceMap","outSourceMap","describe_ast","exports.describe_ast","doitem","documentation","traverse","child","getValidDeps","deps","some","elem","moduleName","moduleCall","depString","moduleDeps","moduleList","needsDefine","astRoot","recurse","callName","findNestedDependencies","insertNeedsDefine","argPropName","parse.recurse","onMatch","hasHas","parseNode","definesRequire","parse.definesRequire","hasDefineAmd","getAnonDeps","parse.getAnonDeps","defFunc","findAnonDefineFactory","getAnonDepsFromNode","parse.getAnonDepsFromNode","funcArgLength","findRequireDepNames","parse.findAnonDefineFactory","arg0","arg1","findConfig","parse.findConfig","jsConfig","foundConfig","requireType","hasRequire","nodeToString","getRequireObjectLiteral","parse.getRequireObjectLiteral","findDependencies","parse.findDependencies","dependencies","findCjsDependencies","parse.findCjsDependencies","hasDefDefine","parse.hasDefDefine","parse.hasDefineAmd","parse.hasRequire","hasDefine","parse.hasDefine","usesAmdOrRequireJs","parse.usesAmdOrRequireJs","uses","usesCommonJs","parse.usesCommonJs","assignsExports","parse.findRequireDepNames","parse.parseNode","cjsDeps","factory","parse.nodeToString","getLicenseComments","parse.getLicenseComments","commentNode","refNode","subNode","existsMap","lineEnd","toTransport","namespace","onFound","foundAnon","lastRange","parenCount","inDefine","scanCount","scanReset","defineRanges","contentInsertion","prev2","next2","next3","next4","next5","needsId","depAction","nameCommaRange","foundId","sourceUrlData","namespaceExists","defineEndRange","defineRange","dep","parenRange","useSourceUrl","Temp","pragma","removeStrict","useStrict","useStrictRegExp","ns","nsRegExp","defineTernaryRegExp","defineJQueryRegExp","defineHasRegExp","defineCheckRegExp","defineTypeFirstCheckRegExp","apiDefRegExp","nsWrapRegExp","onLifecycleName","pluginCollector","foundIndex","startIndex","lineEndIndex","conditionLine","matches","marker","isTrue","endRegExp","endMatches","endMarkerIndex","shouldInclude","startLength","lifecycleHas","collectorMod","lifecyclePragmas","pragmas","hasConfig","kwArgs","hasRegExp","skipPragmas","conditionalRegExp","lastIndex","optimizeAllPluginResources","eDep","amdefineRegExp","closurefromCode","JSSourceFilefromCode","invoke","getFileWriter","Array.prototype.reduce","accumulator","mapRegExp","Class","forName","getMethod","closure","outFileName","keepLines","optimized","baseName","writer","outBaseName","outFileNameMap","jscomp","com","google","javascript","common","externSourceFile","jsSourceFile","FLAG_compilation_level","compiler","Compiler","CompilerOptions","prettyPrint","CompilationLevel","setOptionsForCompilationLevel","generateSourceMaps","ArrayList","LocationMapping","setSourceMapLocationMappings","setSourceMapOutputPath","setLoggingLevel","logging","Level","loggingLevel","success","toSource","appendTo","envOptimize","uglify2","cleanCssUrlQuotes","url","flattenCss","cssImportIgnore","included","endIndex","lastIndexOf","importList","skippedList","cssCommentImportRegExp","cssImportRegExp","fullMatch","urlStart","importFileName","urlEnd","mediaTypes","fullImportFileName","importContents","importEndIndex","importPath","fixedUrlMatch","colonIndex","flat","cssUrlRegExp","urlMatch","jsFile","js","optFunc","optConfig","optimizerName","licenseContents","optimizers","preserveLicenseComments","cssFile","originalFileContents","buildText","optimizeCss","css","shouldRemove","removeCombined","fileList","processor","errMessage","errMatch","no_mangle","uconfig","commonJs","allowRun","normalizeUrlWithBase","jsExtRegExp","dirBaseUrl","layer","pluginBuilderRegExp","oldNewContext","newContext","oldDef","_cacheReset","require._cacheReset","_cachedRawText","_cachedFileContents","_cachedDefinesRequireUrls","_isSupportedBuildUrl","require._isSupportedBuildUrl","ignoredUrls","require.s.newContext","oldEnable","enable","moduleProto","Module","oldInit","oldCallPlugin","callPlugin","context.nextTick","needFullExec","fullExec","plugins","buildShimExports","makeShimExports","context.makeShimExports","context.enable","depMap","parentId","registry","defined","context.load","pluginBuilderMatch","builderName","shim","shimExports","urlFetched","buildPathMap","buildFileToModule","existingRequireUrl","_cacheReadAsync","cjsTranslate","convert","onBuildRead","e1","makeModuleMap","nameToUrl","completeLoad","moduleTree","eOuter","execCb","context.execCb","cb","modulesWithNames","__requireJsBuild","moduleProto.init","depMaps","isDefine","parentMap","moduleProto.callPlugin","pluginMap","pluginId","pluginMod","contexts","_buildReset","require._buildReset","oldContext","_layer","_readFile","_fileExists","require._fileExists","onResourceLoad","require.onResourceLoad","pathAdded","buildFilePaths","require.needsDefine","convertDir","commonJsPath","savePath","convertedFileName","useLog","preamble","commonJsProps","addSemiColon","endsWithSemiColonRegExp","endsWithSlash","dirName","makeWriteFile","writeFile","asModule","writeFile.asModule","build","stringDotToObj","mixConfig","flattenWrapFile","wrap","keyName","absFilePath","keyFileName","makeAbsPath","buildBaseConfig","requirePatch","prim.nextTick","require._cacheReadAsync","dirExclusionRegExp","buildFile","cmdConfig","errorMsg","errorStack","stackMatch","errorTree","errorMod","stackRegExp","standardIndent","convertArrayToObject","_run","build._run","buildPaths","paths","baseConfig","modules","srcPath","buildContext","destPath","moduleMap","parentModuleMap","resources","resource","plugin","pluginProcessed","buildFileContents","createConfig","keepBuildDir","cssIn","appDir","baseUrl","packagePaths","packages","_sourcePath","_buildPath","actions","_buildPathToModuleIndex","traceDependencies","excludeLayers","findBuildModule","excludeModule","excludeLayer","removeModulePath","excludeShallow","excludeShallowModule","flattenModule","builtModule","_buildText","finalPath","cfg","moduleIndex","skipDirOptimize","normalizeDirDefines","createOverrideConfig","toUrl","objProps","hasDotPropMatch","build.hasDotPropMatch","dotProp","build.convertArrayToObject","separatorIndex","needArray","build.makeAbsPath","makeAbsObject","build.makeAbsObject","makeAbsConfig","build.makeAbsConfig","originalBaseUrl","nestedMix","build.createConfig","buildFileConfig","mainConfig","mainConfigFile","mainConfigPath","configError","main","insertRequire","stubModules","_byName","wrapError","fileExclusionRegExp","jQuery","enforceDefine","urlArgs","build.findBuildModule","build.removeModulePath","build.traceDependencies","idParts","errUrl","failedPluginMap","failedPluginIds","errIds","errUrlMap","errUrlConflicts","hasErrUrl","deferred","enabled","build.createOverrideConfig","build.flattenModule","reqIndex","currContents","packageConfig","builder","writeApi","namespaceWithDot","stubModulesByName","onLayerEnds","onLayerEndAdded","pkgs","onLayerEnd","onBuildWrite","writeApi.asModule","skipModuleInsertion","makeJsArrayString","exportsFn","build.makeJsArrayString","build.toTransport","setBaseUrl","createRjsApi","requirejs.optimize","loadedOptimizedLib","runBuild","done","SILENT","tools","useLib","contextName","useLibLoaded","vm","rhinoContext","nodeRequire","nodeDefine","reqMain","existsForNode","commandOption","org","mozilla","ContextFactory","getGlobal","enterContext","evaluateString","existsSync","runInThisContext","requirejsVars","makeNodeWrapper","eachReverse","force","deepStringMixin","scripts","getElementsByTagName","makeError","requireModules","originalError","trimDots","applyMap","pkgName","pkgConfig","mapValue","nameParts","nameSegment","foundMap","foundI","foundStarMap","starI","baseParts","normalizedBaseParts","starMap","removeScript","isBrowser","scriptNode","getAttribute","parentNode","removeChild","hasPathFallback","pathConfig","splitPrefix","isNormalized","pluginModule","suffix","parentName","originalName","normalizedName","requireCounter","unnormalizedCounter","getModule","on","defineEmitComplete","onError","ids","notified","events","emit","takeGlobalQueue","globalDefQueue","apsp","defQueue","cleanRegistry","breakCycle","traced","processed","depId","depMatched","defineDep","checkLoaded","modId","usingPathFallback","waitInterval","waitSeconds","expired","startTime","Date","noLoads","reqCalls","stillLoading","needCycleCheck","inCheckLoaded","inited","fetched","isWebWorker","checkLoadedTimeoutId","callGetModule","removeListener","ieName","detachEvent","isOpera","removeEventListener","getScriptData","evt","currentTarget","srcElement","onScriptLoad","onScriptError","intakeDefines","undefEvents","makeRequire","usingExports","depExports","pluginMaps","depCount","ignore","fetch","enabling","cjsModule","defining","requireMap","defineEmitted","normalizedMap","normalizedMod","localRequire","unnormalized","fromText","textAlt","hasInteractive","useInteractive","skipMap","cbs","configure","objs","pkgObj","location","currDirRegExp","jsSuffixRegExp","relMap","requireMod","enableBuildCallback","moduleNamePlusExt","specified","localRequire.undef","shExports","pkg","pkgPath","syms","parentModule","parentPath","readyRegExp","interactiveScript","data","getInteractiveScript","script","head","baseElement","dataMain","src","currentlyAddingScript","mainScript","subPath","commentRegExp","cjsRequireRegExp","ap","aps","window","defContextName","optional","req.config","req.onError","req.load","xhtml","createElementNS","createElement","scriptType","charset","async","setAttribute","attachEvent","addEventListener","insertBefore","appendChild","req.exec","require.load","syncTick","nodeReq","req.get","relModuleMap","oldTick","req.nextTick","req.makeNodeWrapper","href","outDir"] -}