whole_func_string: function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
    this.$$html5 = true;
    basePrefix = basePrefix || '';
    parseAbsoluteUrl(appBase, this);
  
  
    /**
     * Parse given HTML5 (regular) URL string into properties
     * @param {string} url HTML5 URL
     * @private
     */
    this.$$parse = function(url) {
      var pathUrl = stripBaseUrl(appBaseNoFile, url);
      if (!isString(pathUrl)) {
        throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url,
            appBaseNoFile);
      }
  
      parseAppUrl(pathUrl, this, true);
  
      if (!this.$$path) {
        this.$$path = '/';
      }
  
      this.$$compose();
    };
  
    this.$$normalizeUrl = function(url) {
      return appBaseNoFile + url.substr(1); // first char is always '/'
    };
  
    this.$$parseLinkUrl = function(url, relHref) {
      if (relHref && relHref[0] === '#') {
        // special case for links to hash fragments:
        // keep the old url and only replace the hash fragment
        this.hash(relHref.slice(1));
        return true;
      }
      var appUrl, prevAppUrl;
      var rewrittenUrl;
  
  
      if (isDefined(appUrl = stripBaseUrl(appBase, url))) {
        prevAppUrl = appUrl;
        if (basePrefix && isDefined(appUrl = stripBaseUrl(basePrefix, appUrl))) {
          rewrittenUrl = appBaseNoFile + (stripBaseUrl('/', appUrl) || appUrl);
        } else {
          rewrittenUrl = appBase + prevAppUrl;
        }
      } else if (isDefined(appUrl = stripBaseUrl(appBaseNoFile, url))) {
        rewrittenUrl = appBaseNoFile + appUrl;
      } else if (appBaseNoFile === url + '/') {
        rewrittenUrl = appBaseNoFile;
      }
      if (rewrittenUrl) {
        this.$$parse(rewrittenUrl);
      }
      return !!rewrittenUrl;
    };
  }
func_code_string: function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) {
    this.$$html5 = true;
    basePrefix = basePrefix || '';
    parseAbsoluteUrl(appBase, this);
  
  
    /**
     * Parse given HTML5 (regular) URL string into properties
     * @param {string} url HTML5 URL
     * @private
     */
    this.$$parse = function(url) {
      var pathUrl = stripBaseUrl(appBaseNoFile, url);
      if (!isString(pathUrl)) {
        throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url,
            appBaseNoFile);
      }
  
      parseAppUrl(pathUrl, this, true);
  
      if (!this.$$path) {
        this.$$path = '/';
      }
  
      this.$$compose();
    };
  
    this.$$normalizeUrl = function(url) {
      return appBaseNoFile + url.substr(1); // first char is always '/'
    };
  
    this.$$parseLinkUrl = function(url, relHref) {
      if (relHref && relHref[0] === '#') {
        // special case for links to hash fragments:
        // keep the old url and only replace the hash fragment
        this.hash(relHref.slice(1));
        return true;
      }
      var appUrl, prevAppUrl;
      var rewrittenUrl;
  
  
      if (isDefined(appUrl = stripBaseUrl(appBase, url))) {
        prevAppUrl = appUrl;
        if (basePrefix && isDefined(appUrl = stripBaseUrl(basePrefix, appUrl))) {
          rewrittenUrl = appBaseNoFile + (stripBaseUrl('/', appUrl) || appUrl);
        } else {
          rewrittenUrl = appBase + prevAppUrl;
        }
      } else if (isDefined(appUrl = stripBaseUrl(appBaseNoFile, url))) {
        rewrittenUrl = appBaseNoFile + appUrl;
      } else if (appBaseNoFile === url + '/') {
        rewrittenUrl = appBaseNoFile;
      }
      if (rewrittenUrl) {
        this.$$parse(rewrittenUrl);
      }
      return !!rewrittenUrl;
    };
  }
func_documentation_string: LocationHtml5Url represents a URL
  This object is exposed as $location service when HTML5 mode is enabled and supported
  
  @constructor
  @param {string} appBase application base URL
  @param {string} appBaseNoFile application base URL stripped of any filename
  @param {string} basePrefix URL path prefix