/gi, R = /^(?:body|html)$/i, Z = /([A-Z])/g, z = ["val", "css", "html", "text", "data", "width", "height", "offset"], q = A.createElement("table"), H = A.createElement("tr"), I = { tr: A.createElement("tbody"), tbody: q, thead: q, tfoot: q, td: H, th: H, "*": A.createElement("div") }, V = /complete|loaded|interactive/, _ = /^[\w-]*$/, B = {}, U = B.toString, X = {}, J = A.createElement("div"), W = { tabindex: "tabIndex", readonly: "readOnly", for: "htmlFor", class: "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder", contenteditable: "contentEditable" }, Y = Array.isArray || function (t) { return t instanceof Array }; return X.matches = function (t, e) { if (!e || !t || 1 !== t.nodeType) return !1; var n = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.oMatchesSelector || t.matchesSelector; if (n) return n.call(t, e); var r, i = t.parentNode, o = !i; return o && (i = J).appendChild(t), r = ~X.qsa(i, e).indexOf(t), o && J.removeChild(t), r }, w = function (t) { return t.replace(/-+(.)?/g, function (t, e) { return e ? e.toUpperCase() : "" }) }, S = function (t) { return O.call(t, function (e, n) { return t.indexOf(e) == n }) }, X.fragment = function (t, e, n) { var r, i, o; return k.test(t) && (r = j(A.createElement(RegExp.$1))), r || (t.replace && (t = t.replace(M, "<$1>$2>")), e === b && (e = F.test(t) && RegExp.$1), e in I || (e = "*"), (o = I[e]).innerHTML = "" + t, r = j.each(P.call(o.childNodes), function () { o.removeChild(this) })), a(n) && (i = j(r), j.each(n, function (t, e) { z.indexOf(t) > -1 ? i[t](e) : i.attr(t, e) })), r }, X.Z = function (t, e) { return new p(t, e) }, X.isZ = function (t) { return t instanceof X.Z }, X.init = function (t, e) { var r; if (!t) return X.Z(); if ("string" == typeof t) if ("<" == (t = t.trim())[0] && F.test(t)) r = X.fragment(t, RegExp.$1, e), t = null; else { if (e !== b) return j(e).find(t); r = X.qsa(A, t) } else { if (n(t)) return j(A).ready(t); if (X.isZ(t)) return t; if (Y(t)) r = function (t) { return O.call(t, function (t) { return null != t }) }(t); else if (o(t)) r = [t], t = null; else if (F.test(t)) r = X.fragment(t.trim(), RegExp.$1, e), t = null; else { if (e !== b) return j(e).find(t); r = X.qsa(A, t) } } return X.Z(r, t) }, (j = function (t, e) { return X.init(t, e) }).extend = function (t) { var e, n = P.call(arguments, 1); return "boolean" == typeof t && (e = t, t = n.shift()), n.forEach(function (n) { d(t, n, e) }), t }, X.qsa = function (t, e) { var n, r = "#" == e[0], i = !r && "." == e[0], o = r || i ? e.slice(1) : e, a = _.test(o); return t.getElementById && a && r ? (n = t.getElementById(o)) ? [n] : [] : 1 !== t.nodeType && 9 !== t.nodeType && 11 !== t.nodeType ? [] : P.call(a && !r && t.getElementsByClassName ? i ? t.getElementsByClassName(o) : t.getElementsByTagName(e) : t.querySelectorAll(e)) }, j.contains = A.documentElement.contains ? function (t, e) { return t !== e && t.contains(e) } : function (t, e) { for (; e && (e = e.parentNode);)if (e === t) return !0; return !1 }, j.type = e, j.isFunction = n, j.isWindow = r, j.isArray = Y, j.isPlainObject = a, j.isEmptyObject = function (t) { var e; for (e in t) return !1; return !0 }, j.isNumeric = function (t) { var e = Number(t), n = typeof t; return null != t && "boolean" != n && ("string" != n || t.length) && !isNaN(e) && isFinite(e) || !1 }, j.inArray = function (t, e, n) { return C.indexOf.call(e, t, n) }, j.camelCase = w, j.trim = function (t) { return null == t ? "" : String.prototype.trim.call(t) }, j.uuid = 0, j.support = {}, j.expr = {}, j.noop = function () { }, j.map = function (t, e) { var n, r, i, o = []; if (s(t)) for (r = 0; r < t.length; r++)null != (n = e(t[r], r)) && o.push(n); else for (i in t) null != (n = e(t[i], i)) && o.push(n); return u(o) }, j.each = function (t, e) { var n, r; if (s(t)) { for (n = 0; n < t.length; n++)if (!1 === e.call(t[n], n, t[n])) return t } else for (r in t) if (!1 === e.call(t[r], r, t[r])) return t; return t }, j.grep = function (t, e) { return O.call(t, e) }, t.JSON && (j.parseJSON = JSON.parse), j.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (t, e) { B["[object " + e + "]"] = e.toLowerCase() }), j.fn = { constructor: X.Z, length: 0, forEach: C.forEach, reduce: C.reduce, push: C.push, sort: C.sort, splice: C.splice, indexOf: C.indexOf, concat: function () { var t, e, n = []; for (t = 0; t < arguments.length; t++)e = arguments[t], n[t] = X.isZ(e) ? e.toArray() : e; return N.apply(X.isZ(this) ? this.toArray() : this, n) }, map: function (t) { return j(j.map(this, function (e, n) { return t.call(e, n, e) })) }, slice: function () { return j(P.apply(this, arguments)) }, ready: function (t) { return V.test(A.readyState) && A.body ? t(j) : A.addEventListener("DOMContentLoaded", function () { t(j) }, !1), this }, get: function (t) { return t === b ? P.call(this) : this[t >= 0 ? t : t + this.length] }, toArray: function () { return this.get() }, size: function () { return this.length }, remove: function () { return this.each(function () { null != this.parentNode && this.parentNode.removeChild(this) }) }, each: function (t) { return C.every.call(this, function (e, n) { return !1 !== t.call(e, n, e) }), this }, filter: function (t) { return n(t) ? this.not(this.not(t)) : j(O.call(this, function (e) { return X.matches(e, t) })) }, add: function (t, e) { return j(S(this.concat(j(t, e)))) }, is: function (t) { return this.length > 0 && X.matches(this[0], t) }, not: function (t) { var e = []; if (n(t) && t.call !== b) this.each(function (n) { t.call(this, n) || e.push(this) }); else { var r = "string" == typeof t ? this.filter(t) : s(t) && n(t.item) ? P.call(t) : j(t); this.forEach(function (t) { r.indexOf(t) < 0 && e.push(t) }) } return j(e) }, has: function (t) { return this.filter(function () { return o(t) ? j.contains(this, t) : j(this).find(t).size() }) }, eq: function (t) { return -1 === t ? this.slice(t) : this.slice(t, +t + 1) }, first: function () { var t = this[0]; return t && !o(t) ? t : j(t) }, last: function () { var t = this[this.length - 1]; return t && !o(t) ? t : j(t) }, find: function (t) { var e = this; return t ? "object" == typeof t ? j(t).filter(function () { var t = this; return C.some.call(e, function (e) { return j.contains(e, t) }) }) : 1 == this.length ? j(X.qsa(this[0], t)) : this.map(function () { return X.qsa(this, t) }) : j() }, closest: function (t, e) { var n = [], r = "object" == typeof t && j(t); return this.each(function (o, a) { for (; a && !(r ? r.indexOf(a) >= 0 : X.matches(a, t));)a = a !== e && !i(a) && a.parentNode; a && n.indexOf(a) < 0 && n.push(a) }), j(n) }, parents: function (t) { for (var e = [], n = this; n.length > 0;)n = j.map(n, function (t) { return (t = t.parentNode) && !i(t) && e.indexOf(t) < 0 ? (e.push(t), t) : void 0 }); return m(e, t) }, parent: function (t) { return m(S(this.pluck("parentNode")), t) }, children: function (t) { return m(this.map(function () { return h(this) }), t) }, contents: function () { return this.map(function () { return this.contentDocument || P.call(this.childNodes) }) }, siblings: function (t) { return m(this.map(function (t, e) { return O.call(h(e.parentNode), function (t) { return t !== e }) }), t) }, empty: function () { return this.each(function () { this.innerHTML = "" }) }, pluck: function (t) { return j.map(this, function (e) { return e[t] }) }, show: function () { return this.each(function () { var t, e, n; "none" == this.style.display && (this.style.display = ""), "none" == getComputedStyle(this, "").getPropertyValue("display") && (this.style.display = (t = this.nodeName, D[t] || (e = A.createElement(t), A.body.appendChild(e), n = getComputedStyle(e, "").getPropertyValue("display"), e.parentNode.removeChild(e), "none" == n && (n = "block"), D[t] = n), D[t])) }) }, replaceWith: function (t) { return this.before(t).remove() }, wrap: function (t) { var e = n(t); if (this[0] && !e) var r = j(t).get(0), i = r.parentNode || this.length > 1; return this.each(function (n) { j(this).wrapAll(e ? t.call(this, n) : i ? r.cloneNode(!0) : r) }) }, wrapAll: function (t) { if (this[0]) { j(this[0]).before(t = j(t)); for (var e; (e = t.children()).length;)t = e.first(); j(t).append(this) } return this }, wrapInner: function (t) { var e = n(t); return this.each(function (n) { var r = j(this), i = r.contents(), o = e ? t.call(this, n) : t; i.length ? i.wrapAll(o) : r.append(o) }) }, unwrap: function () { return this.parent().each(function () { j(this).replaceWith(j(this).children()) }), this }, clone: function () { return this.map(function () { return this.cloneNode(!0) }) }, hide: function () { return this.css("display", "none") }, toggle: function (t) { return this.each(function () { var e = j(this); (t === b ? "none" == e.css("display") : t) ? e.show() : e.hide() }) }, prev: function (t) { return j(this.pluck("previousElementSibling")).filter(t || "*") }, next: function (t) { return j(this.pluck("nextElementSibling")).filter(t || "*") }, html: function (t) { return 0 in arguments ? this.each(function (e) { var n = this.innerHTML; j(this).empty().append(v(this, t, e, n)) }) : 0 in this ? this[0].innerHTML : null }, text: function (t) { return 0 in arguments ? this.each(function (e) { var n = v(this, t, e, this.textContent); this.textContent = null == n ? "" : "" + n }) : 0 in this ? this.pluck("textContent").join("") : null }, attr: function (t, e) { var n; return "string" != typeof t || 1 in arguments ? this.each(function (n) { if (1 === this.nodeType) if (o(t)) for (E in t) g(this, E, t[E]); else g(this, t, v(this, e, n, this.getAttribute(t))) }) : 0 in this && 1 == this[0].nodeType && null != (n = this[0].getAttribute(t)) ? n : b }, removeAttr: function (t) { return this.each(function () { 1 === this.nodeType && t.split(" ").forEach(function (t) { g(this, t) }, this) }) }, prop: function (t, e) { return t = W[t] || t, 1 in arguments ? this.each(function (n) { this[t] = v(this, e, n, this[t]) }) : this[0] && this[0][t] }, removeProp: function (t) { return t = W[t] || t, this.each(function () { delete this[t] }) }, data: function (t, e) { var n = "data-" + t.replace(Z, "-$1").toLowerCase(), r = 1 in arguments ? this.attr(n, e) : this.attr(n); return null !== r ? x(r) : b }, val: function (t) { return 0 in arguments ? (null == t && (t = ""), this.each(function (e) { this.value = v(this, t, e, this.value) })) : this[0] && (this[0].multiple ? j(this[0]).find("option").filter(function () { return this.selected }).pluck("value") : this[0].value) }, offset: function (e) { if (e) return this.each(function (t) { var n = j(this), r = v(this, e, t, n.offset()), i = n.offsetParent().offset(), o = { top: r.top - i.top, left: r.left - i.left }; "static" == n.css("position") && (o.position = "relative"), n.css(o) }); if (!this.length) return null; if (A.documentElement !== this[0] && !j.contains(A.documentElement, this[0])) return { top: 0, left: 0 }; var n = this[0].getBoundingClientRect(); return { left: n.left + t.pageXOffset, top: n.top + t.pageYOffset, width: Math.round(n.width), height: Math.round(n.height) } }, css: function (t, n) { if (arguments.length < 2) { var r = this[0]; if ("string" == typeof t) { if (!r) return; return r.style[w(t)] || getComputedStyle(r, "").getPropertyValue(t) } if (Y(t)) { if (!r) return; var i = {}, o = getComputedStyle(r, ""); return j.each(t, function (t, e) { i[e] = r.style[w(e)] || o.getPropertyValue(e) }), i } } var a = ""; if ("string" == e(t)) n || 0 === n ? a = c(t) + ":" + f(t, n) : this.each(function () { this.style.removeProperty(c(t)) }); else for (E in t) t[E] || 0 === t[E] ? a += c(E) + ":" + f(E, t[E]) + ";" : this.each(function () { this.style.removeProperty(c(E)) }); return this.each(function () { this.style.cssText += ";" + a }) }, index: function (t) { return t ? this.indexOf(j(t)[0]) : this.parent().children().indexOf(this[0]) }, hasClass: function (t) { return !!t && C.some.call(this, function (t) { return this.test(y(t)) }, l(t)) }, addClass: function (t) { return t ? this.each(function (e) { if ("className" in this) { T = []; var n = y(this); v(this, t, e, n).split(/\s+/g).forEach(function (t) { j(this).hasClass(t) || T.push(t) }, this), T.length && y(this, n + (n ? " " : "") + T.join(" ")) } }) : this }, removeClass: function (t) { return this.each(function (e) { if ("className" in this) { if (t === b) return y(this, ""); T = y(this), v(this, t, e, T).split(/\s+/g).forEach(function (t) { T = T.replace(l(t), " ") }), y(this, T.trim()) } }) }, toggleClass: function (t, e) { return t ? this.each(function (n) { var r = j(this); v(this, t, n, y(this)).split(/\s+/g).forEach(function (t) { (e === b ? !r.hasClass(t) : e) ? r.addClass(t) : r.removeClass(t) }) }) : this }, scrollTop: function (t) { if (this.length) { var e = "scrollTop" in this[0]; return t === b ? e ? this[0].scrollTop : this[0].pageYOffset : this.each(e ? function () { this.scrollTop = t } : function () { this.scrollTo(this.scrollX, t) }) } }, scrollLeft: function (t) { if (this.length) { var e = "scrollLeft" in this[0]; return t === b ? e ? this[0].scrollLeft : this[0].pageXOffset : this.each(e ? function () { this.scrollLeft = t } : function () { this.scrollTo(t, this.scrollY) }) } }, position: function () { if (this.length) { var t = this[0], e = this.offsetParent(), n = this.offset(), r = R.test(e[0].nodeName) ? { top: 0, left: 0 } : e.offset(); return n.top -= parseFloat(j(t).css("margin-top")) || 0, n.left -= parseFloat(j(t).css("margin-left")) || 0, r.top += parseFloat(j(e[0]).css("border-top-width")) || 0, r.left += parseFloat(j(e[0]).css("border-left-width")) || 0, { top: n.top - r.top, left: n.left - r.left } } }, offsetParent: function () { return this.map(function () { for (var t = this.offsetParent || A.body; t && !R.test(t.nodeName) && "static" == j(t).css("position");)t = t.offsetParent; return t }) } }, j.fn.detach = j.fn.remove, ["width", "height"].forEach(function (t) { var e = t.replace(/./, function (t) { return t[0].toUpperCase() }); j.fn[t] = function (n) { var o, a = this[0]; return n === b ? r(a) ? a["inner" + e] : i(a) ? a.documentElement["scroll" + e] : (o = this.offset()) && o[t] : this.each(function (e) { (a = j(this)).css(t, v(this, n, e, a[t]())) }) } }), ["after", "prepend", "before", "append"].forEach(function (n, r) { var i = r % 2; j.fn[n] = function () { var n, o, a = j.map(arguments, function (t) { var r = []; return "array" == (n = e(t)) ? (t.forEach(function (t) { return t.nodeType !== b ? r.push(t) : j.zepto.isZ(t) ? r = r.concat(t.get()) : void (r = r.concat(X.fragment(t))) }), r) : "object" == n || null == t ? t : X.fragment(t) }), s = this.length > 1; return a.length < 1 ? this : this.each(function (e, n) { o = i ? n : n.parentNode, n = 0 == r ? n.nextSibling : 1 == r ? n.firstChild : 2 == r ? n : null; var u = j.contains(A.documentElement, o); a.forEach(function (e) { if (s) e = e.cloneNode(!0); else if (!o) return j(e).remove(); o.insertBefore(e, n), u && function t(e, n) { n(e); for (var r = 0, i = e.childNodes.length; i > r; r++)t(e.childNodes[r], n) }(e, function (e) { if (!(null == e.nodeName || "SCRIPT" !== e.nodeName.toUpperCase() || e.type && "text/javascript" !== e.type || e.src)) { var n = e.ownerDocument ? e.ownerDocument.defaultView : t; n.eval.call(n, e.innerHTML) } }) }) }) }, j.fn[i ? n + "To" : "insert" + (r ? "Before" : "After")] = function (t) { return j(t)[n](this), this } }), X.Z.prototype = p.prototype = j.fn, X.uniq = S, X.deserializeValue = x, j.zepto = X, j }(); return t.Zepto = e, void 0 === t.$ && (t.$ = e), function (e) { function n(t) { return t._zid || (t._zid = h++) } function r(t, e, r, o) { if ((e = i(e)).ns) var a = function (t) { return new RegExp("(?:^| )" + t.replace(" ", " .* ?") + "(?: |$)") }(e.ns); return (v[n(t)] || []).filter(function (t) { return t && (!e.e || t.e == e.e) && (!e.ns || a.test(t.ns)) && (!r || n(t.fn) === n(r)) && (!o || t.sel == o) }) } function i(t) { var e = ("" + t).split("."); return { e: e[0], ns: e.slice(1).sort().join(" ") } } function o(t, e) { return t.del && !y && t.e in x || !!e } function a(t) { return b[t] || y && x[t] || t } function s(t, r, s, u, l, h, p) { var d = n(t), m = v[d] || (v[d] = []); r.split(/\s/).forEach(function (n) { if ("ready" == n) return e(document).ready(s); var r = i(n); r.fn = s, r.sel = l, r.e in b && (s = function (t) { var n = t.relatedTarget; return !n || n !== this && !e.contains(this, n) ? r.fn.apply(this, arguments) : void 0 }), r.del = h; var d = h || s; r.proxy = function (e) { if (!(e = c(e)).isImmediatePropagationStopped()) { e.data = u; var n = d.apply(t, e._args == f ? [e] : [e].concat(e._args)); return !1 === n && (e.preventDefault(), e.stopPropagation()), n } }, r.i = m.length, m.push(r), "addEventListener" in t && t.addEventListener(a(r.e), r.proxy, o(r, p)) }) } function u(t, e, i, s, u) { var c = n(t); (e || "").split(/\s/).forEach(function (e) { r(t, e, i, s).forEach(function (e) { delete v[c][e.i], "removeEventListener" in t && t.removeEventListener(a(e.e), e.proxy, o(e, u)) }) }) } function c(t, n) { return (n || !t.isDefaultPrevented) && (n || (n = t), e.each(w, function (e, r) { var i = n[e]; t[e] = function () { return this[r] = E, i && i.apply(n, arguments) }, t[r] = j }), t.timeStamp || (t.timeStamp = Date.now()), (n.defaultPrevented !== f ? n.defaultPrevented : "returnValue" in n ? !1 === n.returnValue : n.getPreventDefault && n.getPreventDefault()) && (t.isDefaultPrevented = E)), t } function l(t) { var e, n = { originalEvent: t }; for (e in t) T.test(e) || t[e] === f || (n[e] = t[e]); return c(n, t) } var f, h = 1, p = Array.prototype.slice, d = e.isFunction, m = function (t) { return "string" == typeof t }, v = {}, g = {}, y = "onfocusin" in t, x = { focus: "focusin", blur: "focusout" }, b = { mouseenter: "mouseover", mouseleave: "mouseout" }; g.click = g.mousedown = g.mouseup = g.mousemove = "MouseEvents", e.event = { add: s, remove: u }, e.proxy = function (t, r) { var i = 2 in arguments && p.call(arguments, 2); if (d(t)) { var o = function () { return t.apply(r, i ? i.concat(p.call(arguments)) : arguments) }; return o._zid = n(t), o } if (m(r)) return i ? (i.unshift(t[r], t), e.proxy.apply(null, i)) : e.proxy(t[r], t); throw new TypeError("expected function") }, e.fn.bind = function (t, e, n) { return this.on(t, e, n) }, e.fn.unbind = function (t, e) { return this.off(t, e) }, e.fn.one = function (t, e, n, r) { return this.on(t, e, n, r, 1) }; var E = function () { return !0 }, j = function () { return !1 }, T = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/, w = { preventDefault: "isDefaultPrevented", stopImmediatePropagation: "isImmediatePropagationStopped", stopPropagation: "isPropagationStopped" }; e.fn.delegate = function (t, e, n) { return this.on(e, t, n) }, e.fn.undelegate = function (t, e, n) { return this.off(e, t, n) }, e.fn.live = function (t, n) { return e(document.body).delegate(this.selector, t, n), this }, e.fn.die = function (t, n) { return e(document.body).undelegate(this.selector, t, n), this }, e.fn.on = function (t, n, r, i, o) { var a, c, h = this; return t && !m(t) ? (e.each(t, function (t, e) { h.on(t, n, r, e, o) }), h) : (m(n) || d(i) || !1 === i || (i = r, r = n, n = f), (i === f || !1 === r) && (i = r, r = f), !1 === i && (i = j), h.each(function (f, h) { o && (a = function (t) { return u(h, t.type, i), i.apply(this, arguments) }), n && (c = function (t) { var r, o = e(t.target).closest(n, h).get(0); return o && o !== h ? (r = e.extend(l(t), { currentTarget: o, liveFired: h }), (a || i).apply(o, [r].concat(p.call(arguments, 1)))) : void 0 }), s(h, t, i, r, n, c || a) })) }, e.fn.off = function (t, n, r) { var i = this; return t && !m(t) ? (e.each(t, function (t, e) { i.off(t, n, e) }), i) : (m(n) || d(r) || !1 === r || (r = n, n = f), !1 === r && (r = j), i.each(function () { u(this, t, r, n) })) }, e.fn.trigger = function (t, n) { return (t = m(t) || e.isPlainObject(t) ? e.Event(t) : c(t))._args = n, this.each(function () { t.type in x && "function" == typeof this[t.type] ? this[t.type]() : "dispatchEvent" in this ? this.dispatchEvent(t) : e(this).triggerHandler(t, n) }) }, e.fn.triggerHandler = function (t, n) { var i, o; return this.each(function (a, s) { (i = l(m(t) ? e.Event(t) : t))._args = n, i.target = s, e.each(r(s, t.type || t), function (t, e) { return o = e.proxy(i), !i.isImmediatePropagationStopped() && void 0 }) }), o }, "focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function (t) { e.fn[t] = function (e) { return 0 in arguments ? this.bind(t, e) : this.trigger(t) } }), e.Event = function (t, e) { m(t) || (t = (e = t).type); var n = document.createEvent(g[t] || "Events"), r = !0; if (e) for (var i in e) "bubbles" == i ? r = !!e[i] : n[i] = e[i]; return n.initEvent(t, r, !0), c(n) } }(e), function (e) { function n(t, n, r) { var i = e.Event(n); return e(t).trigger(i, r), !i.isDefaultPrevented() } function r(t, e, r, i) { return t.global ? n(e || g, r, i) : void 0 } function i(t) { t.global && 0 == e.active++ && r(t, null, "ajaxStart") } function o(t) { t.global && !--e.active && r(t, null, "ajaxStop") } function a(t, e) { var n = e.context; return !1 !== e.beforeSend.call(n, t, e) && !1 !== r(e, n, "ajaxBeforeSend", [t, e]) && void r(e, n, "ajaxSend", [t, e]) } function s(t, e, n, i) { var o = n.context, a = "success"; n.success.call(o, t, a, e), i && i.resolveWith(o, [t, a, e]), r(n, o, "ajaxSuccess", [e, n, t]), c(a, e, n) } function u(t, e, n, i, o) { var a = i.context; i.error.call(a, n, e, t), o && o.rejectWith(a, [n, e, t]), r(i, a, "ajaxError", [n, i, t || e]), c(e, n, i) } function c(t, e, n) { var i = n.context; n.complete.call(i, e, t), r(n, i, "ajaxComplete", [e, n]), o(n) } function l() { } function f(t) { return t && (t = t.split(";", 2)[0]), t && (t == j ? "html" : t == E ? "json" : x.test(t) ? "script" : b.test(t) && "xml") || "text" } function h(t, e) { return "" == e ? t : (t + "&" + e).replace(/[&?]{1,2}/, "?") } function p(t, n, r, i) { return e.isFunction(n) && (i = r, r = n, n = void 0), e.isFunction(r) || (i = r, r = void 0), { url: t, data: n, success: r, dataType: i } } var d, m, v = +new Date, g = t.document, y = /
版本更新日期:2021年09月02日
版本生效日期:2021年09月02日
《有車以后用戶協議》
歡迎您使用有車以后App!
為了更好地為您提供服務,請您在開始使用有車以后及相關服務之前,務必認真閱讀并充分理解本協議,特別是涉及免除或者限制責任的條款、權利許可和信息使用的條款、同意開通和使用特殊單項服務的條款、法律適用和爭議解決條款等。其中,免除或者限制責任條款等重要內容將以加粗形式提示您注意,您應重點閱讀。如您未滿18周歲,請您在法定監護人陪同下仔細閱讀并充分理解本協議,并征得法定監護人的同意后使用有車以后及相關服務。
請仔細閱讀協議全文,您有權選擇同意或不同意本協議,如您不同意本協議,這將導致我們無法為您提供完整的產品和服務,您也可以選擇停止使用。如您自主選擇同意或使用有車以后及相關服務,則視為您已充分閱讀并理解本協議,并同意作為本協議的一方當事人接受本協議和相關規則(包括但不限于《隱私政策》)的約束。
目錄
一、有車以后App及相關服務
二、關于“賬號”
三、用戶個人信息保護
四、用戶行為規范
五、信息內容使用規范
六、違約處理
七、服務的變更、中斷和終止
八、廣告
九、知識產權
十、免責聲明
十一、關于單項服務與第三方服務的特殊約定
十二、未成年人使用條款
十三、其他
一、有車以后App及相關服務
有車以后App及相關服務(以下簡稱“該產品服務”或“服務”),系指廣州市有車以后信息科技有限公司及其關聯公司(以下簡稱“有車以后”或“公司”)通過合法擁有并運營的、標注名稱為“有車以后”的App應用程序向您提供的產品與服務,包括但不限于車型詢價交易、個性化推薦、選車看車、發布信息、互動交流、搜索查詢等核心功能及其他相關功能。《用戶協議》(以下或稱“協議”或“本協議”)是您與公司之間就您注冊、登錄、使用(以下統稱“使用”)相關服務所訂立的協議。
1. 您可以通過預裝、公司已授權的第三方下載等方式獲取。若您并非從公司或經公司授權的第三方獲取本軟件的,公司無法保證非官方版本的軟件應用能夠正常使用,您因此遭受的損失與公司無關。
2. 公司可能為不同的終端設備開發不同的應用程序軟件版本,您應當根據實際設備狀況獲取、下載、安裝合適的版本。如您不再使用該產品服務,您也可自行卸載相應的應用程序軟件。
3. 為更好的提升用戶體驗及服務,公司將不定期提供該產品服務的更新或改變(包括但不限于軟件修改、升級、功能強化、開發新服務、軟件替換等),您可根據需要自行選擇是否更新相應的版本。
4. 為保證該產品服務安全、提升用戶服務體驗,在該產品服務的部分或全部更新后,公司將在可行的情況下以妥當的方式(包括但不限于系統提示、公告等)提示您,您有權選擇接受更新后的版本;如您選擇不更新,部分功能將受到限制或不能正常使用。
5. 除非得到公司事先書面授權,您不得以任何形式對該產品服務進行包括但不限于改編、復制、傳播、垂直搜索、鏡像或交易等未經授權的訪問或使用。
6. 您理解,使用該產品服務需自行準備與軟件及相關服務有關的終端設備(如電腦、手機等),一旦您在終端設備中打開有車以后App,即視為您使用該產品服務。為充分實現有車以后App的全部功能,您可能需要將終端設備聯網,您理解由您承擔所需要的費用(如流量費、上網費等)。
7. 公司許可您一項個人的、不可轉讓的、非獨占地和非商業的合法使用該產品服務的權利。本協議未明示授權的其他一切權利仍由公司保留,您在行使該等權利前須另行獲得公司的書面許可,同時公司如未行使前述任何權利,并不構成對該權利的放棄。
8. 您無需注冊也可開始使用該產品服務,但部分功能或服務可能會受到影響。同時,您也理解,為使您更好地使用該產品服務,保障您的賬號安全,某些功能和/或某些單項服務項目(如帖子評論服務、現金提現等)將要求您按照國家相關法律法規的規定,提供真實的身份信息實名注冊并登錄后方可使用。
二、關于“賬號”
有車以后用戶賬號,適用在公司運營主體下的關聯App或小程序,包括但不限于:有車以后App、車小蜂App、有車以后+小程序,車小蜂小程序等。
1. 行為能力——在注冊賬號之前,您應當確認并承諾,您具備中華人民共和國法律規定的與您行為相適應的民事行為能力。
2. 登錄方式——您可以通過手機驗證碼注冊并登錄,或使用第三方賬號注冊登錄賬號。手機號、驗證碼(包括經授權的微信賬號等)是用戶用以登錄并使用服務的憑證。
3. 賬戶注冊——在注冊用戶賬戶時,您應當提供真實、有效的信息(包括但不限于聯系手機號、姓名、聯系地址等)。您理解并承諾,您所設置的賬號不得違反國家法律法規及公司的相關規則,您的賬號昵稱、頭像和簡介等注冊信息及其他個人信息中不得出現違法和不良信息,未經他人許可不得用他人名義(包括但不限于冒用他人姓名、名稱、字號、頭像等足以讓人引起混淆的方式)開設賬號,不得惡意注冊有車以后賬號(包括但不限于頻繁注冊、批量注冊賬號等行為)。您在賬號注冊及使用過程中需遵守相關法律法規,不得實施任何侵害國家利益、損害其他公民合法權益,有害社會道德風尚的行為。公司有權對您提交的信息進行審核。同時,您應當保證上述信息的持續有效性,一旦信息發生變化,您應當及時進行變更;否則您應承擔信息不真實、聯系方式無效導致的相關不利后果及損失,且有車以后保留終止向您提供服務的權利。
4. 賬號保管——您的賬號及其信息由您自行設置保管,您有責任維護個人賬號的安全性與保密性,并對您以注冊賬號名義所從事的活動承擔全部法律責任,包括但不限于您在相關服務中進行的任何數據修改、言論發表、款項支付等操作行為可能引起的一切法律責任。您應高度重視對賬號與密碼的保密,在任何情況下不向他人透露賬號及密碼。若發現他人未經許可使用您的賬號或發生其他任何安全漏洞問題時,您應當立即通知公司。您的賬號僅限于您本人使用,未經公司書面同意,禁止以任何形式贈與、借用、出租、轉讓、售賣或以其他方式許可他人使用該賬號。如果公司發現或者有合理理由認為使用者并非賬號初始注冊人,為保障賬號安全,公司有權立即暫停或終止向該注冊賬號提供服務,或注銷該賬號。由此造成的后果和損失,由您自行承擔。
5. 在丟失賬號或遺忘密碼時,您可遵照公司的申訴途徑及時申訴請求找回賬號或密碼。您理解并認可,公司的密碼找回機制僅需要識別申訴單上所填資料與系統記錄資料具有一致性,而無法識別申訴人是否系真正賬號有權使用者。公司特別提醒您應妥善保管您的賬號和密碼。當您使用完畢后,應安全退出。如因您保管不當等自身原因或其他不可抗因素導致遭受盜號或密碼丟失,您將自行承擔相應責任。
6. 您理解并同意,除您登錄、使用該產品服務外,您還可以用有車以后用戶賬號登錄使用公司及其關聯公司提供的其他軟件、服務;亦可用公司及其關聯公司提供的其他軟件上的注冊賬號登錄、使用該產品服務。您以有車以后賬號登錄并使用前述服務時,將受到前述服務的實際提供方的用戶協議及其他協議條款約束。
7. 您理解并同意,為了充分使用賬號資源,如您在注冊后未及時進行初次登錄使用或連續超過兩個月未登錄賬號使用等情形,公司有權收回您的賬號。
8. 您可以在我們的產品中直接申請注銷賬號,您注銷賬號后,我們將停止為您提供產品與/或服務,并根據您的要求,除法律法規另有規定外,我們將刪除您的個人信息。
三、用戶個人信息保護
公司與您一同致力于您個人信息(即能夠獨立或與其他信息結合后識別用戶身份的信息)的保護,保護用戶個人信息是公司的基本原則之一。
請您知悉,在使用該產品服務的過程中,您可能需要提供您的個人信息(包括但不限于姓名、電話號碼、位置信息),以便公司向您提供更好的服務和相應的技術支持。公司將運用加密技術、匿名化處理等其他與軟件產品服務相匹配的技術措施及其他安全措施保護您的個人信息,更多關于用戶個人信息保護和個人信息管理的內容,請參見《有車以后隱私政策》。
四、用戶行為規范
(一)用戶行為要求
您應當對您使用有車以后及相關服務的行為負責,除非法律允許或者經公司事先書面許可,您使用有車以后及相關服務不得具有下列行為:
1. 使用未經公司授權或許可的任何插件、外掛、系統或第三方工具對該產品服務的正常運行進行干擾、破壞、修改或施加其他影響。
2. 利用或針對有車以后及相關服務進行任何危害計算機網絡安全的行為,包括但不限于:
(1)非法侵入他人網絡、干擾他人網絡正常功能、竊取網絡數據等危害網絡安全的活動;
(2)提供專門用于從事侵入網絡、干擾網絡正常功能及防護措施、竊取網絡數據等危害網絡安全活動的程序、工具;
(3)明知他人從事危害網絡安全的活動的,為其提供技術支持、廣告推廣、支付結算等幫助;
(4)使用未經許可的數據或進入未經許可的服務器/賬號;
(5)未經允許進入公眾計算機網絡或者他人計算機系統并刪除、修改、增加存儲信息;
(6)未經許可,企圖探查、掃描、測試有車以后系統或網絡的弱點或其它實施破壞網絡安全的行為;
(7)企圖干涉、破壞有車以后系統或網站的正常運行,故意傳播惡意程序或病毒以及其他破壞干擾正常網絡信息服務的行為;
(8)偽造TCP/IP數據包名稱或部分名稱;
(9)對該產品服務進行反向工程、反向匯編、編譯或者以其他方式嘗試發現有車以后的源代碼;
(10)惡意注冊該產品服務的賬號,包括但不限于頻繁、批量注冊賬號;
(11)違反法律法規、本協議、公司的相關規則及侵犯他人合法權益的其他行為。
3. 在任何情況下,如果公司有理由認為您的任何行為違反或可能違反上述約定的,公司可獨立進行判斷并處理,且有權在不進行任何事先通知的情況下終止向您提供服務,并追究相關法律責任。
(二)信息內容規范
1. 您按規定完成實名認證后,可以以注冊賬號或有車以后合作平臺賬號登錄有車以后發布內容、跟帖評論等。
2. 公司致力使發布信息、跟帖評論成為文明、理性、友善、高質量的意見交流。在推動發布信息、互動交流、跟帖評論業務發展的同時,不斷加強相應的信息安全管理能力,完善發布信息、跟帖評論規則,切實履行社會責任,遵守國家法律法規,尊重公民合法權益,尊重社會公序良俗。
3. 您評論、發布、傳播的內容應自覺遵守憲法法律、法規、遵守公共秩序,尊重社會公德、社會主義制度、國家利益、公民合法權益、道德風尚和信息真實性等要求。您同意并承諾不制作、復制、發布、傳播法律、法規禁止的下列信息內容:
(1)反對憲法確定的基本原則的;
(2)危害國家安全,泄露國家秘密的;
(3)顛覆國家政權,推翻社會主義制度、煽動分裂國家、破壞國家統一的;
(4)損害國家榮譽和利益的;
(5)宣揚恐怖主義、極端主義的;
(6)宣揚民族仇恨、民族歧視,破壞民族團結的;
(7)煽動地域歧視、地域仇恨的;
(8)破壞國家宗教政策,宣揚邪教和迷信的;
(9)編造、散布謠言、虛假信息,擾亂經濟秩序和社會秩序、破壞社會穩定的;
(10)散布、傳播暴力、淫穢、色情、賭博、兇殺、恐怖或者教唆犯罪的;
(11)侵害未成年人合法權益或者損害未成年人身心健康的;
(12)未獲他人允許,偷拍、偷錄他人,侵害他人合法權利的;
(13)包含恐怖、暴力血腥、高危險性、危害表演者自身或他人身心健康內容的;
(14)危害網絡安全、利用網絡從事危害國家安全、榮譽和利益的;
(15)侮辱或者誹謗他人,侵害他人合法權益的;
(16)對他人進行暴力恐嚇、威脅,實施人肉搜索的;
(17)涉及他人隱私、個人信息或資料的;
(18)散布污言穢語,損害社會公序良俗的;
(19)侵犯他人隱私權、名譽權、肖像權、知識產權等合法權益內容的;
(20)散布商業廣告,或類似的商業招攬信息、過度營銷信息及垃圾信息;
(21)使用本網站常用語言文字以外的其他語言文字評論的;
(22)與所評論的信息毫無關系的;
(23)所發表的信息毫無意義的,或刻意使用字符組合以逃避技術審核的;
(24)其他違反法律法規、政策及公序良俗、干擾有車以后正常運營或侵犯其他用戶或第三方合法權益內容的其他信息。
(三)公司設立投訴、舉報機制
您可通過登錄客戶端的“用戶反饋”頁面向公司投訴、舉報各類違法違規行為、違法傳播活動、違法有害信息等內容,公司將在收到您的反饋后【15個工作日】內受理和處理您的投訴舉報,以共同營造風清氣正的網絡空間。
五、信息內容的使用規范
1. 未經公司書面許可,您不得自行或授權、允許、協助任何第三人對本協議有車以后及相關服務中信息內容進行如下行為:
(1)復制、讀取、采用有車以后及相關服務的信息內容,用于包括但不限于宣傳、增加閱讀量、瀏覽量等商業用途;
(2)擅自編輯、整理、編排有車以后及相關服務的信息內容后在有車以后及相關服務的源頁面以外的渠道進行展示;
(3)采用包括但不限于特殊標識、特殊代碼等任何形式的識別方法,自行或協助第三人對有車以后及相關服務的信息內容產生流量、閱讀量引導、轉移、劫持等不利影響;
(4)其他非法獲取或使用有車以后及相關服務的信息內容的行為。
2. 經公司書面許可后,您對產品服務的信息內容的分享、轉發等行為,還應符合以下規范:
(1)對抓取、統計、獲得的相關搜索熱詞、命中率、分類、搜索量、點擊率、閱讀量等相關數據,未經公司事先書面同意,不得將上述數據以任何方式公示、提供、泄露給任何第三人;
(2)不得對該產品服務的源網頁進行任何形式的任何改動,包括但不限于首頁鏈接等入口,也不得對其源頁面的展示進行任何形式的遮擋、插入、彈窗等妨礙;
(3)應當采取安全、有效、嚴密的措施,防止信息內容被第三方通過包括但不限于“蜘蛛(spider)”程序等任何形式進行非法獲取;
(4)不得把相關數據內容用于公司書面許可范圍之外的目的,進行任何形式的銷售和商業使用,或向第三方泄露、提供或允許第三方為任何方式的使用;
(5)向任何第三人分享、轉發、復制有車以后及相關服務信息內容的行為,應當遵守公司為此制定的其他規范和標準。
六、違約處理
1. 針對您違反本協議或其他服務條款的行為,公司有權獨立判斷并視情況采取預先警示、拒絕發布、立即停止傳輸信息、刪除跟帖、短期禁止發言、限制賬號部分或者全部功能直至永久關閉賬號等措施。公司有權公告處理結果,且有權根據實際情況決定是否恢復相關賬號的使用。對涉嫌違反法律法規、涉嫌違法犯罪的行為將保存有關記錄,并依法向有關主管部門報告、配合有關主管部門調查。
2. 因您違反本協議或其他服務條款規定,引起第三方投訴或訴訟索賠的,您應當自行處理并承擔全部可能由此引起的法律責任。因您的違法、侵權或違約等行為導致公司及其關聯公司向任何第三方賠償或遭受國家機關處罰的,您還應足額賠償公司及其關聯公司因此遭受的全部損失。
3. 公司尊重并保護用戶及他人的知識產權、名譽權、姓名權、隱私權等合法權益。您保證,在使用有車以后及相關服務時上傳的文字、圖片、視頻、音頻、鏈接等不侵犯任何第三方的知識產權、名譽權、姓名權、隱私權等權利及合法權益。否則,公司有權在收到權利方或者相關方通知的情況下移除該涉嫌侵權內容。針對第三方提出的全部權利主張,您應自行處理并承擔全部可能由此引起的法律責任;如因您的侵權行為導致公司及其關聯公司遭受損失的(包括經濟、商譽等損失),您還應足額賠償公司及其關聯公司遭受的全部損失。
七、服務的變更、中斷和終止
1. 您理解并同意,公司提供的該產品服務是按照現有技術和條件所能達到的現狀提供的。公司會盡最大努力向您提供服務,確保服務的連貫性和安全性。您理解,公司不能隨時預見和防范技術以及其他風險,包括但不限于不可抗力、病毒、木馬、黑客攻擊、系統不穩定、第三方服務瑕疵及其他各種安全問題的侵擾等原因可能導致的服務中斷、數據丟失以及其他的損失和風險。
2. 您理解并同意,公司為了服務整體運營的需要,有權在公告通知后修改、中斷、中止或終止該產品服務,而無須向您負責或承擔任何賠償責任。
八、廣告
1. 您理解并同意,在使用該產品服務過程中公司可能會向您推送具有相關性的信息、廣告發布或品牌推廣服務,且公司有權在該產品服務中展示相關和/或第三方供應商、合作伙伴的商業廣告、推廣或信息(包括商業或非商業信息)。
2. 在使用該產品服務時,公司可能會基于偏好、興趣等方面向您推送程序化廣告,如有上述推送發生時,您可以在界面中選擇關閉程序化廣告推薦,如果關閉,您看到的廣告數量將保持不變,但廣告的相關性會降低。
3. 公司依照法律規定履行廣告及推廣相關義務,您應當自行判斷該廣告或推廣信息的真實性和可靠性并為自己的判斷行為負責。除法律法規明確規定外,您因該廣告或推廣信息進行的購買、交易或因前述內容遭受的損害或損失由您自行承擔,公司不予承擔責任。
九、知識產權
1. 公司在該產品服務中提供的內容(包括但不限于軟件、技術、程序、網頁、文字、圖片、圖像、音頻、視頻、圖表、版面設計、電子文檔等)的知識產權屬于公司或相關權利人所有。公司提供本服務時所依托的軟件的著作權、專利權及其他知識產權均歸公司所有。未經公司許可,任何人不得擅自使用(包括但不限于通過任何機器人、蜘蛛等程序或設備監視、復制、傳播、展示、鏡像、上載、下載)有車以后及相關服務中的內容。
2. 您理解并同意,在使用該產品服務時發布上傳的文字、圖片、視頻、音頻等均由您原創或已獲合法授權。您通過有車以后上傳、發布的任何內容的知識產權歸屬您或原始著作權人所有。
3. 您知悉、理解并同意,為持續改善并為您提供更好的服務,您通過該產品服務發布、傳輸或傳播的內容(包括但不限于文字、圖片、圖像、音頻、視頻和/或音頻中的音樂、聲音、對話等),授權公司及其關聯公司控制公司、繼承公司一項全球范圍內、免費、非獨家、可再許可(通過多層次)的權利(包括但不限于復制權、信息網絡傳播權、改編權、匯編權、修改權、翻譯權、制作衍生品、表演和展示等權利),使用范圍包括但不限于在當前或其他網站、應用程序、產品或終端設備等。您在此確認并同意,上述權利的授予包括在內容、有車以后公司和/或公司品牌有關的任何宣傳、推廣、廣告和/或相關營銷中使用和以其他方式開發內容(全部或部分)的權利和許可。為避免疑惑,您同意,上述權利的授權包括許可使用、復制、展示、傳播您擁有或被許可使用并植入內容中的個人形象、肖像、姓名、商標、服務標志、品牌、名稱、標識、公司標記及其他物料、素材等。
4. 您確認并同意授權公司以公司自己的名義或委托專業第三方對侵犯您上傳發布的享有知識產權的內容進行代維權,維權形式包括但不限于:監測侵權行為、發送維權函、調解、和解等,公司有權對維權事宜做出決策并獨立實施。
5. 有車以后為服務運營提供技術支持,并對相關服務的開發和運營等過程中產生的所有軟件、系統、數據和信息等享有法律法規允許范圍內的全部權利。
6. 請您在任何情況下都不要私自使用公司的包括但不限于「有車以后」、「車小蜂」等在內的任何商標、服務標記、商號、域名、網站名稱或其他顯著品牌特征等(以下統稱為“標識”)。未經公司事先書面同意,您不得將本條款前述標識以單獨或結合任何方式展示、使用或申請注冊商標、進行域名注冊等,也不得實施向他人明示或暗示有權展示、使用、或其他有權處理該些標識的行為。由于您違反本協議使用公司上述商標、標識等給公司或他人造成損失的,由您承擔全部法律責任。
十、免責聲明
1. 您理解并同意,該產品服務可能會受多種因素的影響或干擾,公司不保證(包括但不限于):
(1)公司完全適合用戶的使用要求;
(2)公司不受干擾,及時、安全、可靠或不出現錯誤;您經由公司取得的任何軟件、服務或其他材料符合用戶的期望;
(3)軟件中任何錯誤都將能得到更正。
2. 對于涉嫌借款或其他涉財產的網絡信息、賬戶密碼、廣告或推廣等信息的,請您謹慎對待并自行進行判斷,基于前述原因您因此遭受的利潤、商業信譽、資料損失或其他有形或無形損失,公司不承擔任何直接、間接、附帶、特別、衍生性或懲罰性的賠償責任。
3. 您理解并同意,在使用該產品服務過程中,可能遇到不可抗力等因素(不可抗力是指不能預見、不能克服并不能避免的客觀事件),包括但不限于政府行為、自然災害、網絡原因、黑客攻擊、戰爭或任何其它類似事件。出現不可抗力情況時,公司將努力在第一時間及時修復,但因不可抗力造成的損失,公司不承擔責任。
4. 公司依據本協議約定獲得處理違法違規內容的權利,該權利不構成公司的義務或承諾,公司不能保證及時發現違法行為或進行相應處理。
5. 您理解并同意,關于該產品服務,公司不提供任何種類的明示或暗示擔保或條件,包括但不限于商業適售性、特定用途適用性等。您對有車以后及相關服務的使用行為必須自行承擔相應風險。
6. 您理解并同意,本協議是在保障遵守國家法律法規、維護公序良俗,保護他人合法權益,公司在能力范圍內盡最大的努力按照相關法律法規進行判斷,但并不保證公司判斷完全與司法機關、行政機關的判斷一致,如因此產生的后果您已經理解并同意自行承擔。
7. 在任何情況下,公司均不對任何間接性、后果性、懲罰性、偶然性、特殊性或刑罰性的損害,包括因您使用該產品服務而遭受的利潤損失,承擔責任。公司對您承擔的全部責任,無論因何原因或何種行為方式,始終不超過您在成為有車以后用戶期間因使用有車以后及相關服務而支付給公司的費用(如有)。
十一、關于單項服務與第三方服務的特殊約定
1. 該產品服務中包含公司以各種合法方式獲取的信息或信息內容鏈接,同時也包括公司和/或其關聯方合法運營的其他單項服務。您可以在我們的服務中使用上述單項服務。某些單項服務可能需要您同時接受就此特別制訂的協議或者其他約束您與該單項服務提供者之間的規則,必要時在您計劃使用前述單向服務時以醒目的方式向您提供這些協議、規則,供您查閱與同意。一旦您授權同意并開始使用上述服務,則視為您理解并接受有關單項服務的相關協議、規則的約束。如未標明使用期限、或未標明使用期限為“永久”、“無限期”或“無限制”的,則這些產品或服務的使用期限為自用戶開始使用該產品或服務至該產品或服務在有車以后中下線之日為止。
2. 如您在該產品服務中使用第三方提供的軟件及相關服務時,除遵守本協議及產品相關規則外,還可能需要同意并遵守第三方的協議、隱私政策及相關規則。如因第三方軟件及相關服務產生的爭議、損失或損害,由您與第三方自行解決,公司并不就此而對您或任何第三方承擔任何責任。
十二、未成年人使用條款
1. 若用戶是未滿18周歲的未成年人,應在監護人監護、指導并獲得監護人同意情況下認真閱讀本協議后,方可使用有車以后及相關服務。
2. 公司重視對未成年人個人信息的保護,未成年用戶在填寫個人信息時,請加強個人保護意識并謹慎對待,并在監護人指導時正確使用有車以后及相關服務。
3. 未成年用戶理解如因您違反法律法規、本協議內容,則您及您的監護人應依照法律規定承擔因此而可能引起的全部法律責任。
4. 未成年人用戶特別提示:
(1)青少年使用有車以后及相關服務應該在其監護人的監督指導下,在合理范圍內正確學習使用網絡,避免沉迷虛擬的網絡空間,養成良好上網習慣。
(2)青少年用戶必須遵守《全國青少年網絡文明公約》:
要善于網上學習,不瀏覽不良信息;
要誠實友好交流,不侮辱欺詐他人;
要增強自護意識,不隨意約會網友;
要維護網絡安全,不破壞網絡秩序;
要有益身心健康,不沉溺虛擬時空。
5. 為更好的保護未成年人隱私權益,公司提醒用戶慎重發布包含未成年人素材的內容,一經發布,即視為用戶同意該產品服務展示未成年人的信息、肖像、聲音等,且允許公司依據本協議使用、處理該等與未成年人相關的內容。
十三、其他
1. 本協議的成立、生效、履行、解釋及爭議的解決均應適用中華人民共和國大陸地區法律。若本協議之任何規定因與中華人民共和國大陸地區的法律抵觸而無效或不可執行,則這些條款將盡可能按照接近本協議原條文意旨重新解析,且本協議其它規定仍應具有完整的效力及效果。
2. 本協議的簽訂地為中華人民共和國北京市海珠區。若您因本協議與公司發生任何爭議,雙方應盡量友好協商解決;如協商不成的,您同意應將相關爭議提交至本協議簽訂地的人民法院訴訟解決。
3. 為給您提供更好的服務或國家法律法規、政策調整,該產品服務將不時更新與變化,我們會適時對本協議進行修訂,這些修訂構成本協議的一部分。本協議更新后,我們會在應用程序中發出更新版本,并在更新后的條款生效前通過公告或其他適當的方式提醒您更新的內容,以便您及時了解本協議的最新版本,您也可以在注冊登錄頁面或“系統設置”頁面查閱最新版本的協議條款。如您對修改后的協議條款存有異議的,請立即停止登錄或使用該產品服務。若您繼續登錄或使用該產品服務,即視為您認可并接受修改后的協議條款。
4. 本協議中的標題僅為方便及閱讀而設,并不影響本協議中任何規定的含義或解釋。
5. 您和公司均是獨立的主體,在任何情況下本協議不構成公司對用戶的任何形式的明示或暗示擔保或條件,雙方之間亦不構成代理、合伙、合營或雇傭關系。
主站蜘蛛池模板:
亚洲视频在线观看|
久久精品亚洲中文字幕无码麻豆
|
成人片黄网站色大片免费|
色一情一乱一伦一区二区三区|
日韩精品无码一区二区三区不卡|
丝袜老师办公室里做好紧好爽|
少妇人妻精品一区二区三区
|
日日摸日日碰人妻无码|
中文亚洲av片在线观看不卡|
免费人成在线观看视频播放|
日韩aⅴ人妻无码一区二区
|
少妇三级全黄|
狠狠色婷婷久久一区二区三区|
丰满少妇弄高潮了www|
亚洲欧洲中文日韩久久av乱码|
四虎成人精品永久在线视频|
影音先锋人妻啪啪av资源网站|
扒开腿狂躁女人爽出白浆|
另类老妇奶性生bbwbbw|
国产欧美精品一区二区三区四区|
av人摸人人人澡人人超碰妓女|
无码乱肉视频免费大全合集|
护士脱了内裤让我爽了一夜视频|
亚洲av色香蕉一区二区三区
|
最近的中文字幕在线看视频|
国产女人高潮叫床视频|
女人张开腿让男桶喷水高潮|
少妇粉嫩小泬喷水视频www|
青青草原综合久久大伊人精品|
久久人妻av中文字幕|
欧美与黑人午夜性猛交久久久|
久久精品国产一区二区电影|
无码aⅴ在线观看|
国产成人av一区二区三区在线观看
|
亚洲乱色伦图片区小说|
98视频精品全部国产|
国产特级毛片aaaaaa高清|
小鲜肉自慰网站|
国产美女在线精品免费观看|
福利cosplayh裸体の福利|
亚洲av无码不卡一区二区三区|