code: function decodeURIComponentSafe(uri, mod) {
      var decodedURI = '';
      var i = 0;
      var length, arr, tempDecodedURI;
  
      mod = !!(mod);
      arr = uri.split(/(%(?:d0|d1)%.{2})/);
  
      for (length = arr.length; i < length; i += 1) {
          try {
              tempDecodedURI = decodeURIComponent(arr[i]);
          } catch (e) {
              tempDecodedURI = mod ? arr[i].replace(/%(?!\d+)/g, '%25') : arr[i];
          }
  
          decodedURI += tempDecodedURI;
      }
  
      return decodedURI;
  }
docs: Decode URI
  @param {string} uri - URI
  @param {boolean} mod - Whether maintaining "%25" or not
  @returns {string} Decoded URI
  @ignore