See ECMA 15.4.4.4
4786
private static Scriptable js_reverse(Context cx, Scriptable thisObj, Object[] args)
    {
        if (thisObj instanceof NativeArray) {
            NativeArray na = (NativeArray) thisObj;
            if (na.denseOnly) {
                for (int i=0, j=((int)na.length)-1; i < j; i++,j--) {
                    Object temp = na.dense[i];
                    na.dense[i] = na.dense[j];
                    na.dense[j] = temp;
                }
                return thisObj;
            }
        }
        long len = getLengthProperty(cx, thisObj, false);

        long half = len / 2;
        for(long i=0; i < half; i++) {
            long j = len - i - 1;
            Object temp1 = getRawElem(thisObj, i);
            Object temp2 = getRawElem(thisObj, j);
            setRawElem(cx, thisObj, i, temp2);
            setRawElem(cx, thisObj, j, temp1);
        }
        return thisObj;
    }
134252
function(terria) {
  ImageryLayerCatalogItem.call(this, terria);

  this._rawMetadata = undefined;
  this._thisLayerInRawMetadata = undefined;
  this._allLayersInRawMetadata = undefined;

  this._metadata = undefined;
  this._getCapabilitiesUrl = undefined;

  this._rectangle = undefined;
  this._rectangleFromMetadata = undefined;
  this._intervalsFromMetadata = undefined;

  this._lastToken = undefined;
  this._newTokenRequestInFlight = undefined;

  /**
   * Gets or sets the WMS layers to include.  To specify multiple layers, separate them
   * with a commas.  This property is observable.
   * @type {String}
   */
  this.layers = "";

  /**
   * Gets or sets the URL of a WCS that enables clip-and-ship for this WMS item. This
   * proerty is part of an experimental feature and may be subject to change.
   * @type {String}
   */
  this.linkedWcsUrl = undefined;

  /**
   * Gets or sets the coverage name for linked WCS for clip-and-ship. This proerty is part
   * of an experimental feature and may be subject to change.
   * @type {String}
   */
  this.linkedWcsCoverage = "";

  /**
   * Gets or sets the comma-separated list of styles to request, one per layer list in {@link WebMapServiceCatalogItem#layers}.
   * This property is observable.
   * @type {String}
   */
  this.styles = "";

  /**
   * Gets or sets the additional parameters to pass to the WMS server when requesting images.
   * All parameter names must be entered in lowercase in order to be consistent with references in TerrisJS code.
   * If this property is undefined, {@link WebMapServiceCatalogItem.defaultParameters} is used.
   * @type {Object}
   */
  this.parameters = {};

  /**
   * Gets or sets the tiling scheme to pass to the WMS server when requesting images.
   * If this property is undefiend, the default tiling scheme of the provider is used.
   * @type {Object}
   */
  this.tilingScheme = undefined;

  /**
   * Gets or sets the formats in which to try WMS GetFeatureInfo requests.  If this property is undefined, the `WebMapServiceImageryProvider` defaults
   * are used.  This property is observable.
   * @type {GetFeatureInfoFormat[]}
   */
  this.getFeatureInfoFormats = undefined;

  /**
   * Gets or sets a value indicating whether a time dimension, if it exists in GetCapabilities, should be used to populate
   * the {@link ImageryLayerCatalogItem#intervals}.  If the {@link ImageryLayerCatalogItem#intervals} property is set explicitly
   * on this catalog item, the value of this property is ignored.
   * @type {Boolean}
   * @default true
   */
  this.populateIntervalsFromTimeDimension = true;

  /**
   * Gets or sets the denominator of the largest scale (smallest denominator) for which tiles should be requested.  For example, if this value is 1000, then tiles representing
   * a scale larger than 1:1000 (i.e. numerically smaller denominator, when zooming in closer) will not be requested.  Instead, tiles of the largest-available scale, as specified by this property,
   * will be used and will simply get blurier as the user zooms in closer.
   * @type {Number}
   */
  this.minScaleDenominator = undefined;

  /**
   * Gets or sets a value indicating whether to continue showing tiles or hide tiles when the {@link WebMapServiceCatalogItem#minScaleDenominator}
   * is exceeded. This property is observable.
   * @type {Boolean}
   * @default true
   */
  this.hideLayerAfterMinScaleDenominator = false;

  /**
   * Gets or sets the maximum number of intervals that can be created by a single
   * date range, when specified in the form time/time/periodicity.
   * eg. 2015-04-27T16:15:00/2015-04-27T18:45:00/PT15M has 11 intervals
   * @type {Number}
   */
  this.maxRefreshIntervals = 1000;

  /**
   * Gets or sets whether this WMS has been identified as being provided by a GeoServer.
   * @type {Boolean}
   */
  this.isGeoServer = undefined;

  /**
   * Gets or sets whether this WMS has been identified as being provided by an Esri ArcGIS MapServer. No assumption is made about where an ArcGIS MapServer endpoint also exists.
   * @type {Boolean}
   */
  this.isEsri = undefined;

  /**
   * Gets or sets whether this WMS has been identified as being provided by ncWMS.
   * @type {Boolean}
   */
  this.isNcWMS = undefined;

  /**
   * Gets or sets whether this WMS server has been identified as supporting the COLORSCALERANGE parameter.
   * @type {Boolean}
   */
  this.supportsColorScaleRange = undefined;

  /**
   * Gets or sets how many seconds time-series data with a start date but no end date should last, in seconds.
   * @type {Number}
   */
  this.displayDuration = undefined;

  /**
   * Gets or sets a value indicating whether the user's ability to change the display properties of this
   * catalog item is disabled.  For example, if true, {@link WebMapServiceCatalogItem#styles} should not be
   * changeable through the user interface.
   * This property is observable.
   * @type {Boolean}
   * @default false
   */
  this.disableUserChanges = false;

  /**
   * Gets or sets the available styles for each selected layer in {@link WebMapServiceCatalogItem#layers}.  If undefined,
   * this property is automatically populated from the WMS GetCapabilities on load.  This property is an object that has a
   * property named for each layer.  The value of the property is an array where each element in the array is a style supported
   * by the layer.  The style has `name`, `title`, `abstract`, and `legendUrl` properties.
   * This property is observable.
   * @type {Object}
   * @example
   * wmsItem.availableStyles = {
   *     'FVCOM-NECOFS-GOM3/x': [
   *         {
   *              name: 'default-scalar/default',
   *              title: 'default-scalar/default',
   *              abstract: 'default-scalar style, using the default palette.',
   *              legendUrl: new LegendUrl('http://www.smast.umassd.edu:8080/ncWMS2/wms?REQUEST=GetLegendGraphic&PALETTE=default&COLORBARONLY=true&WIDTH=110&HEIGHT=264', 'image/png')
   *         }
   *     ]
   * };
   */
  this.availableStyles = undefined;

  /**
   * Gets or sets the minumum of the color scale range.  Because COLORSCALERANGE is a non-standard
   * property supported by ncWMS servers, this property is ignored unless {@link WebMapServiceCatalogItem#supportsColorScaleRange}
   * is true.  {@link WebMapServiceCatalogItem#colorScaleMaximum} must be set as well.
   * @type {Number}
   */
  this.colorScaleMinimum = undefined;

  /**
   * Gets or sets the maximum of the color scale range.  Because COLORSCALERANGE is a non-standard
   * property supported by ncWMS servers, this property is ignored unless {@link WebMapServiceCatalogItem#supportsColorScaleRange}
   * is true.  {@link WebMapServiceCatalogItem#colorScaleMinimum} must be set as well.
   * @type {Number}
   */
  this.colorScaleMaximum = undefined;

  /**
   * Gets or sets the list of additional dimensions (e.g. elevation) and their possible values available from the
   * WMS server.  If undefined, this property is automatically populated from the WMS GetCapabilities on load.
   * This property is an object that has a property named for each layer.  The value of the property is an array
   * of dimensions available for this layer.  A dimension has the fields shown in the example below.  See the
   * WMS 1.3.0 specification, section C.2, for a description of the fields.  All fields are optional except
   * `name` and `options`.  This property is observable.
   * @type {Object}
   * @example
   * wmsItem.availableDimensions = {
   *     mylayer: [
   *         {
   *             name: 'elevation',
   *             units: 'CRS:88',
   *             unitSymbol: 'm',
   *             default: -0.03125,
   *             multipleValues: false,
   *             nearestValue: false,
   *             options: [
   *                 -0.96875,
   *                 -0.90625,
   *                 -0.84375,
   *                 -0.78125,
   *                 -0.71875,
   *                 -0.65625,
   *                 -0.59375,
   *                 -0.53125,
   *                 -0.46875,
   *                 -0.40625,
   *                 -0.34375,
   *                 -0.28125,
   *                 -0.21875,
   *                 -0.15625,
   *                 -0.09375,
   *                 -0.03125
   *             ]
   *         }
   *     ]
   * };
   */
  this.availableDimensions = undefined;

  /**
   * Gets or sets the selected values for dimensions available for this WMS layer.  The value of this property is
   * an object where each key is the name of a dimension and each value is the value to use for that dimension.
   * Note that WMS does not allow dimensions to be explicitly specified per layer.  So the selected dimension values are
   * applied to all layers with a corresponding dimension.
   * This property is observable.
   * @type {Object}
   * @example
   * wmsItem.dimensions = {
   *     elevation: -0.65625
   * };
   */
  this.dimensions = undefined;

  /**
   * Gets or sets the URL to use for requesting tokens. Typically, this is set to `/esri-token-auth` to use
   * the ArcGIS token mechanism built into terriajs-server.
   * @type {String}
   */
  this.tokenUrl = undefined;

  /**
   * Gets or sets the name of the URL query parameter used to provide the token
   * to the server. This property is ignored if {@link WebMapServiceCatalogItem#tokenUrl} is undefined.
   * @type {String}
   * @default 'token'
   */
  this.tokenParameterName = "token";

  /**
   * Gets or sets the set of HTTP status codes that indicate that a token is invalid.
   * This property is ignored if {@link WebMapServiceCatalogItem#tokenUrl} is undefined.
   * @type {Number[]}
   * @default [401, 498, 499]
   */
  this.tokenInvalidHttpCodes = [401, 498, 499];

  this._sourceInfoItemNames = ["GetCapabilities URL"];

  knockout.track(this, [
    "_getCapabilitiesUrl",
    "_rectangle",
    "_rectangleFromMetadata",
    "_intervalsFromMetadata",
    "layers",
    "styles",
    "parameters",
    "getFeatureInfoFormats",
    "tilingScheme",
    "populateIntervalsFromTimeDimension",
    "minScaleDenominator",
    "disableUserChanges",
    "availableStyles",
    "colorScaleMinimum",
    "colorScaleMaximum",
    "availableDimensions",
    "dimensions",
    "tokenUrl",
    "tokenParameterName",
    "tokenInvalidHttpCodes",
    "_lastToken",
    "_thisLayerInRawMetadata",
    "_allLayersInRawMetadata"
  ]);

  // getCapabilitiesUrl and legendUrl are derived from url if not explicitly specified.
  overrideProperty(this, "getCapabilitiesUrl", {
    get: function() {
      if (defined(this._getCapabilitiesUrl)) {
        return this._getCapabilitiesUrl;
      }

      if (defined(this.metadataUrl)) {
        return this.metadataUrl;
      }

      if (!defined(this.url)) {
        return undefined;
      }

      return (
        cleanUrl(this.url) +
        "?service=WMS&version=1.3.0&request=GetCapabilities"
      );
    },
    set: function(value) {
      this._getCapabilitiesUrl = value;
    }
  });

  var legendUrlsBase = Object.getOwnPropertyDescriptor(this, "legendUrls");

  overrideProperty(this, "legendUrls", {
    get: function() {
      if (defined(this._legendUrls)) {
        return this._legendUrls;
      } else if (defined(this._legendUrl)) {
        return [this._legendUrl];
      } else {
        return computeLegendUrls(this);
      }
    },
    set: function(value) {
      legendUrlsBase.set.call(this, value);
    }
  });

  // The dataUrl must be explicitly specified.  Don't try to use `url` as the the dataUrl, because it won't work for a WMS URL.
  overrideProperty(this, "dataUrl", {
    get: function() {
      return this._dataUrl;
    },
    set: function(value) {
      this._dataUrl = value;
    }
  });

  overrideProperty(this, "dataUrlType", {
    get: function() {
      return this._dataUrlType;
    },
    set: function(value) {
      this._dataUrlType = value;
    }
  });
}
663691
function(moduleName, moduleClosure) {
        var wm = this; // GLOBAL.WebModule

        // https://github.com/uupaa/WebModule/wiki/SwitchModulePattern
        var alias = wm[moduleName] ? (moduleName + "_") : moduleName;

        if (!wm[alias]) { // secondary module already exported -> skip
            wm[alias] = moduleClosure(GLOBAL); // evaluate the module entity
            wm.closure[alias] = moduleClosure + ""; // stock

            if (wm.publish && !GLOBAL[alias]) {
                GLOBAL[alias] = wm[alias]; // publish to global
            }
        }
        return wm[alias];
    }
1055458
function (tooltipModel, ecModel, api, payload) {
        var seriesIndex = payload.seriesIndex;
        var dataIndex = payload.dataIndex;
        var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;

        if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {
            return;
        }

        var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
        if (!seriesModel) {
            return;
        }

        var data = seriesModel.getData();
        var tooltipModel = buildTooltipModel([
            data.getItemModel(dataIndex),
            seriesModel,
            (seriesModel.coordinateSystem || {}).model,
            tooltipModel
        ]);

        if (tooltipModel.get('trigger') !== 'axis') {
            return;
        }

        api.dispatchAction({
            type: 'updateAxisPointer',
            seriesIndex: seriesIndex,
            dataIndex: dataIndex,
            position: payload.position
        });

        return true;
    }
758260
function (less, pluginManager) {
        var version = less.version;

        var options = this.options;

        // won't work before 2.4.0
        if (options.autoImport && (version[0] > 2 || version[1] >= 4)) {
            require('./injector').install(less, pluginManager);
        }

        if (options.uniqueDirectives) {
            require('./unique-directives').install(less, pluginManager);
        }

        // needed before 2.3.0
        if (version[1] < 3) {
            require('./custom-functions').install(less, pluginManager);
        }
    }
628811
function _1CMethodDescription(parentModule) {

    // Идентификатор (имя) метода.
    this.Name = "";

    // Тип метода. Если истина - то это Процедура, иначе - это функция.
    this.IsProc = false;

    // Массив параметров метода.
    this.Params = new Array();

    // Массив явным образом объявленных переменных.
    this.DeclaredVars = new Array();

    // Массив автоматических локальных переменных (не объявленных явным образом).
    this.AutomaticVars = new Array();

    // Список вызовов: массив методов, вызываемых из данного метода.
    this.Calls = new Array();
    this._CallsUpper = new Array();
    this.CallsPosition = new Array();

    // Номер строки объявления метода.
    this.StartLine = 0;

    // Номер строки завершения объявления метода.
    this.EndLine = 0;

    // Ассоциативный массив Имя переменной -> Тип переменной (пока тип всегда null).
    this._varsTypes = {};

    // Контекст модуля, в котором объявлен данный метод (_1CModuleContextDescription).
    this.parentModule = parentModule;
    
    // Экспортная процедура или нет. 
    this.IsExport = false;
    
    this.description = "";
    
}
579797
function parseLexicalBinding(kind, options) {
        var init = null, id, node = new Node(), params = [];

        id = parsePattern(params, kind);

        // ECMA-262 12.2.1
        if (strict && id.type === Syntax.Identifier && isRestrictedWord(id.name)) {
            tolerateError(Messages.StrictVarName);
        }

        if (kind === 'const') {
            if (!matchKeyword('in') && !matchContextualKeyword('of')) {
                expect('=');
                init = isolateCoverGrammar(parseAssignmentExpression);
            }
        } else if ((!options.inFor && id.type !== Syntax.Identifier) || match('=')) {
            expect('=');
            init = isolateCoverGrammar(parseAssignmentExpression);
        }

        return node.finishVariableDeclarator(id, init);
    }
1252069
function ClientModelDocDetailController($state, clientModelDoc) {
    var vm = this;

    // the current clientModelDoc to display
    vm.clientModelDoc = clientModelDoc;
    // switch to the edit state
    vm.edit = edit;
    // switch to the parent state
    vm.goBack = goBack

    /**
     * Open the edit state with the current clientModelDoc
     *
     */
    function edit() {
      $state.go('^.edit', {'id': vm.clientModelDoc._id});
    }

    /**
     * Return to the parent state
     *
     */
    function goBack() {
      $state.go('^');
    }
  }
564710
function (parallelModel, ecModel, api) {

        var dimensions = parallelModel.dimensions;
        var parallelAxisIndex = parallelModel.parallelAxisIndex;

        each(dimensions, function (dim, idx) {

            var axisIndex = parallelAxisIndex[idx];
            var axisModel = ecModel.getComponent('parallelAxis', axisIndex);

            var axis = this._axesMap.set(dim, new ParallelAxis(
                dim,
                axisHelper.createScaleByModel(axisModel),
                [0, 0],
                axisModel.get('type'),
                axisIndex
            ));

            var isCategory = axis.type === 'category';
            axis.onBand = isCategory && axisModel.get('boundaryGap');
            axis.inverse = axisModel.get('inverse');

            // Injection
            axisModel.axis = axis;
            axis.model = axisModel;
            axis.coordinateSystem = axisModel.coordinateSystem = this;

        }, this);
    }
681254
function compileWASM (config) {

  // check that emscripten path is correct
  if (!fs.existsSync(config.emscripten_path)) {
    return process.stdout.write(colors.red(`Error: Could not find emscripten directory at ${config.emscripten_path}\n`));
  }

  const shellScript = getShellScript(config);
  
  // format exported functions, if present, from config for shell script
  let expFuncStr = '';
  if (config.exported_functions && config.exported_functions.length > 0) {
    let expFuncs = config.exported_functions.reduce((acc, val) => acc.concat('\'', val, '\'\,'), '[');
    expFuncs = expFuncs.substring(0, expFuncs.length - 1).concat(']');
    expFuncStr = `-s EXPORTED_FUNCTIONS="${expFuncs}" `;
  }

  // format flags from config for shell script
  const flags = config.flags.reduce((acc, val) => acc.concat(' ', val), '');
  // construct the default compile mode string.
  let commandStr = `emcc -o ${config.outputfile} ${config.inputfile} ${expFuncStr} ${flags}`;
  // generate a command string suitable for cmake
  if(config.mode == "build") {
    // assuming make
    config.generator = config.generator ? config.generator : 'make';
    switch(config.generator) {
      case 'ninja':
        config.gen_flag = 'Ninja';
      default:
        config.gen_flag = '"Unix Makefiles"';
        break;
    }
    // need to triple escape double quotes
    expFuncStr = expFuncStr.replace(/"/g, '\\\"');
    let modFlags = flags.replace(/"/g, '\\\"');
    let cxxFlagStr = `SET(WASM_CXXFLAGS "${modFlags} ${expFuncStr}" CACHE PATH "")`;
    // pass through cmake configuration, inc. compiler flags, exported functions
    commandStr = `cd wasm && emcmake cmake -G ${config.gen_flag} `+
      `-DWASM_CXXFLAGS=\"${modFlags} ${expFuncStr}\" ` +
      `.. && emmake ${config.generator} -j${cpuCount-1}`;
  }
  process.stdout.write(colors.cyan('Running emscripten...\n'));
  // execute shell script
  // exec(shellScript, (error, stdout, stderr) => {

  exec(`
  if [[ :$PATH: != *:"/emsdk":* ]]
  then
    # use path to emsdk folder, relative to project directory
    BASEDIR="${config.emscripten_path}"
    EMSDK_ENV=$(find "$BASEDIR" -type f -name "emsdk_env.sh")
    source "$EMSDK_ENV"
  fi

  ${commandStr}
  `, { shell: '/bin/bash' }, (error, stdout, stderr) => {
    // check for emcc compile errors
    if (stderr) {
      process.stderr.write(colors.red.bold('EMSCRIPTEN COMPILE ERROR\n'));
      process.stderr.write(colors.white(stderr));
    } else {
      process.stdout.write(stdout);
      insertEventListener(config);
      process.stdout.write(colors.green.bold('Compiled C++ to WASM\n'));
    }
  });
}
491768
function getEnums(spec_c, bygroup, parent) {
  var spec_js = {};
  var enumGroups = _.find(getChildren(spec_c, 'sectiondef'), function(section) {
    var kind = getAttr(section, 'kind');
    return ((kind == 'enum') || (kind == 'public-type'));
  });
  if (enumGroups) {
    _.each(enumGroups.children, function(enumGroup) {
      var enumGroupName = getText(getChild(enumGroup, 'name'), 'name');
      var enumGroupDescription = getText(getChild(enumGroup, 'detaileddescription'), 'description');
      var enumGroupVals = getChildren(enumGroup, 'enumvalue');
      if (bygroup) {
        spec_js[enumGroupName] = {
          description: enumGroupDescription,
          members: []
        };
      }
      _.each(enumGroupVals, function(e) {
        // TODO: get prefix as option
        var enumName = getText(getChild(e, 'name'), 'name').replace(/^MRAA_/, '');
        var enumDescription = getText(getChild(e, 'detaileddescription'), 'description');
        if (!bygroup) {
          spec_js[enumName] = {
            type: enumGroupName,
            description: enumDescription
          };
        } else {
          spec_js[enumGroupName].members.push(enumName);
        }
      });
    });
  }
  return spec_js;
}
1053833
def LookupCirrusAmi(ec2, instance_type, ubuntu_release_name, mapr_version, role,
                    ami_release_name,
                    ami_owner_id):  
  
  if not role in valid_instance_roles:
    raise RuntimeError('Specified role (%s) not a valid role: %s' % (role, 
                       valid_instance_roles))
  virtualization_type = 'paravirtual'
  if IsHPCInstanceType(instance_type):
    virtualization_type = 'hvm'
  assert(ami_owner_id)  
  images = ec2.get_all_images(owners=[ami_owner_id])
  ami = None
  ami_name = AmiName(ami_release_name, ubuntu_release_name, virtualization_type,
                     mapr_version, role)
  for image in images:
    if image.name == ami_name:
        ami = image
        break
  return ami
434961
function create(ecModel, api) {
    var singles = [];

    ecModel.eachComponent('singleAxis', function (axisModel, idx) {

        var single = new Single(axisModel, ecModel, api);
        single.name = 'single_' + idx;
        single.resize(axisModel, api);
        axisModel.coordinateSystem = single;
        singles.push(single);

    });

    ecModel.eachSeries(function (seriesModel) {
        if (seriesModel.get('coordinateSystem') === 'singleAxis') {
            var singleAxisModel = ecModel.queryComponents({
                mainType: 'singleAxis',
                index: seriesModel.get('singleAxisIndex'),
                id: seriesModel.get('singleAxisId')
            })[0];
            seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;
        }
    });

    return singles;
}
596823
function validateConfigSchema(config, source = null) {
    validateSchema = validateSchema || ajv.compile(configSchema);

    if (!validateSchema(config)) {
        throw new Error(`ESLint configuration in ${source} is invalid:\n${formatErrors(validateSchema.errors)}`);
    }

    if (Object.hasOwnProperty.call(config, "ecmaFeatures")) {
        emitDeprecationWarning(source, "ESLINT_LEGACY_ECMAFEATURES");
    }
}
625423
function(win, elems) {
				var mode = svgCanvas.getMode();
				var elem = elems[0];

				if (!elem) {
					return;
				}

				multiselected = (elems.length >= 2 && elems[1] != null);
				// Only updating fields for single elements for now
				if (!multiselected) {
					switch (mode) {
						case 'rotate':
							var ang = svgCanvas.getRotationAngle(elem);
							$('#angle').val(ang);
							$('#tool_reorient').toggleClass('disabled', ang === 0);
							break;

						// TODO: Update values that change on move/resize, etc
//						case "select":
//						case "resize":
//							break;
					}
				}
				svgCanvas.runExtensions('elementTransition', {
					elems: elems
				});
			}
1118464
def admeig(classname, f, m_u, m_d, m_s, m_c, m_b, m_e, m_mu, m_tau):
    """"""
    args = f, m_u, m_d, m_s, m_c, m_b, m_e, m_mu, m_tau
    A = getattr(adm, 'adm_s_' + classname)(*args)
    perm_keys = get_permissible_wcs(classname, f)
    if perm_keys != 'all':
        # remove disallowed rows & columns if necessary
        A = A[perm_keys][:, perm_keys]
    w, v = np.linalg.eig(A.T)
    return w, v
857095
function litmus() {
  var awsURL = !!CONFIG && !!CONFIG.aws && !!CONFIG.aws.url ? CONFIG.aws.url : false;

  return gulp.src('dist/**/*.html')
    .pipe($.if(!!awsURL, $.replace(/=('|")(\/?assets\/img)/g, "=$1"+ awsURL)))
    .pipe($.litmus(CONFIG.litmus))
    .pipe(gulp.dest('dist'));
}